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.

pdf6 trang | Chuyên mục: C/C++ | Chia sẻ: dkS00TYs | Lượt xem: 3325 | Lượt tải: 1download
Tóm tắt nội dung 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, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trê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 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:

  • pdfGiá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