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

