GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

6 675 15
GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051

Đang tải... (xem toàn văn)

Thông tin tài liệu

1.1.C ấ u trúc m ộ t ch ư ơ ng trình: //Đính kèm các file #include #include //Khai báo bi ế n toàn c ụ c unsigned char x,y; int z; long n=0; //Khai báo và đ ị nh ngh ĩ a các hàm void Hàm1(void) { …//Các câu l ệ nh } void Hàm2(unsigned char x) { …//Các câu l ệ nh } //Hàm chính b ắ t bu ộ c ch ươ ng trình nào c ũ ng ph ả i có void main(void) { …//Các câu l ệ nh } Các câu l ệ nh trong hàm chính có th ể có l ờ i g ọ i các hàm đ ã khai báo ở trên ho ặ c không Khi có l ờ i g ọ i hàm nào thì ch ươ ng trình nh ả y đ ế n hàm đ ó th ự c hi ệ n hàm đ ó xong con tr ỏ l ạ i quay v ề ch ươ ng trình chính(hàm main) th ự c hi ệ n ti ế p các hàm ho ặ c câu l ệ nh. Các câu l ệ nh trong C k ế t thúc b ằ ng d ấ u “;” Các l ờ i gi ả i thích đ ượ c đ ặ t trong d ấ u: M ở đ ầ u b ằ ng “/*” k ế t thúc b ằ ng “*/” N ế u l ờ i gi ả i thích trên 1 dòng thì có th ể dùng d ấ u: “//” Khi l ậ p trình nên gi ả i thích các câu l ệ nh kh ố i l ệ nh làm gì đ ể v ề sau khi ch ươ ng trình l ớ n d ễ s ử a l ỗ i

ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051 Biên soạn: Nguyễn Bá Thuận Page 1 of 6 CHƯƠNG 1: NGÔN NGỮ C CHO HỌ VI ĐIỀU KHIỂN 8051 1.1.C ấ u trúc m ộ t ch ư ơ ng trình: //Đính kèm các file #include <file.h> #include <file.c> //Khai báo bi ế n toàn cc unsigned char x,y; int z; long n=0; //Khai báo và đ ị nh ngh ĩ a các hàm void Hàm1(void) { …//Các câu l ệ nh } void Hàm2(unsigned char x) { …//Các câu l ệ nh } //Hàm chính b ắ t bu ộ c ch ươ ng trình nào c ũ ng ph ả i có void main(void) { …//Các câu l ệ nh } Các câu l ệ nh trong hàm chính có th ể có l ờ i g ọ i các hàm đ ã khai báo ở trên hoc không Khi có l ờ i g ọ i hàm nào thì ch ươ ng trình nh ả y đ ế n hàm đ ó th ự c hi ệ n hàm đ ó xong con tr ỏ l ạ i quay v ề ch ươ ng trình chính(hàm main) th ự c hi ệ n ti ế p các hàm hoc câu l ệ nh. Các câu l ệ nh trong C k ế t thúc b ằ ng d ấ u “;” Các l ờ i gi ả i thích đ ượ c đ ặ t trong d ấ u: M ở đ ầ u b ằ ng “/*” k ế t thúc b ằ ng “*/” N ế u l ờ i gi ả i thích trên 1 dòng thì có th ể dùng d ấ u: “//” Khi l ậ p trình nên gi ả i thích các câu l ệ nh kh ố i l ệ nh làm gì đ ể v ề sau khi ch ươ ng trình l ớ n d ễ s ử a l ỗ i. ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051 Biên soạn: Nguyễn Bá Thuận Page 2 of 6 2.2.Các lo ạ i bi ế n trong C: D ạ n g b i ế n S ố B it S ố B y t e M i ề n g i á t r ị c h a r 8 1 - 128 đ ế n + 127 un s i g n e d c h ar 8 1 0 đ ế n 255 s h o r t 16 2 - 32 , 768 đ ế n + 3 2 , 767 un s i g n e d s h o r t 16 2 0 đ ế n 65 , 535 i n t 16 2 -32,768 đ ế n +32,767 un s i g n e d i n t 16 2 0 đ ế n 65 , 535 long 32 4 -2,147,483,648 đ ế n+2,147,483,647 un s i g n e d l o n g 32 4 0 đ ế n 4 , 2 94 , 69 7 , 295 Khai báo bi ế n C ấ u trúc : Ki ể u bi ế n Tên bi ế n VD: unsigned char x; Khi khai báo bi ế n có th ể gán luôn cho bi ế n giá tr ị ban đ ầ u. VD : Thay vì: unsigned char x; x=0; Ta ch ỉ c ầ n : unsigned char x=0; Có th ể khai báo nhi ề u bi ế n cùng m ộ t ki ể u m ộ t lúc VD: unsigned int x,y,z; Ngoài ra đ ể dùng cho vi đ i ề u khi ể n trình d ị ch chuyên d ụ ng còn h ỗ tr ợ các lo ạ i bi ế n sau: D ạ n g b i ế n S ố B i t S ố B y t e M i ề n g i á t r ị b it 1 0 0 ; 1 s b it 1 0 0 ; 1 sfr 8 1 0 đ ế n 255 sf16 16 2 0 đ ế n 65,535 Ngoài ra ,chúng ta có th ể đ ị nh nghĩa bi ế n ki ể u bít hay ki ể u SFR (special function register) Bit Kiemtra; Sfr P10=0x90; VD: Bit Kiemtra; Sfr P10=0x90; ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051 Biên soạn: Nguyễn Bá Thuận Page 3 of 6 Các SFR không c ầ n ph ả i h ọ c thu ộ c ch ỉ c ầ n bi ế t, và chúng đ ượ c khai báo trong th ư vi ệ n AT89X51.H và AT89X52.H 2.3.Hàm trong C: Hàm trong Cc ấ u trúc nh ư sau Có 2 lo ạ i hàm Hàm tr ả l ạ i giá tr ị : C ấ u trúc: Ki ể u giá tr ị hàm tr ả l ạ ii Tên hàm (Bi ế n truy ề n vào hàm) { // Các l ệ nh x ử lý ở đ ây } VD : unsigned char Cong(unsigned char x, unsigned char y) { // Các l ệ nh x ử lý ở đ ây } Hàm không tr ả l ạ i giá tr ị C ấ u trúc: void Tên hàm (Bi ế n truy ề n vào hàm) { // Các câu l ệ nh x ử lý ở đ ây } VD: void Cong(unsigned char x, unsigned char y) { // Các câu l ệ nh x ử lý ở đ ây } Hàm có th ể truy ề n vào bi ế n hoc không VD Hàm không có bi ế n truy ề n vào: unsigned char Tênhàm(void) { // Các câu l ệ nh x ử lí ở đ ây } ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051 Biên soạn: Nguyễn Bá Thuận Page 4 of 6 Hàm có bi ế n truy ề n vào: void Tênhàm(unsigned char x) { // Các câu l ệ nh x ử lí ở đ ây } S ố bi ế n truy ề n vào tùy ý(mi ễ n đủ b ộ nh ớ ), ng ă n cách b ở i d ấ u “,” d ụ : Void TênHàm(unsigned char x, unsigned char y, unsigned char z) { // Các câu l ệ nh x ử lí ở đ ây } Ngoài ra riêng cho vi đ i ề u khi ể n ph ầ n ph ề m Keil C còn có m ộ t lo ạ i hàm đ ó là hàm ng ắ t: C ấ u trúc: Void Tênhàm(void) interrupt ngu ồ nng ắ t using b ă ngthanhghi { } Hàm ng ắ t không đ ượ c phép tr ả l ạ i giá tr ị hay truy ề n tham bi ế n vào hàm. Tên hàm b ấ t kì Interrupt là t ừ khóa ch ỉ hàm ng ắ t Ngu ồ n ng ắ t t ừ 0 t ớ i 5 theo b ả ng vector ng ắ t Interrupt Flag Vector Address System Reset RST 0000H External 0 IE 0 0003H Timer 0 TF 0 000BH External 1 IE 1 0013H Timer 1 TF 1 001BH Serial Port R1 or T1 0023H Timer 2 TF2 or EXF2 002BH Không tính ng ắ t reset h ệ th ố ng b ắ t đ ầ u đ ế m t ừ ng ắ t ngoài 0 B ă ng thanh ghi trên ram ch ọ n t ừ 0 đ ế n 3 ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051 Biên soạn: Nguyễn Bá Thuận Page 5 of 6 2.4.Các toán t ử c ơ b ả n: Phép gán : = V D : x = y; // x p h ả i l à bi ế n y có th ể là bi ế n hoc giá tr ị nh ư ng ph ả i phù h ợ p ki ể u Phép c ộ ng: + Phép tr ừ : - Phép nhân: * Phép chia: / Các toán t ử logic: B ằ ng : == And: && Or: || Not: ! D ị ch trái: << D ị ch Ph ả i: >> 2.5.Các c ấ u trúc l ệ nh r ẽ nhánh, ki ể m tra th ư ờ ng dùng: Câu l ệ nh r ẽ nhánh if: C ấ u trúc: if (Đi ề uki ệ n) { // Các câu l ệ nh x ử lí } Gi ả i thích: N ế u Đi ề uki ệ n đ úng thì x ử lí các câu l ệ nh bên trong còn sai thì nh ả y qua Câu l ệ nh l ự a ch ọ n switch: C ấ u trúc: switch(Bi ế n) { case giatr ị 1: { // Các câu l ệ nh break; } case giatr ị 2: { // Các câu l ệ nh break; } case giatr ị 3: { // Các câu l ệ nh break; } … case giatr ị n: { // Các câu l ệ nh break; } } Giải thích: tùy vào biến có giatri1 thì thực hiện các câu lệnh sau đó tương ứng rồi thoát khỏi cấu trúc nhờ lệnh break. Câu l ệ nh vòng l ặ p xác đ ị nh for: C ấ u trúc: for( n=m; n<l; n++) {// Các câu l ệ nh x ử lí } Gi ả i thích: Trong đ ó m,l là giá tr ị (m>l), còn n là bi ế n ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 8051 Biên soạn: Nguyễn Bá Thuận Page 6 of 6 Th ự c hi ệ n l ặ p các câu l ệ nh (l-m) l ầ n Câu l ệ nh vòng l ặ p không xác đ ị nh while: C ấ u trúc: While( Đi ề u ki ệ n) { //Các câu l ệ nh } Gi ả i thích: Th ự c hi ệ n l ặ p các câu l ệ nh khi đ i ề u ki ệ n đ úng, n ế u câu l ệ nh sai thi thoát kh ỏ i vòng l ặ p 2.6. B ộ ti ề n x ử lý: #define : Dùng đ ể đ ị nh nghĩa. d ụ : #define dung 1 #define sai 0 có nghĩa là dung có giá tr ị b ằ ng 1. Trong ch ươ ng trình có th ể có đ o ạ n code nh ư sau: bit kiemtra if (bit==dung) { // Các câu l ệ nh} if (bit==sai) { // Các câu l ệ nh} Vic này giúp l ậ p trình d ễ s ử a l ỗ i h ơ n . ĐẠI H C L C HỒNG GIÁO TRÌNH LẬP TRÌNH C CHO HỌ VI ĐIỀU KHIỂN 80 51 Biên soạn: Nguyễn Bá Thuận Page 1 of 6 CHƯƠNG 1: NGÔN NGỮ C CHO HỌ VI ĐIỀU KHIỂN 80 51 1. 1 .C ấ u tr c m ộ t ch ư ơ ng. l ự a ch ọ n switch: C ấ u tr c: switch(Bi ế n) { case giatr ị 1: { // C c c u l ệ nh break; } case giatr ị 2: { // C c c u l ệ nh break; } case . main) th ự c hi ệ n ti ế p c c hàm ho ặ c c u l ệ nh. C c c u l ệ nh trong C k ế t th c b ằ ng d ấ u “;” C c l ờ i gi ả i thích đ ượ c đ ặ t trong

Ngày đăng: 10/05/2014, 11:15

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan