Tải bản đầy đủ (.pdf) (65 trang)

Lập trình cho vi điều khiển

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.41 MB, 65 trang )

Chương 4: Lập trình cho hệ
vi điều khiển
Nội dung
4.1 Cơ bản về lập trình C cho VĐK
4.2 Các lệnh rẽ nhánh và vòng lặp
4.3 Sử dụng con trỏ và mảng trong C
4.4 Các hàm và chương trình con
4.5 Chèn Assembly code trong C
4.6 Mô hình bộ nhớ Keil C51
4.7 Điều khiển ngoại vi
–Timer
–Cổng nối tiếp
–Ngắt
Nội dung
4.1 Cơ bản về lập trình C cho VĐK
4.2 Các lệnh rẽ nhánh và vòng lặp
4.3 Sử dụng con trỏ và mảng trong C
4.4 Các hàm và chương trình con
4.5 Chèn Assembly code trong C
4.6 Mô hình bộ nhớ Keil C51
4.7 Điều khiển ngoại vi
–Timer
–Cổng nối tiếp
–Ngắt
4.1 Giới thiệu
• C là ngôn ngữ gần ngôn ngữ Assembly nhất trong tất cả
các ngôn ngữ cấp cao
– Lệnh tính toán trên bit
– Con trỏ (định địa chỉ gián tiếp)
• Phần lớn các VĐK đều có C compiler
• Việc phát triển các ứng dụng dùng C sẽ nhanh chóng và


thuận lợi hơn Assembly
• C là ngôn ngữ lập trình có cấu trúc (không phải là
hướng đối tượng)
• Mỗi tác vụ có thể đóng gói trong một hàm
• Chương trình chính được đóng gói trong hàm main
Cấu trúc một chương trình trong C
• Các câu lệnh trong C kết
thúc bằng dấu “;”
• Phân biệt chữ hoa và chữ
thường;
• Khi viết chương trình cần
viết chú thích;
Các loại biến trong C
Ngoài ra Keil C còn
hỗ trợ các loại biến
để truy xuất các
thanh ghi có chức
năng đặc biệt
Các biến mở rộng trong Keil C
Các loại biến trong C
• Khai báo biến:
– Cú pháp kiểu_dữ_liệu Vùng_nhớ tên_biến
– Ví dụ: unsigned char data x;
unsigned int x,y,z,t;
• Vùng nhớ: chỉ ra vùng nhớ sử dụng trong chương trình, gồm CODE,
DATA, DATAB, IDATA, PDATA, XDATA. Khi không khai báo vùng nhớ
thì Keil C mặc định là vùng DATA

CODE: bộ nhớ mã nguồn chương trình
DATA: bộ nhớ dữ liệu 128byte thấp trong RAM

DATAB: bộ nhớ dữ liệu có thể địa chỉ bit, trong DATA
IDATA: 128byte cao (chỉ có ở 1 số VĐK)
PDATA: bộ nhớ ngoài 256byte, truy cập bởi địa chỉ trên P0
XDATA: bộ nhớ dữ liệu ngoài, dung lượng đến 64KB, truy cập bởi địa
chỉ đặt trên P0 và P2
Các loại biến trong C
• Định nghĩa lại kiểu dữ liệu:
– Cú pháp: typedef kiểu_dữ_liệu tên_biến;
tên_biến sau đó được dùng như một kiểu dữ liệu mới và
có thể dùng để khai báo các biến khác
– Ví dụ: typedef int m5[5];
Dùng tên m5 khai báo 2 biến a, b có kiểu dữ liệu là mảng 1
chiều 5 phần tử:
m5 a,b;
• Chú ý:
– bit: dùng để khai báo các biến có giá trị 0/1, hay các biến
logic trên vùng RAM của VĐK. Khi khai báo Keil C mặc định
là vùng BDATA
– sbit, sfr,sfr16: dùng định nghĩa cho các thanh ghi có chức
năng hoặc cổng trên vđk dùng để truy nhập các đoạn dữ
liệu 1bit, 8bit,16bit
Các loại biến trong C
• Mảng:
– Cú pháp: tên_kiểu vùng_nhớ tên_mảng[số_phẩn
tử_mảng]
Khi bỏ trống số phần tử mảng ta sẽ có số phần tử bất
kỳ
– Ví dụ: unsigned int data a[5],b[2] [3];
Khai báo mảng a một chiều 5 phần tử; mảng b là
mảng hai chiều, tổng số 6 phần tử

– Chú ý: Chỉ số mảng bắt đầu từ 0, mảng có bao nhiêu
chiều phải cung cấp đầy đủ bấy nhiêu chỉ số: VD mảng
b*0+ *1+ là đúng; khi viết b*0+ là sai

Các loại biến trong C
• Con trỏ: là một biến dùng để chứa địa chỉ mà không
chứa giá trị hay giá trị con trỏ chính là địa chỉ khoảng
nhớ mà nó trỏ tới



• Khai báo:
– Cú pháp: kiểu_dữ_liệu vùng_nhớ *tên_biến
– Ví dụ: int *int_ptr
long data *long_ptr
Chú ý: khi không chỉ rõ vùng nhớ thì con trỏ sẽ được coi là
con trỏ tổng quát
Loại
con trỏ
Tổng
quát
XDATA
CODE

DATA

IDATA

PDATA
Kích

thước

3byte

2byte

2byte

1byte

1byte

1byte

Các biến mở rộng trong Keil C

Nội dung
4.1 Cơ bản về lập trình C cho VĐK
4.2 Các lệnh rẽ nhánh và vòng lặp
4.3 Sử dụng con trỏ và mảng trong C
4.4 Các hàm và chương trình con
4.5 Chèn Assembly code trong C
4.6 Mô hình bộ nhớ Keil C51
4.7 Điều khiển ngoại vi
–Timer
–Cổng nối tiếp
–Ngắt
Các lệnh rẽ nhánh

Các lệnh rẽ nhánh


Các lệnh vòng lặp

Các lệnh vòng lặp

Nội dung
4.1 Cơ bản về lập trình C cho VĐK
4.2 Các lệnh rẽ nhánh và vòng lặp
4.3 Sử dụng con trỏ và mảng trong C
4.4 Các hàm và chương trình con
4.5 Chèn Assembly code trong C
4.6 Mô hình bộ nhớ Keil C51
4.7 Điều khiển ngoại vi
–Timer
–Cổng nối tiếp
–Ngắt
Con trỏ trong Assembly

Con trỏ trong C

Con trỏ trong C

Mảng trong C

Con trỏ và mảng

Ví dụ

Ví dụ


Ví dụ

×