23 1F 1E 1D 1C 1B 1A 19 18 8D không đƣợc địa chỉ hóa bit TH1 22 17 16 15 14 13 12 11 10 8C không đƣợc địa chỉ hóa bit TH
1.2.3.6 Bộ nhớ ngoà
AT89C52 có khả năng mở rộng bộ nhớ lên đến 64K bộ nhớ chƣơng trình và
64K bộ nhớ dữ liệu ngoài. Do đó, có thể dùng thêm ROM và RAM bên ngoài nếu cần.
Khi dùng bộ nhớ ngoài, Port 0 không còn là một port I /O thuần túy nữa. Nó đƣợc hợp kênh giữa bus địa chỉ (A0 – A7) và bus dữ liệu (D0 – D7) với tín hiệu ALE để chốt byte thấp của địa chỉ khi bắt đầu mỗi chu kì bộ nhớ. Port 2 thông thƣờng đƣợc dùng cho byte cao của bus địa chỉ.
Trong nửa đầu của mỗi chu kì bộ nhớ, byte thấp của địa chỉ đƣợc cấp trong Port 0 và đƣợc chốt bằng xung ALE. Một IC chốt 74HC373 (hoặc tƣơng đƣơng) sẽ giữ byte địa chỉ thấp trong phần còn lại của chu kì bộ nhớ.
Trong nửa sau của chu kì bộ nhớ Port 0 đƣợc dùng nhƣ bus dữ liệu và đƣợc đọc hoặc ghi tùy theo lệnh.
Truy xuất bộ nhớ chƣơng trình ngoài:
Bộ nhớ chƣơng trình ngoài là một IC ROM đƣợc cho phép bởi tín hiệu
PSEN Hình H.1-9 sau mô tả cách nối một EPROM vào 8952:
EA PSEN PORT 2 ALE PORT 0 A8 - A15 D0 - D7 A0 - A7 OE D G Q 74HC373 EPROM 8952 H-1-9: Giao tiếp giữa AT89C52 và EPROM.
35
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Một chu kì máy của AT89C52 có 12 chu kì xung nhịp. Nếu bộ dao động trên chip đƣợc lái bởi một thạch anh 12 Mhz thì một chu kì máy kéo dài 1 s.
Trong một chu kì máy, sẽ có hai xung ALE và hai byte đƣợc đọc từ bộ nhớ chƣơng trình (nếu lệnh hiện hành là lệnh 2 bytes thì byte thứ hai sẽ đƣợc loại bỏ). Giản đồ thời gian của một lần lấy lệnh đƣợc vẽ ở hình H1-10 sau:
H.1-10: Giản đồ thời gian đọc bộ nhớ chƣơng trình ngoài.
Truy xuất bộ nhớ dữ liệu ngoài:
EAPSENWR PSENWR RD PORT 2 ALE PORT 0 A8 -A15 D0 - D7 A0 - A7 OE CS WR NC D G Q 74HC373 RAM 8952
36
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Bộ nhớ dữ liệu ngoài là một bộ nhớ RAM đƣợc cho phép ghi /đọc bằng các tín hiệu WR\ và RD\ (các chân P3.6 và P3.7 thay đổi chức năng).
Chỉ có một cách truy xuất bộ nhớ dữ liệu ngoài là với lệnh MOVX dùng con trỏ dữ liệu (DPTR) 16 bits hoặc R0 và R1 xem nhƣ thanh ghi địa chỉ.
Kết nối bus địa chỉ và bus dữ liệu giữa RAM và 8952 cũng giống nhƣ EPROM và do đó cũng có thể lên đến 64 Kbytes bộ nhớ RAM.
Ngoài ra, chân RD\ của 8952 đƣợc nối tới chân cho phép xuất (OE\) của RAM và chân WR\ đƣợc nối tới chân ghi (WR\) của RAM.
H.1-12: Giản đồ thời gian của lệnh MOVX.
Giản đồ thời gian cho lệnh ghi (MOVX @DPTR, A) cũng tƣơng tự chỉ khác đƣờng WR\ sẽ thay vào đƣờng RD\ và dữ liệu đƣợc xuất ra trên chân Port 0 (RD\
37
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Giải mã địa chỉ:
Nếu có nhiều EPROM và /hoặc nhiều RAM đƣợc giao tiếp với 8952, thì cần phải giải mã địa chỉ.
Mạch giải mã cũng tƣơng tự nhƣ các hệ vi xử lí khác. Ví dụ, nếu dùng nhiều EPROM và RAM 8Kbytes thì bus địa chỉ cần phải đƣợc giải mã để xác định IC nhớ nào đƣợc chọn.
Ngƣời ta thƣờng dùng IC giải mã 74HC138 với các ngõ ra đƣợc nối tới các ngõ vào chọn chip (CS) trên các IC nhớ. Hình H.1-13 vẽ một hệ thống với nhiều EPROM 8K 2764 và RAM 8K 6264:
38
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Xếp chồng bộ nhớ chƣơng trình và dữ liệu bên ngoài:
Vì bộ nhớ chƣơng trình là ROM, nên nảy sinh một vấn đề bất tiện khi phát triển phần mềm cho 8051/8031. Đối với 8952 đã cải tiến bằng cách thay thế bằng EEPROM, hoặc dùng một cách để khắc phục nhƣợc điểm trên là xếp chồng các vùng nhớ chƣơng trình và dữ liệu.
Một IC RAM có thể chứa cả chƣơng trình và dữ liệu bằng cách nối đƣờng
OE\ của RAM vào một mạch logic AND của PSEN\ và RD\.
Mạch trên hình sau cho phép một IC RAM đƣợc dùng làm bộ nhớ chƣơng trình và dữ liệu:
Vậy một chƣơng trình có thể đƣợc tải vào RAM (bằng cách ghi nó nhƣ bộ nhớ dữ liệu) và thi hành (bằng cách truy xuất nó nhƣ bộ nhớ chƣơng trình).