Bài 4: Hướng dẫn sử dụng phần mềm Pinnacle 52 viết chương trình cho vi điều khiển họ 8051
2. Viết chương trình cho vi điều khiển
2.1 Giới thiệu Vi điều khiển 8051
2.1.3 Tổ chức bộ nhớ của 8051
Bộ nhớ của 8051 bao gồm bộ nhớ chương trình ROM và bộ nhớ dữ liệu. Trong
đó, bộ nhớ chương trình có thể được sản xuất theo các công nghệ khác nhau như
EEPROM, Flash.
a. Bé nhí RAM
- Bộ nhớ RAM (Radom Access Memmory) hay còn gọi là bộ nhớ dữ liệu. RAM chứa các thanh ghi, ngăn xếp, có phần Ram định địa chỉ bit và Ram nháp.
- Dung lượng bộ nhớ RAM của vi điều khiển phụ thuộc vào từng thành viên, nhưng 128 byte đầu tiên là giống nhau.
- Xét 128 byte tổ chức bộ nhớ RAM:
78H 7FH
- - - -
- - - -
- - - -
38H 39H 3AH 3BH 3CH 3DH 3EH 3FH 30H 31H 32H 33H 34H 35H 36H 37H 28H 29H 2AH 2BH 2CH 2DH 2EH 2FH 20H 21H 22H 23H 24H 25H 26H 27H R0 R1 R2 R3 R4 R5 R6 R7 R0 R1 R2 R3 R4 R5 R6 R7 R0 R1 R2 R3 R4 R5 R6 R7 R0 R1 R2 R3 R4 R5 R6 R7
+ Địa chỉ từ 00H đến 1FH gồm có 32 byte dành cho 4 băng thanh ghi được đánh số từ R0 đến R7. Các byte này có thể truy cập trực tiếp hoặc theo tên thanh ghi...
Cả 4 băng thanh ghi đều được đánh tên các thanh ghi từ R0 đến R7. Mặc
định khi chạy chương trình thì VĐK sẽ truy cập băng 0. Muốn chuyển băng thanh ghi ta tác động tới hai bit RS0, RS1 trong thanh ghi trạng thái chương trình PSW theo bảng trạng thái sau:
RS1 RS0 Băng thanh ghi được chọn
0 0 B¨ng 0
0 1 B¨ng 1
1 0 B¨ng 2
1 1 B¨ng 3
Từ 08H là địa chỉ mặc định bắt đầu của vùng ngăn xếp, với nguyên tắc hoạt động là vào trước ra sau FILO (First In Last Out).
+ Địa chỉ từ 20H đến 2FH gồm có 16 byte. Đây là vùng RAM định địa chỉ bit của VĐK. Như vậy ta sẽ có: 16x8=128 bit RAM. Các bit này được đánh địa chỉ
từ 00 - 127 ( 00H - 7FH). Vùng nhớ này có thể truy nhập theo địa chỉ bit hoặc theo vị trí của bit trong byte.
+ Địa chỉ từ 30H đến 7FH: Vùng RAM còn lại này được dùng cho mục đích lưu trữ tạm thời hay còn gọi là RAM nháp...
Chú ý: Với 128 byte RAM của VĐK có thể truy cập theo chế độ định địa chỉ trực tiếp, gián tiếp hoặc thanh ghi. Với 128 byte RAM tiếp theo có địa chỉ từ 128-255 (với VĐK 8052) ta phải truy cập gián tiếp.
b. Bé nhí ROM
Bộ nhớ ROM của vi điều khiển hay còn gọi là bộ nhớ chương trình. Bộ nhớ ROM của vi điều khiển có cấu tạo thường là bộ nhớ Flash ROM, nó có khả
năng cho phép ghi đi xoá lại hàng nghìn lần.
Dung lượng bộ nhớ ROM có dung lượng từ vài Kbyte đến lớn nhất là 64 Kbyte.
Dung lượng bộ nhớ này tuỳ thuộc vào từng thành viên.
Tổ chức bộ nhớ ROM chia làm các ngăn nhớ với dung lượng mỗi ngăn là 1 byte.
Khi reset, con trỏ chương trình PC chỉ tới địa chỉ số 0 trên bộ nhớ ROM, do đó chương trình phải được bắt đầu từ địa chỉ số 0. Ngoài địa chỉ số 0, còn các địa chỉ đặc biệt khác giành cho các ngắt là 03h, 0Bh, 13H, 1BH, 23H.
c. Các thanh ghi chức năng đặc biệt (SFRs- Special Funtion Registors)
Các thanh ghi A, B, PSW và DPTR là một bộ phận của nhóm các thanh ghi được gọi là các thanh ghi chức năng đặc biệt SFR (Special Funtion Register).
Có rất nhiều thanh ghi với chức năng đặc biệt và chúng được sử dụng rất rộng rãi. Các thanh ghi SFR có thể được truy cập theo tên hoặc theo các địa chỉ của chúng. Ví dụ địa chỉ của thanh ghi A có địa chỉ là 0EOH và thanh ghi B có địa chỉ là 0FOH như cho ở trong bảng sau:
Cần phải lưu ý đến hai điểm sau về các địa chỉ của SFR:
+ Các thanh ghi SFR có địa chỉ nàm giữa 80H và 0FFH các địa chỉ này ở trên 80H, vì các địa chỉ từ 00 đến 7FH là địa chỉ của bộ nhớ RAM bên trong 8051.
+ Không phải tất cả mọi địa chỉ từ 80H đến 0FFH đều chứa các thanh ghi chức năng đặc biệt, những vị trí ngăn nhớ từ 80H đến 0FFH chưa dùng lập trình viên không được sử dụng.
Thanh ghi Tên Địa chỉ
ACC* Thanh ghi tích luỹ (thanh ghi tổng ) A 0E0H
B* Thanh ghi B 0F0H
PSW* Từ trạng thái chương trình 0D0H
SP Con trá ng¨n xÕp 81H
DPTR Con trỏ dữ liệu hai byte
DPL Byte thấp của DPTR 82H
DPH Byte cao của DPTR 83H
P0* Cổng 0 80H
P1* Cổng 1 90H
P2* Cổng 2 0A0H
P3* Cổng 3 0B0H
IP* Điều khiển ưu tiên ngắt 0B8H
IE* Điều khiển cho phép ngắt A08H
TMOD Điều khiển chế độ bộ đếm/ Bộ định thời 89H
TCON* Điều khiển bộ đếm/ Bộ định thời 88H
T2CON* Điều khiển bộ đếm/ Bộ định thời 2 0C8H T2MOD Điều khiển chế độ bộ đếm/ Bộ định thời 2 0C9H TH0 Byte cao của bộ đếm/ Bộ định thời 0 8CH TL0 Byte thấp của bộ đếm/ Bộ định thời 0 8AH TH1 Byte cao của bộ đếm/ Bộ định thời 1 8DH TL1 Byte thấp của bộ đếm/ Bộ định thời 1 8BH TH2 Byte cao của bộ đếm/ Bộ định thời 2 0CDH TL2 Byte thấp của bộ đếm/ Bộ định thời 2 0CCH RCAP2H Byte cao của thanh ghi bộ đếm/ Bộ định thời 2 0CBH RCAP2L Byte thấp của thanh ghi bộ đếm/ Bộ định thời 2 0CAH
SCON* §iÒu khiÓn nèi tiÕp 98H
SBUF Bộ đệm dữ liệu nối tiếp 99H
PCON Điều khiển công suất 87H
Dấu “*” thể hiện các thanh ghi có thể định địa chỉ theo bit.