MCS-51 cú bộ nhớ theo cấu trỳc Harvard: phõn biệt bộ nhớ chương trỡnh và dữ liệụ Chương trỡnh và dữ liệu cú thể chứa bờn trong nhưng vẫn cú thể kết nối với 64KB chương trỡnh và 64KB dữ liệụ Bộ nhớ chương trỡnh được truy xuất thụng qua chõn PSEN cũn bộ nhớ dữ liệu đươc truy xuất thụng qua chõn WR hay RD .
Lưu ý rằng việc truy xuất bộ nhớ chương trỡnh luụn luụn sử dụng địa chỉ 16 bit cũn bộ nhớ dữ liệu cú thể là 8 bit hay 16 bit tuỳ theo cõu lệnh sử dụng. Khi dựng bộ nhớ dữ liệu 8 bit thỡ cú thể dựng Port 2 như là Port I/O thụng thường cũn khi dựng ở chế độ 16 bit thỡ Port 2 chỉ dựng làm cỏc bit địa chỉ caọ
Port 0 được dựng làm địa chỉ thấp/ dữ liệu đa hợp. Tớn hiệu ALE để tỏch byte địa chỉ và đưa vào bộ chốt ngoàị
Trong chu kỳ ghi, byte dữ liệu sẽ tồn tại ở Port 0 vừa trước khi /WR tớch cực và được giữ cho đến khi /WR khụng tớch cực.Trong chu kỳ đọc, byte nhận được chấp nhận vừa trước khi /RD khụng tớch cực.
Bộ nhớ chương trỡnh ngoài được xử lý 1 trong 2 điều kiện sau: - Tớn hiệu /EA tớch cực ( = 0).
- Giỏ trị của bộ đếm chương trỡnh (PC – Program Counter) lớn hơn kớch thước bộ nhớ.
Bộ mụn Kỹ thuật mỏy tớnh – Khoa Điện tử - Trường ĐH Kỹ thuật Cụng nghiệp 104 PCH: Program Counter High – PCL: Program Counter Low
DPH: Data Pointer High – DPL: Data Pointer Low
Hỡnh 1.7 – Thực thi bộ nhớ chương trỡnh ngoài
Bộ nhớ chương trỡnh ngoài:
Quỏ trỡnh thực thi lệnh khi dựng bộ nhớ chương trỡnh ngoài cú thể mụ tả như hỡnh 1.7. Trong quỏ trỡnh này, Port 0 và Port 2 khụng cũn là cỏc Port xuất nhập mà chứa địa chỉ và dữ liệụ Sơ đồ kết nối với bộ nhớ chương trỡnh ngoài mụ tả như hỡnh 1.8.
Trong một chu kỳ mỏy, tớn hiệu ALE tớch cực 2 lần. Lần thứ nhất cho phộp 74HC573 mở cổng chốt địa chỉ byte thấp, khi ALE xuống 0 thỡ byte thấp và byte cao của bộ đếm chương trỡnh đều cú nhưng ROM chưa xuất vỡ PSEN chưa tớch cực, khi tớn hiệu ALE lờn 1 trở lại thỡ Port 0 đó cú dữ liệu là mó lệnh. ALE tớch cực lần thứ hai
được giải thớch tương tự và byte 2 được đọc từ bộ nhớ chương trỡnh. Nếu lệnh đang thực thi là lệnh 1 byte thỡ CPU chỉ đọc Opcode, cũn byte thứ hai bỏ quạ
Bộ mụn Kỹ thuật mỏy tớnh – Khoa Điện tử - Trường ĐH Kỹ thuật Cụng nghiệp 105
Bộ nhớ dữ liệu ngoài:
Bộ nhớ dữ liệu ngoài được truy xuất bằng lệnh MOVX thụng qua cỏc thanh ghi xỏc định địa chỉ DPTR (16 bit) hay R0, R1 (8 bit). Sơ đồ kết nối với bộ nhớ dữ liệu ngoài mụ tả như hỡnh 1.9.
Quỏ trỡnh thực hiện đọc hay ghi dữ liệu được cho phộp bằng tớn hiệu RD hay WR (chõn P3.7 và P3.6).
Bộ nhớ chương trỡnh và dữ liệu dựng chung:
Trong cỏc ứng dụng phỏt triển phần mềm xõy dựng dựa trờn AT89C51, ROM sẽ được lập trỡnh nhiều lần nờn dễ làm hư hỏng ROM. Một giải phỏp đặt ra là sử dụng RAM để chứa cỏc chương trỡnh tạm thờị Khi đú, RAM vừa là bộ nhớ chương trỡnh vừa là bộ nhớ dữ liệụ Yờu cầu này cú thể thực hiện bằng cỏch kết hợp chõn RD và chõn PSEN thụng qua cổng AND. Khi thực hiện đọc mà lệnh, chõn PSEN tớch cực cho phộp đọc từ RAM và khi đọc dữ liệu, chõn RD sẽ tớch cực. Sơ đồ kờt nối mụ tả như hỡnh 1.10.
Giải mó địa chỉ
Trong cỏc ứng dụng dựa trờn AT89C51, ngoài giao tiếp bộ nhớ dỡ liệu, vi điều khiển cũn thực hiện giao tiếp với cỏc thiết bị khỏc như bàn phớm, led, động cơ, … Cỏc thiết bị này cú thể giao tiếp trực tiếp thụng qua cỏc Port. Tuy nhiờn, khi số lượng cỏc thiết bị lớn, cỏc Port sẽ khụng đủ để thực hiện điều khiển. Giải phỏp đưa ra là xem cỏc thiết bị này giống như bộ nhớ dữ liệụ Khi đú, cần phải thực hiện quỏ trỡnh giải mó địa chỉ để phõn biệt cỏc thiết bị ngoại vi khỏc nhaụ
Quỏ trỡnh giải mó địa chỉ thường được thực hiện thụng qua cỏc IC giải mó như 74139 (2 -> 4), 74138 ( 3 -> 8), 74154 (4 -> 16). Ngừ ra của cỏc IC giải mó sẽ được đưa tới chõn chọn chip của RAM hay bộ đệm khi điều khiển ngoại vị