2.6.0 BỘ NHỚ NGOÀI
Các bộ vi điều khiển cần có khả năng mở rộng các tài nguyên trên chip ( bộ nhớ, I/O, v.v… để tránh hiện tượng cổ chai trong thiết kế. Cấu trúc của MCS-51 cho ta khả năng mở rộng không gian bộ nhớ chương trình đến 64K và không gian bộ nhớ dữ liệu đến 64K. ROM và RAM ngoài được thêm vào khi cần
Các IC giao tiếp ngoại vi cũng có thể được thêm vào để mở rộng khả năng xuất/nhập. Chúng trở thành 1 phần của không gian bộ nhớ dữ liệu ngoài bằng cách sử dụng cách định địa chỉ kiểu I/O ánh xạ bộ nhớ. Khi bộ nhớ ngoài được sử dụng, port 0 không làm nhiệm vụ của port xuất/nhập, port này trở thành bus địa chỉ ( A0 – A7 ) và bus dữ liệu ( D0- D7 ) đa hợp. Ngõ ra ALE chốt byte thấp của địa chỉ ở thời điểm bắt đầu mỗi một chu kỳ bộ nhớ ngoài. Port 2 thường ( nhưng không phải luôn luôn ) được dùng làm byte cao của bus địa chỉ.
Trước khi thảo luận các chi tiết cụ thể về các bus địa chỉ và dữ liệu đa hợp, ý tưởng tổng quát được trình bày ở hình 2.7.
Hình 2.7: Đa hợp bus địa chỉ ( byte thấp ) và bus dữ liệu (a) không đa hợp ( 24
chân ) (b) đa hợp ( 16 chân )
Memory cycle : chu kỳ bộ nhớ Address : địa chỉ
Data : dữ liệu
Nonmultiplexed : không đa hợp Multiplexed : đa hợp
Sắp xêp không đa hợp sử dụng 16 đường địa chi và 8 đường dữ liệu, tổng cộng 24 đường, sắp xếp đa hợp kết hợp 8 đường của bus dữ liệu và byte thấp của bus địa chỉ, do vậy ta chỉ cần 16 đường.
Việc tiết kiệm các chân cho phép ta đóng gói bộ vi điều khiển họ MCS-51 trong 1 vỏ 40 chân.
Sắp xếp đa hợp có hoạt động như sau : trong ½ chu kỳ đấu của chu kỳ bộ nhớ, byte thấp của địa chi được cung cấp bởi port 0 và được chốt nhờ tín hiệu ALE. Mạch chốt 74HC373 giữ cho byte thấp của địa chỉ ổn định trong cả chu kỳ bộ nhớ. Trong 1/2 sau của chu kỳ bộ nhớ, port 0 được sử dụng làm bus dữ liệu và dữ liệu được đọc hay ghi.
2.6.1 Truy xuất bộ nhớ chương trình ngoài
Bộ nhớ chương trình ngoài là bộ nhở chỉ đọc, được cho phép bới tín hiệu PSEN/. Khi có 1 EPROM ngoài được sử dụng, cá hai port 0 và port 2 đều không còn là các port xuất/nhập.
Kết nối phần cứng với bộ nhớ ngoài EPROM được trình bày ở hình 2.8.
Một chu kỳ máy của 8051 có 12 chu kỳ dao động. Nếu bộ dao động trên chip có tần số 12 MHz, một chu kỳ máy dài 1 (micro giây). Trong 1 chu kỳ máy điển hình, ALE có 2 xung và 2 byte của lệnh được đọc từ bộ nhớ chương trình ( riêng lệnh chỉ có 1 byte, byte thứ hai được loại bỏ ). Giản đồ thời gian của chu kỳ máy này, được gọi là chu kỳ tìm-nạp lệnh được trình bày ở hình 2.9.
One machine cycle : một chu kỳ máy
Program counter high byte : byte cao của PC
2.6.2 Truy xuất bộ nhớ dữ liệu ngoài
Bộ nhớ dữ liệu ngoài là bộ nhớ đọc/ghi được cho phép bởi các tín hiệu RD/ và WR/ ở các chân P3.7 và P3.6. Lệnh dùng để truy xuất bộ nhớ dữ liệu ngoài là MOVX, sử dụng hoặc con trỏ dữ liệu 16-bit DPTR hoặc R0, R1 làm thanh ghi chứa địa chỉ.
RAM có thể giao tiếp với 8051 theo cùng cách như EPROM ngoại trừ đường RD nối với đường cho phép xuất (OE/) của RAM và WR/ nối với đường ghi (W/) của RAM. Cách kết nối với bus dữ liệu và bus địa chỉ giống như EPROM. Bằng cách sử dụng các port 0 và port 2 như ở phần có 1 dung lượng RAM ngoài lên đến 64-K được kết nối với 8051
Giản đồ thời gian của thao tác đọc dữ liệu ở bộ nhớ dữ liệu ngoài dduwwocj trình bày ở hình 2.10 cho lệnh MOVX A, @DPTR. Lưu ý là cả hai xung ALE và PSEN/ được bỏ qua ở nơi mà xung RD/ cho phép đọc RAM [nếu lệnh MOVX và RAM ngoài không bao giờ được dùng, các xung ALE luôn có tần số bằng 1/6 tần số của mạch dao động.]
Giản đồ thời gian của chu kỳ ghi (lệnh MOVX @DPTR, A) cũng tương tự ngoại trừ các xung WR/ ở mức thấp và dữ liệu được xuất ra ở Port 0 (RD/ vẫn ở mức cao)
One machine cycle : một chu kỳ máy
Data pointer high byte : byte cao của DPTR
External da ta in : nhập dữ liệu từ bộ nhớ ngoài
Opcode : mã thao tác
Port 2 giảm bớt được chức năng làm nhiệm vụ cung cấp byte cao của địa chi trong các hệ thống tối thiếu thành phần, hệ thống không dùng bộ nhớ chương trình ngoài và chỉ có 1 dung lượng nhỏ bộ nhớ dữ liệu ngoài. Các địa chỉ 8 bit có thế truy xuất, bộ nhớ dữ liệu ngoài với cấu hình bộ nhớ nhỏ hướng trang ( page-oriented ). Nếu có nhiều hơn 1 trang 256-byte RAM, 1 vài bit từ port 2 ( hoặc 1 port khác ) có thế chọn 1 trang. Thí dụ với 1 RAM 1KB(nghĩa là 4 trang 256 byte) ta có thể kết nối RAM này với 8051 như ở hình 2.11.
Các bit 0 và 1 của port 2 phải được khởi động đế chọn 1 trang, rồi lệnh MOVX được dùng để đọc hoặc ghi trên trang này. Thí dụ ta giả sử P2.0 = P2.1 = 0, các lệnh sau có thế dùng đề đọc các nội dung của RAM ngoài ở dịa chỉ 0050H vào thanh chứa A :
MOV RO, #50H
MOVX A, @R0
Đế dọc ở địa chỉ cuối cùng của RAM này, 03FFH, trang 3 được chọn nghĩa là ta phải set cho các bit P2.0 và P2.1 bằng 1. Chuỗi lệnh sau được dùng :
SETB P2.0
SETB P2.1
MOV RO, #0FFH
MOVX A, @R0
Một đặc trưng của thiết kế này là các bit từ 2 đến 7 của port 2 không còn cần làm bít đại chỉ nữa, các bít còn lại này cso thể sử dụng cho mục đích xuất/ nhập.
2.6.3 Giải mã địa chỉ:
Nếu có nhiều EPROM hoặc nhiều RAM hoặc cả 2 giao tiếp với 8051 ta cần phải giải mã địa chi. Việc giải mã này cũng cần cho hầu hết các bộ vi xử lý.
Thí dụ nếu các RAM và ROM 8 KB được sử dụng, địa chỉ phải được giải mã để chọn các IC nhớ này trên các giới hạn 8 K : 0000H – 1FFFH, 2000H – 3FFFH, …
Một IC giải mã điển hình là 74HC138 được dùng với các ngõ ra được nối với các ngõ vào chọn chip CS/ của các IC nhớ như được mô tả ở hình 2.12 cho một bộ nhớ có nhiều EPROM 2764 ( 8K ) và RAM 6264 ( 8K ). Cần lưu ý là do các đường cho phép riêng rẽ (PSEN/ cho bộ nhớ chương trình, RD/ và WR/ cho bộ nhớ dữ liệu ), 8051 có thể quản lý không gian nhớ đến 64K cho bộ nhớ EPROM và 64K cho bộ nhớ RAM.
Hình 2.12: Giải mã địa chỉ
2.6.4 Các không gian nhớ chương trình và dữ liệu gối nhau
Vì bộ nhớ chương trình là bộ nhớ chỉ đọc, một tình huống khó xử được phát sinh trong quá trình phát triển phần mềm cho 8051. Làm thế nào phần mềm đươc viết cho một hệ thống đích để gỡ rốỉ nếu phần mềm chỉ có thể được thực thi từ không gian bộ nhớ chương trình chỉ đọc.
Giải pháp tổng quát là cho các không gian bộ nhớ chương trình và dữ liệu ngoài gối lên nhau. Vì PSEN/ được dùng đế đọc bộ nhớ chương trình và RD/ được dùng để đọc bộ nhớ dữ liệu, một RAM có thể chiếm không gian nhớ chương trình và dữ liệu bằng cách nối chân OE tới ngõ ra cổng AND có các ngõ vào là PSEN/ và RD/ .
Mạch trình bày ở hình 2.13 cho phép IC RAM được ghi như là bộ nhớ dữ liệu và được đọc như là bộ nhớ chương trình hoặc dữ liệu. Vậy thì một chương trình có thế được nạp vào RAM ( bằng cách ghi vào RAM như là bộ nhớ dữ liệu ) và được thực thi (bằng cách truy xuất như bộ nhớ chương trình ).
2.7 CÁC CẢI TIẾN CỦA 8032 / 8052
– Các vi mạch 8032 / 8052 ( và các phiên bản CMOS ) có hai cải tiến so với 8031/8051. Một là có thêm 128 byte RAM trên chip từ địa chỉ 80H đến FFH. Điều này không xung đột với các thanh ghi chức năng đặc biệt ( có cùng địa chỉ ) vì 128 byte RAM thêm vào chỉ có thể truy suất bằng cách dùng kiểu định địa chỉ gián tiếp. Một lệnh như sau :
MOV A, 0F0H
di chuyển nội dung của thanh ghi B tới thanh chứa A trên các IC của họ MCS-51. Chuỗi lệnh :
MOV RO, #0F0H
MOV A, @R0
đọc vào thanh ghi A nội dung tại địa chỉ F0H trên các IC 8032/8052 nhưng không được định nghĩa trên 8031/8051. Tổ chức bộ nhớ nội của 8032/8052 được tóm tắt ở hình 2.14
Upper 128 bytes : 128 byte trên Lower 128 bytes : 128 byte dưới
Accessible by indirect addressing only : chỉ được truy xuât bằng kiểu định địa chỉ gián tiếp
Accessible by direct addressing only : chỉ được truy xuất bằng kiểu định địa chỉ trực tiếp
Accessible by direct and indirect addressing : truy xuất bằng kiểu định địa chỉ trực tiếp và gián tiếp
|
Cải tiến thứ 2 là có thêm bộ định thời 16-bit. Bộ định thời 2 này được lập trình nhờ vào 5 thanh ghi chức năng đặc biệt thêm vào. Chúng được tóm tắt trong bảng 2.5 và sẽ được mô tả chi tiết sau trong chương 4 ( hoạt động định thời ).
2.8 HOẠT ĐỘNG RESET
8051 được reset bằng cách giữ chân RST ở mức cao tối thiểu 2 chu kỳ máy và sau đó chuyển về mức tháp. RST có thế được tac động bằng tay hoặc được tác động khi câp nguồn bằng cách dùng một mạch RC như được trình bày ở hình 2.15. Trạng thái của tất cả các thanh ghi sau khi reset hệ thông được tóm tắt trong bảng 2.6.
Quan trọng nhất trong các thanh ghi này có lẽ là thanh ghi PC ( bộ đếm chương trình ), được nạp 0000H. Khi RST trở lại mức thấp, việc thực thi chương trình luôn luôn bắt đầu ở vị trí đầu tiên trong bộ nhớ chương trình: địa chỉ 0000H. Nội dung của RAM trên chỉp không bị ảnh hưởng bởi hoạt động reset.
Thanh ghi Nội dung
Bộ đếm chương trình 0000H
Thanh chứa A 00H
Thanh ghi B 00H
PSW 00H
SP 07H
DPTR 0000H
Port 0-3 FFH
IP xxx00000B(8031/8051)
xx000000B(8032/8052)
IE 0xx00000B(8031/8051)
0x000000B(8032/8052)
Các thanh ghi định thời 00H
SCON 00H
SBUF 00H
PCON(HMOS) 0xxxxxxxB
PCON(CMOS) 0xxx0000B