Hầu hết câc bộ nhớ câc vi xử lý đều dựa theo cấu trúc Von Neuman về phđn chia vùng nhớ cho chương trình vă dữ liệu. Điều năy cho phĩp chương trình được lưu giữ trong đĩa vă chỉ load văo bộ nhớ mỗi khi thi hănh. Do đĩ dữ liệu vă chương trình đều nằm trong RAM. Đối với vi điều khiển thì khâc, CPU được coi lă hệ thống mây tính. Nĩ lă trung tđm của thiết bị điều khiển. Nĩ bị giới hạn về bộ nhớ. Chương trình điều khiển nằm trong ROM.
Vì lý do năy mă bộ nhớ của vi điều khiển 8051 dựa theo cấu trúc Harvard để phđn chia vùng chương trình (code mê lệnh) vă dữ liệu. Như đê mơ tả ở bảng 4.2 cả hai vùng mê lệnh vă dữ liệu đều nằm ở bộ nhớ nội. Tuy nhiín cả hai cũng cĩ thể mở rộng ra bộ nhớ ngồi, cĩ thể lín đến 64Kb cho vùng địa chỉ.
Bộ nhớ nội gồm cĩ ROM nội (chỉ đối với 8051/8052) vă RAM ngoại. RAM chia thănh nhiều vùng: vùng dănh cho mục đích năo đĩ, vùng cĩ thể truy xuất bit, câc khối (bank) thanh ghi, vă câc thanh ghi đặc biệt.
Cĩ hai điều đâng lưu ý ở đđy: (a) câc thanh ghi vă câc cổng xuất nhập đều được phđn chia địa chỉ vă cĩ thể truy xuất chúng như những vùng khâc. (b) stack thường được phđn chia văo RAM nội hơn lă vùng nhớ ngồi. Đđy lă một đặc điểm của vi điều khiển.
Hình 4.4 mơ tả bộ nhớ của 8031 (khơng cĩ ROM nội)
Hình 4.5 mơ tả chi tiết về vùng nhớ dữ liệu nội. Câc vùng nhớ được mơ tả dưới đđy.
Vùng tổng quât
Vùng RAM năy chiếm 80 bytes từ địa chỉ 30H đến địa chỉ 7FH. Vùng nhớ 32 bytes bín dưới cũng cĩ thể được dùng như vùng năy mặc dù nĩ được dùng cho mục đích khâc.
Bất kỳ vị trí năo trong vùng năy đều cĩ thể truy xuất tự do bằng địa chỉ trực tiếp hoặc giân tiếp. Ví dụ để đọc nội dung byte nhớ nội của địa chỉ 5FH văo thanh ghi ACC, ta dùng lệnh sau:
MOV A, 5FH ;
Lệnh năy chuyển một byte dữ liệu sử dụng địa chỉ trực tiếp để xâc định địa chỉ nguồn (5FH).
RAM nội cũng cĩ thể được truy xuất bằng địa chỉ giân tiếp thơng qua R0 vă R1 (chỉ hai thanh ghi năy mă thơi). Ví dụ lính sau sẽ thực hiện cơng việc giống như ví dụ trín
MOV R0, 5FH ;
MOV A, @R0 ;
Lệnh đầu tiín nạp giâ trị 5FH cho thanh ghi R0. Lệnh thứ hai dùng chuyển dữ liệu được chỉ ra bởi R0 vă thanh ghi tích luỹ (ACC).
FFFF FFFF
Vùng Vùng
mê lệnh dữ liệu
FF Truy xuất Truy xuất
thơng qua RD vă WR PSEN
0000 0000
Vùng nhớ nội Vùng nhớ ngồi
Hình : 4.4 Tĩm tắt vùng nhớ 8031
Vùng nhớ cĩ khả năng truy xuất bit:
8051 cĩ tất cả 210 vị trí cĩ thể truy xuất bit. Trong đĩ cĩ 128 bits (16 bytes) từ địa chỉ 20H đến 2FH vă câc bit thuộc câc thanh ghi chức năng. Khả năng truy xuất bit bằng câc phần mềm lă một điểm mạnh của vi điều khiển. Bits cĩ thể được set, clear, and, or, v.v… bằng một lệnh đơn.
Vùng nhớ năy cĩ thể truy xuất như bytes hoặc bit. Ví dụ để set bit 67H ta dùng lệnh sau:
SETB 67H ;
So với bộ nhớ bit lă bit cĩ trọng số lớn nhất của bytes 2CH, do đĩ ta cũng cĩ thể set nĩ bằng lệnh sau:
ORL A, #10000000B ;
MOV 2CH, A ;
Hơn thế nữa câc I/O ports của 8051 cĩ thể truy xuất bit, lăm đơn giản việc xuất nhập từng bit. Vùng nhớ năy cĩ thể xuất nhập từng byte tùy theo lệnh.
Câc ngăn thanh ghi (Register banks):
32 butyes nằm ở cuối vùng RAM nội lă câc ngăn thanh ghi. Tập lệnh của 8051 chỉ truy xuất 8 thanh ghi trong vùng năy, từ R0 đến R7.
Tại một thời điểm chỉ truy xuất được một ngăn thanh ghi mă thơi. Câc thanh ghi năy cĩ địa chỉ mặc định 00H đến 07H khi reset hệ thống (bank 0). Lệnh sau đđy đọc nội dung byte nhớ cĩ địa chỉ 05H văo thanh ghi tích luỹ.
MOV A, R5 ;
Lệnh trín chỉ chiếm một bute sử dụng địa chỉ thanh ghi. Dĩ nhiín cơng việc trín cĩ được thực hiện bằng một lệnh hai bytes sử dụng địa chỉ trực tiếp:
MOV A, 05H ;
Rõ răng lệnh sử dụng thanh ghi R0 đến R7 ngắn hơn vă nhanh hơn so với lệnh tương đương sử dụng địa chỉ trực tiếp.
Câc ngăn thanh ghi cĩ thể thay đổi bằng câch set lại thanh ghi trạng thâi chương trình (PSW.3 PSW.4) trong chương trình. Giả sử sau khi cho phĩp sử dụng bank 3 thanh ghi R5 lúc năy cĩ địa chỉ 20H. Lệnh sau ghi nội dung thanh ghi ACC văo vị trí 18H(R3)
MOV R3, A;