Trong vi điều khiển có thể có nhiều loại bố nhớ như: Flash ROM, RAM, EEPROM.... Trong đó phần lớn các thành viên đều có đó là bộ nhớ Flash Rom và bộ nhí Ram.
6.2.1. Bé nhí RAM
- Bộ nhớ RAM – Radom Access Memmory hay còn gọi là bộ nhớ dữ liệu. Trên bộ nhớ RAM có các thanh ghi, có ngăn xếp, có phần ram định địa chỉ bít 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,
- 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
Hình 6.3 Tổ chức bộ nhớ RAM
+ Từ 00H đến 1FH gồm có 32 byte giành cho 4 băng thanh ghi 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. Và mặc
định khi chay 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 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
Bảng 6.2 Lựa chọn băng thanh ghi
Ngoài ra từ địa chỉ: 07H đến 1FH còn là vị trí của 24 byte ngăn xếp của VĐK.
Với vị trí bắt đầu của con trỏ ngăn xếp là:08H, nguyên tắc vào ra ngăn xếp là FILO ( First In Last Out - Vào trước ra sau ).
+ 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 bít này được đánh địa chỉ từ 00 - 127 ( 00H - 7FH).
+ 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...
Lưu ý: Với 128 byte RAM của VĐK có thể truy cập trực tiếp, gián tiếp, thanh ghi. Với 128 byte RAM tiếp theo ( với VĐK 8052) ta phải truy cập gián tiếp.
6.2.2. 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.
Vi điều khiển bắt đầu chạy chương trình từ địa chỉ không trên bộ nhớ ROM.
6.2.3. Các thanh ghi chức năng đặc biệt. (SFR- Special Funtion Registors)
- Trong các thanh ghi được nói đến từ trước đến giờ ta thấy rằng các thanh ghi R0 - R7 là một phần trong 128 byte của bộ nhớ RAM. Vậy còn các thanh ghi A, B, PSW và DPTR là một bộ phận của nhóm các thanh ghi nhìn chung được gọi là các thanh ghi đặ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 FR có thể được truy cập theo tên của chúng (mà dễ hơn rất nhiều) hoặc theo các địa chỉ của chúng. Ví dụ
địa chỉ của thanh ghi A là EOH và thanh ghi B là FOH 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à FFH 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 FFH đều do SFR sử dụng, nhưng vị trí ngăn nhớ từ 80H đến FFH chưa dùnglà để dữ trữ và lập trình viên 8051 cũng không
được sử dụng.
Lệnh 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
Lệnh Tên Địa chỉ
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
Bảng 6.3 Thanh ghi chức năng đặc biệt SFR Dấu “*” thể hiện các thanh ghi có thể định địa chỉ theo bit.
Xét theo chế độ đánh địa chỉ trực tiếp thì cần phải lưu ý rằng giá trị địa chỉ được giới hạn đến 1byte, 00 - FFH. Điều này có nghĩa là việc sử dụng của chế độ đánh địa chỉ này bị giới hạn bởi việc truy cập các vị trí ngăn nhớ của RAM và các thanh ghi với
địa chỉ được cho bên trong 8051.