Giáo trình Lập trình C cho họ vi điều khiển 8051 - Chương 1: Ngôn ngữ C cho họ vi điều khiển 8051
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 #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 2 of 6 2.2.Các loại biến trong C: Dạng biến Số Bit Số Byte Miền giá trị char 8 1 -128 đến +127 unsigned char 8 1 0 đến 255 short 16 2 -32,768 đến +32,767 unsigned short 16 2 0 đến 65,535 int 16 2 -32,768 đến +32,767 unsigned int 16 2 0 đến 65,535 long 32 4 -2,147,483,648 đến+2,147,483,647 unsigned long 32 4 0 đến 4,294,697,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ạng biến Số Bit Số Byte Miền giá trị bit 1 0 0 ; 1 sbit 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 C có cấ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 hoặc 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 “,” Ví 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: = VD: x=y; // x phải là biến y có thể là biến hoặc 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. Ví 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} Việc này giúp lập trình dễ sửa lỗi hơn
File đính kèm:
- Giáo trình Lập trình C cho họ vi điều khiển 8051 - Chương 1 Ngôn ngữ C cho họ vi điều khiển 8051.pdf