BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM 7Cấu trúc bộ nhớ của 8051 chương trình, bộ nhớ dữ liệu trong, bộ nhớ dữ liệu ngoài.. Cấu trúc bộ nhớ của ARM7 LPC2000 Các vi xử lý có kiến trúc
Trang 1BÙI QUỐC BẢO
LẬP TRÌNH HỆ THỐNG
NHÚNG
Vi ñiều khiển 8051
Trang 2BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM 3
Vi ñiều khiển 8051
Phần mềm
Trang 3BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM 5
Cấu trúc bộ nhớ của 8051
Trang 4BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM 7
Cấu trúc bộ nhớ của 8051
chương trình, bộ nhớ dữ liệu trong, bộ
nhớ dữ liệu ngoài) Mỗi vùng nhớ ñược
truy cập bằng các câu lệnh khác nhau
vùng nhớ cho các biến ñó
Cấu trúc bộ nhớ của ARM7
LPC2000
Các vi xử lý có kiến trúc Newman (VD: ARM) dùng chung 1 không gian nhớ cho
Von-bộ nhớ chương trình và dữ liệu.
Trang 5BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM 9
Không gian bộ nhớ chương trình
các số từ 0 ñến 3:
code char square[4] = {0,1,4,9};
Không gian bộ nhớ dữ liệu nội
Vùng nhớ nội truy xuất trực tiếp (00H-7FH) ñược ký
VD: khai báo một biến integer:
idata unsigned int temp;
Trang 6BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM 11
Không gian bộ nhớ dữ liệu ngoài
ðược gọi là external data space (xdata)
Lnh assembly:
MOV DPTR, #2000H
MOVX A,@DPTR
Chứa các biến ít dùng, các khối dữ liệu lớn
hoặc ngoại vi theo kiểu memory-mapped
VD:
xdata unsigned int[1000] ADC_value;
unsigned int checksum (unsigned int
start , unsigned int end )
ñể tính checksum của vùng nhớ
ch*+ng trình từ ñịa chỉ start ñến end
(code)
Trang 7BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM 13
unsigned int checksum (unsigned int start, unsigned int end)
{
unsigned int code *codeptr, *codeend;
unsigned int data checksum = 0;
codeptr = (unsigned int code *)start;
codeend = (unsigned int code *)end;
while (codeptr <= codeend)
{
checksum = checksum + (unsigned int data)*codeptr;
codeptr++; /* go to the next address */
32 unsigned long
-2,147,483,648 to 2,147,483,647 4
32 long
0 to 65,535 2
16 unsigned int
-32,768 to +32,767 2
16 int
0 to 65,535 2
16 unsigned short
-32,768 to +32,767 2
16 short
-32,768 to +32,767 2
16 enum
0 to 255 1
8 unsigned char
-128 to +127 1
8 char
Range Bytes
Bits Type
Trang 8BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM 15
Kiêủ float và double
Các kiểu ñặc biệt của C51
0 to 65,535 2
16 sf16
0 to 255 1
8 sfr
0 or 1 1
sbit
0 or 1 1
bit
Range Bytes
Bits Type
Trang 9BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM 17
tác ñộng ñến bit trong thanh ghi ta dùng
khai báo sbit
sbit name = sbit-address;
Trang 10BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM 19
Trang 11BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM 21
Vùng nhớ ñược ñịnh ñịa chỉ bit
8051 có vùng nhớ ñược ñịnh ñịa chỉ bit ðể
tác ñộng ñến vùng nhớ này ta dùng khai báo
bdata
bit flag = temp ^0;
sfr, sbit là ñặc biệt cho trường hợp lập
trình 8051
Trang 12BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM 23
Trang 13BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM 25
Endless loop
ðơn giản.
Dễ thực hiện, sửa lỗi và bảo trì
Không cần sử dụng nhiều tài nguyên hệ
Tiêu tốn năng lượng vì CPU hoạt ñộng ở
chế ñộ bình thường trong toàn bộ thời gian
Trang 14BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM 27
Trang 15BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM 29
các số lớn hơn 9 tắt tất cả ñoạn LED)
và hiển thị lên LCD (Dùng bảng tra ñể
lấy mã 7 ñoạn)
Giao tiếp switch
giao tiếp chính của hệ thống nhúng
hoặc mở
Trang 16BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM 31
Press detected
delay
Read again Just a bounce
Giao tiếp switch
Với 8051, trước khi ñọc switch ta phải ghi “1” ra bộ chốt của chân port ñang giao tiếp switch
Trang 17BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM 33
chống rung) và xuất ra LED
Giao tiếp keypad
Trang 18BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM 35
Giao tiếp keypad
Trang 19BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM 37
Giao tiếp keypad
getkey_Debound()
Trang 20BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM 39
Giao tiếp keypad
Mặc ñịnh, hàm printf xuất 1 chuỗi ký tự ra
serial port của 8051
Cấu trúc:
int printf ( const char * format, );
Chi tiết tham khảo tại:
http://www.cplusplus.com/reference/clibrary/cs
Trang 21BM Kỹ Thuật ðiện Tử - ðH Bách Khoa TP.HCM 41
Thư viện của Keil C
viện xuất nhập (stdio), toán (math), …
tham khảo tại:
http://www.keil.com/support/man/docs/c5
1/c51_library.htm