You are on page 1of 40

CHƯƠNG 2

KIẾN TRÚC PHẦN CỨNG


MCU 8051
CẤU HÌNH MCU 8051

MCU 8051 là MCU tiêu biểu của họ MCS51 của hãng Intel

- 8051 là CPU 8 bit được tối ưu hóa cho ứng dụng điều khiển
- Bộ nhớ nội (bộ nhớ on_chip): ROM 4KB và RAM 128 Byte
- Bộ nhớ ngoài: có thể mở rộng 64KB bộ nhớ chương trình (code) và
64KB bộ nhớ dữ liệu (data).
- 4 cổng xuất/ nhập (I/O Port) 8 bit
So sánh các MCU thuộc họ MCS51
- 2 bộ đếm/định thì 16 bit
Mã số Bộ nhớ Bộ nhớ Số
- Giao tiếp nối tiếp UART code data Timer
- Bộ điều khiển ngắt với 5 nguồn ngắt. on-chip on-chip
8051 4K ROM 128 byte 2
- Bộ xử lý bit với 210 bit có địa chỉ. 8031 0 128 byte 2
- Lệnh nhân/chia 4MC. 8052 8K ROM 256 byte 3
8032 0 256 byte 3
SƠ ĐỒ KHỐI MCU 8051
CHỨC NĂNG CÁC CHÂN (PINS) MCU 8051
MCU 8051 có dạng thông dụng là DIP40
gồm: 32 chân I/0 port, 6 chân điều khiển
và 2 chân nguồn
Port 0: (chân 32 đến 39) có 2 chức năng
* I/0 port: P0.0 – P0.7
* dồn kênh bus địa chỉ thấp và bus dữ
liệu AD0 – AD7
Port 1: (chân 1 đến 8) chỉ là chân I/0
port: P1.0 – P1.7. Ngoại trừ 8032/8052
dùng P1.0 và P1.1 làm ngõ vào Timer 2

Port 2: (chân 21 đến 28) có 2 chức năng


* I/0 port: P2.0 – P2.7
* bus địa chỉ cao A8 – A15
CHỨC NĂNG CÁC CHÂN (PINS) MCU 8051

Port 3: (chân 10 đến 17) có 2 chức năng


* I/0 port: P3.0 – P3.7
* chức năng chuyển đổi
Bit Tên Địa chỉ Chức năng chuyển đổi
bit
P3.0 RXD B0H Thu dữ liệu cổng nối tiếp
P3.1 TXD B1H Phát dữ liệu cổng nối tiếp
P3.2 INT0 B2H Ngắt ngoài 0
P3.3 INT1 B3H Ngắt ngoài 1
P3.4 T0 B4H Ngõ vào bộ đếm/timer 0
P3.5 T1 B5H Ngõ vào bộ đếm/timer 1
P3.6 WR B6H Điều khiển ghi bộ nhớ dữ liệu ngoài
P3.7 RD B7H Điều khiển đọc bộ nhớ dữ liệu ngoài
P1.0 T2 90H Ngõ vào ngoài bộ đếm/timer 2
P1.1 T2EX 91H Ngõ nạp lại/bắt bộ đếm/timer 2
CHỨC NĂNG CÁC CHÂN (PINS) MCU 8051

EA (External Access): (chân 31) là ngõ


vào để chọn thi hành chương trình từ bộ
nhớ trong hay bộ nhớ ngoài
* EA = 1 (nối lên nguồn +5V): 8051 thi
hành chương trình từ bộ nhớ nội 4KB
* EA = 0 (nối đất GND): 8051 thi hành
chương trình từ bộ nhớ ngoài 64KB

PSEN (Program Store Enable): (chân 29) là


ngõ ra dùng làm tín hiệu điểu khiển cho
phép đọc chương trình từ bộ nhớ ngoài.
PSEN nối với chân OE của ROM ngoài.
* Khi ở chu kỳ đọc lệnh thì PSEN = 0
* Khi chỉ sử dụng ROM nội thì PSEN = 1
CHỨC NĂNG CÁC CHÂN (PINS) MCU 8051
ALE (Address Latch Enable) : (chân 30) là ngõ ra, là tín hiệu phân
kênh (demux) bus địa chỉ và bus dữ liệu của Port 0 (AD0-AD7) khi
8051 truy xuất bộ nhớ ngoài.
* Nửa đầu chu kỳ truy xuất bộ nhớ, khi port 0 là A0 – A7 thì ALE = 1
* Nửa sau chu kỳ truy xuất bộ nhớ, khi port 0 là D0 – D7 thì ALE = 0
8051 gửi địa chỉ đến ROM

1
CHỨC NĂNG CÁC CHÂN (PINS) MCU 8051
ALE (Address Latch Enable) : (chân 30) là ngõ ra, là tín hiệu phân
kênh (demux) bus địa chỉ và bus dữ liệu của Port 0 (AD0-AD7) khi
8051 truy xuất bộ nhớ ngoài.
* Nửa đầu chu kỳ truy xuất bộ nhớ, khi port 0 là A0 – A7 thì ALE = 1
* Nửa sau chu kỳ truy xuất bộ nhớ, khi port 0 là D0 – D7 thì ALE = 0
ROM gửi lệnh về 8051

* Tần số ALE = 1/6 FCK


FCK = 12MHz -> FALE = 2MHz
10
74373 chốt địa chỉ đến ROM
CHỨC NĂNG CÁC CHÂN (PINS) MCU 8051
RST (Reset) : (chân 9) ngõ vào RST
ở mức cao ít nhất 2 chu kỳ máy
(MC) thì 8051 reset; các thanh ghi
bên trong nạp giá trị khởi động lại
hệ thống. Sau khi reset để hệ thống
hoạt động bình thường thì RST = 0.
XTAL 1, XTAL 2: (chân 18 và 19) 2 ngõ vào dao động trên chip, kết hợp với thạch
anh. Tần số thạch anh thường dùng là 12MHz. Có thể dùng nguồn dao động ngoài

a) Dao động trên chip với bộ thạch anh b) Dao động ngoài cấp cho MCU

VCC, VSS: (chân 40, 20) nối nguồn VCC = +5V và nối đất VSS = 0V
CẤU TRÚC CỔNG XUẤT/NHẬP (I/0 PORT)
* 4 I/O port: P0, P1, P2 và P3, mỗi port 8 bit; có thể giao tiếp trực tiếp với
ngoại vi chuẩn TTL. Các chân port có thể sử dụng riêng lẻ (P1.0 – P1.7)
* Mạch bên trong của chân port: ngoại trừ Port 0 không có điện trở kéo lên bên trong
* Xuất (OUT): dữ liệu từ CPU ghi vào
chốt D, ngõ ra Q điều khiển FET.
- ghi 0: Q = 0 làm FET dẫn,
chân port nối đất bằng 0.
- ghi 1: Q = 1 làm tắt FET, chân
port nối nguồn Vcc bằng 1.
* Nhập (IN): để đọc được chân port thì
trước đó cần ghi 1 vào chốt D để khóa
FET. Vì nếu trước đó chốt có Q = 0 thì
FET dẫn, chân port luôn bằng 0.
(Khi reset thì các chân port đều ghi 1)
* Tùy theo lệnh nhập, CPU có thể đọc chân port hoặc đọc chốt
ĐỊNH THÌ & CHU KỲ MÁY (MC Machine Cycle)
* Mạch dao động trên chip kết hợp với thạch anh tạo nguồn xung nhịp cho CPU.
Xung nhịp có vai trò đồng bộ và định thì
* Thời gian CPU thực hiện lệnh gọi là chu kỳ lệnh (instruction cycle)
* Mỗi chu kỳ lệnh có thể 1 hay nhiều chu kỳ máy (machine cycle)

* Mỗi chu kỳ máy (MC) gồm 6 trạng thái (state); 1 trạng thái (state) có thời
gian bằng 2 chu kỳ xung nhịp Tclock
1 MC = 12 Tclock = 12/Fosc

Vd: Fosc = 12MHz: 1MC = 12. Tclock = 12/12MHz = 1µs


TỔ CHỨC BỘ NHỚ
MCU 8051 tổ chức bộ nhớ theo kiến trúc Harvard: không gian bộ nhớ
chương trình (program memory) và bộ nhớ dữ liệu (data memory) là riêng biệt.

FFFFh FFFFh

External

PROGRAM MEMORY DATA MEMORY


External
(Bộ nhớ chương trình) (Bộ nhớ dữ liệu)
1000h
0FFFh
FFh
EA = 0 EA = 1
External Internal Internal
4KB
0000h 00h 0000h

PSEN RD WR
TỔ CHỨC BỘ NHỚ

BỘ NHỚ NỘI (Internal Memory)

@ BỘ NHỚ CHƯƠNG TRÌNH (ROM nội)


8051 có 4KB để chứa chương trình,
địa chỉ làm việc 0000h – 0FFFh.
Để chạy chương trình ở ROM nội
thì chân EA = 1

@ BỘ NHỚ DỮ LIỆU (RAM nội)


* RAM có địa chỉ thấp (00h – 7Fh)
* Thanh ghi chức năng đặc biệt
SFR - Special Function Register
(80h – FFh)
TỔ CHỨC BỘ NHỚ
RAM NỘI có địa chỉ thấp (00h – 7Fh): có 128 byte.
Các byte ô nhớ được truy xuất qua địa chỉ trực tiếp
8 bit (byte address) hoặc gián tiếp qua thanh ghi.
1. Vùng RAM đa dụng (30h – 7Fh) có 80 byte
2. Vùng RAM có địa chỉ bit (20h – 2Fh) có 16 byte: các
bit trong mỗi byte ô nhớ có thể được truy xuất bằng
địa chỉ riêng goi là địa chỉ bit (bit address)
- Có 16 x 8 = 128 bit có địa chỉ bit là 00h – 7Fh
- Công thức xác định địa chỉ bit i của ô nhớ có địa chỉ
byte X: (X – 20h) x 8 + i (với i là số thứ tự của bit
trong 1 byte ô nhớ, có giá trị từ 0 đến 7)
Vd: địa chỉ bit 3 của ô nhớ có địa chỉ 25h:
(25h – 20h) x 8 + 3 = 43 = 2Bh
- Cách biểu diễn khác với địa chỉ bit: địa chỉ byte . i
Vd: địa chỉ bit 3 của ô nhớ có địa chỉ 25h: 25h.3
- Có nhóm lệnh xử lý bit truy xuất 1 bit qua địa chỉ bit
TỔ CHỨC BỘ NHỚ
3. Vùng Bank thanh ghi (00h – 1Fh) có 32 byte
- Chia thành 4 bank, mỗi bank có 8 ô nhớ:
Bank 0: có địa chỉ 00h – 07h
Bank 1: có địa chỉ 08h – 0Fh
Bank 2: có địa chỉ 10h – 17h
Bank 3: có địa chỉ 18h – 1Fh
- Mỗi bank có 8 thanh ghi R0, R1, R2, R3, R4,
R5, R6, R7 tương ứng với 8 ô nhớ theo thứ tự
địa chỉ byte tăng dần.
- Ngoài cách dùng địa chỉ byte, các thanh ghi
trong bank thanh ghi có thể truy xuất bằng
tên thanh ghi R0 – R7; nhưng mỗi thời điểm
chỉ cho phép trên 1 bank thanh ghi hiện hành.
- Có thể thay đổi bank thanh ghi hiện hành
bằng phần mềm. Mặc định bank 0 là bank
thanh ghi hiện hành.
TỔ CHỨC BỘ NHỚ
SFR – THANH GHI CHỨC NĂNG ĐẶC BIỆT
* gồm 21 ô nhớ làm SFR nằm trong vùng địa chỉ
cao của RAM nội (80h – FFh) .
* truy xuất SFR thì dùng địa chỉ byte, hay dùng tên của
SFR cũng tương đương với địa chỉ byte.
Vd: thanh ghi có địa chỉ byte là 88h có tên là TCON
* một số SFR có các bit có địa chỉ bit: là các SFR có số
hex thấp của địa chỉ byte là 0 hay 8.
- địa chỉ bit của LSB giống với địa chỉ byte thanh ghi;
địa chỉ các bit còn lại thì bằng địa chỉ byte cộng với số
thứ tự của bit.
- có 3 cách biểu diễn cho địa chỉ bit
Vd: địa chỉ bit: 8Ah 88h.2 TCON.2
- cách thứ 4: một số bit có ký hiệu riêng (tên riêng),
có thể dùng ký hiệu này thay cho địa chỉ bit.
TỔ CHỨC BỘ NHỚ : SFR
 Thanh ghi tích lũy ACC (Accumulator)
E0 E7 E6 E5 E4 E3 E2 E1 E0 ACC
- Dùng trong các lệnh thực hiện các phép toán số học – logic và lệnh truy
xuất bộ nhớ ngoài. Thanh ghi ACC được sử dụng mặc định (hiểu ngầm),
nên trong lệnh sẽ dùng ký hiệu là A.
- Trong các lệnh thực hiện các phép toán số học – logic, thanh ghi A là toán
hạng của phép toán, và sau khi thực hiện xong phép toán kết quả được lưu lại
vào A .
Vd: ADD A, R5 ; (A) ← (A) + (R5)
 Thanh ghi B
F0 F7 F6 F5 F4 F3 F2 F1 F0 B
được sử dụng mặc định (hiểu ngầm) chung với thanh ghi A ở 2 lệnh:
- MUL AB : A nhân với B, kết quả byte thấp lưu vào A, byte cao lưu vào B
- DIV AB : A chia B, kết quả phần nguyên lưu vào A, phần dư lưu vào B
TỔ CHỨC BỘ NHỚ : SFR
 Thanh ghi Từ trạng thái chương trình PSW (Program Status Word)
D0 D7 D6 D5 D4 D3 D2 D1 D0 PSW
Ký hiệu CY AC F0 RS1 RS0 OV - P

Bit Ký hiệu Địa chỉ bit Mô tả * PSW chứa các bit trạng
PSW.7 CY D7H Cờ nhớ (Carry) thái (gọi là các cờ - flag)
PSW.6 AC D6H Cờ nhớ phụ (Auxillary Carry)
PSW.5 F0 D5H Cờ 0 (Flag 0) * Ký hiệu của bit tương
PSW.4 RS1 D4H Bit 1 chọn bank thanh ghi đương với địa chỉ bit
PSW.3 RS0 D3H Bit 0 chọn bank thanh ghi
Vd: bit RS1
RS1 RS0 = 00 : bank0
0D4h
RS1 RS0 = 01 : bank1
0D0h.4
RS1 RS0 = 10 : bank2
RS1 RS0 = 11 : bank3
PSW.4
PSW.2 OV D2H Cờ báo tràn (Overflow)
(địa chỉ bit hay địa chỉ byte
PSW.1 - D1H Dự trữ có số hex cao là chữ cái thì
PSW.0 P D0H Cờ parity chẵn khi biểu diễn thêm số 0)
TỔ CHỨC BỘ NHỚ : SFR

D0 CY AC F0 RS1 RS0 OV - P PSW

* Cờ nhớ CY (Carry Flag): bit có địa chỉ D7h; có 2 công dụng


- Là bit nhớ trong phép toán cộng 8 bit hay là bit mượn trong phép toán trừ 8 bit
1 111 11 0 11 1 01
1100 0101 C5h 1110 0101 E5h
+ + - -
1001 1110 9Eh 1001 1010 9Ah
0110 0011 63 h 0100 1011 4B h
(CY) = 1 (AC) = 1 (CY) = 0 (AC) = 1
- Là bit được sử dụng hầu hết các lệnh xử lý bit, khi đó được cờ CY dùng mặc
định (hiểu ngầm) với ký hiệu là C
* Cờ nhớ phụ AC (Auxiliary Carry Flag): bit có địa chỉ D6h; giống CY là bit
nhớ/mượn nhưng trên 4 bit thấp của toán hạng
* Cờ 0 (F0): bit có địa chỉ D5h, là bit đa dụng có tên riêng
TỔ CHỨC BỘ NHỚ : SFR

D0 CY AC F0 RS1 RS0 OV - P PSW

0 0 : bank0
0 1 : bank1
1 0 : bank2
1 1 : bank3

* Các bit chọn bank thanh ghi RS1-RS0 (Register Bank Select Bits): bit
có địa chỉ D4h và D3h; dùng để chọn bank thanh ghi hiện hành (mặc
định ban đầu RS1 RS0 = 00: bank thanh ghi hiện hành là bank 0)

Để chọn bank thanh ghi hiện hành khác, dùng lệnh xử lý bit để thay
đổi RS1 và RS0
Vd: chọn Bank 2: SETB RS1 ; (RS1) = 1
CLR RS0 ; (RS0) = 0
TỔ CHỨC BỘ NHỚ : SFR

D0 CY AC F0 RS1 RS0 OV - P PSW

* Cờ báo tràn OV (Overflow Flag): bit có địa chỉ D2h.


- Dùng trong phép toán cộng/trừ trên toán hạng số có dấu 8 bit
- Cờ OV = 1 nếu như kết quả vượt quá phạm vi biểu diễn số có dấu 8 bit
(số 8 bit có dấu có giá trị: - 128 ÷ +127)
25h + 37
+ +
7Ch + 124
A1 h + 161
Cờ OV = 1 vì +161 vượt phạm vi có dấu 8 bit, kết quả A1h (-95) là sai
* Bit kiểm tra parity P (Parity Bit): bit có địa chỉ D0h. Là bit kiểm tra chẵn
(even parity): tổng số bit 1 có trong thanh ghi ACC và bit P phải là con số
chẵn.
Vd: (ACC) = 1001 1110 (P) = 1
TỔ CHỨC BỘ NHỚ : SFR
 Thanh ghi con trỏ ngăn xếp SP (Stack Pointer): thanh ghi có địa chỉ 81h

* Stack nằm trong vùng nhớ RAM nội có địa chỉ thấp (00h-7Fh)
* Truy xuất vùng stack bằng phương pháp định địa chỉ gián tiếp qua thanh
ghi SP. Nội dung thanh ghi SP chứa địa chỉ của ô nhớ đang là đỉnh ngăn xếp
(Top of stack - TOS). Giá trị ban đầu (SP) = 07h
- Cất data vào stack (PUSH): tăng (SP) lên 1, sau đó cất data vào ô nhớ
có địa chỉ là nội dung của thanh ghi SP (TOS tăng 1)

Vd: PUSH: cất data 45H vào STACK


09 18
TOS 08 45
87
SP 07
08
TOS 07 1D
06 FB

Khi cất data vào STACK, đỉnh ngăn xếp TOS tăng 1
TỔ CHỨC BỘ NHỚ : SFR
 Thanh ghi con trỏ ngăn xếp SP (Stack Pointer): thanh ghi có địa chỉ 81h
- Lấy data từ stack (POP): nội dung của ô nhớ có địa chỉ là nội dung của
thanh ghi SP là data được lấy, sau đó (SP) giảm bớt 1 (TOS giảm 1)
SP 0A
09
0B 18
Vd: POP: TOS 0A 2B
Data được lấy ra từ STACK là 2Bh TOS 09 62
08 F0
Khi lấy data từ STACK, đỉnh ngăn xếp TOS giảm 1
* Data được cất/lấy từ stack theo kiểu LIFO (Last In First Out)
* Stack được dùng trong các lệnh PUSH/POP, và khi thực thi chương trình con
* Sau khi reset thì mặc định (SP) = 07h, thì vùng stack là ram nội từ 08h ÷ 7Fh.
Ta có thể thay đổi vùng stack bằng lệnh.
Vd: chọn vùng Stack từ 60h ÷ 7Fh bằng lệnh MOV SP, #5Fh
TỔ CHỨC BỘ NHỚ : SFR
 Thanh ghi con trỏ dữ liệu DPTR (Data Pointer):
* Là thanh ghi 16 bit ghép từ thanh ghi DPH (Data Pointer High) có
địa chỉ 83h và thanh ghi DPL (Data Pointer Low) có địa chỉ 82h
* Dùng để chứa địa chỉ của ô nhớ ngoài cần truy xuất
Vd: MOVX A, @DPTR ; (A) ← ((DPTR))
 Các thanh ghi port P0, P1, P2, P3: có địa chỉ lần lượt 80h, 90h, A0h và B0h
* I/0 port kết nối trực tiếp với ngoại vi. Làm việc với ngoại vi thì
dùng thanh ghi port tương ứng I/O port kết nối với ngoại vi.
- Xuất data ra ngoại vi: dùng lệnh ghi data vào thanh ghi port
Vd: MOV P1, #00h ; xuất 8 bit 0 ra ngoại vi nối với Port 1
- Nhập data từ ngoại vi: dùng lệnh đọc thanh ghi port
Vd: MOV A, P2 ; nhập ngoại vi ở Port 2 về thanh ghi A
* Các thanh ghi port có địa chỉ mã hóa riêng từng bit, do vậy có thể
điều khiển ngoại vi riêng lẻ ở mỗi chân port; bằng cách sử dụng lệnh
xử lý bit trên bit của thanh ghi port (Vd: SETB P1.7)
TỔ CHỨC BỘ NHỚ : SFR

 Các thanh ghi Timer:


- TH0 (8Ch) _ TL0 (8Ah): 16 bit Timer 0
(Timer High 0 – Timer Low 0)
- TH1 (8Dh) _ TL1 (8Bh): 16 bit Timer 1
- TMOD (89h): chế độ hoạt động timer (Timer Mode)
- TCON (88h): điều khiển timer (Timer Control)
 Các thanh ghi cổng nối tiếp (Serial port registers):
- SBUF (99h): bộ đệm data nối tiếp (Serial data Buffer),
chứa data để phát nối tiếp và data thu được nối tiếp
- SCON (98h): điều khiển port nối tiếp (Serial port
Control) dùng chọn chế độ và điều khiển port nối tiếp
 Các thanh ghi ngắt (Interrupt registers):
- IE (A8h): cho phép ngắt (Interrupt Enable)
- IP (B8h): ưu tiên ngắt (Interrupt Priority)
TỔ CHỨC BỘ NHỚ : SFR
 Thanh ghi điều khiển nguồn PCON (Power Control):

87 SMOD - - - GF1 GF0 PD IDL PCON


* Các bit trong thanh ghi PCON không có địa chỉ bit
Bit Ký hiệu Mô tả
7 SMOD SMOD=1 baudrate x2 mode 1,2,3 cổng nối tiếp
6 - Không được định nghĩa
5 - Không được định nghĩa
4 - Không được định nghĩa
3 GF1 Cờ đa dụng bit 1
2 GF0 Cờ đa dụng bit 0
1 PD PD=1 giảm nguồn, thoát chỉ khi reset
0 IDL IDL=1 nghỉ,thoát chỉ khi ngắt/reset

* Bit SMOD: dùng để tăng gấp đôi tốc độ baud cho port nối tiếp
* Cờ đa dụng GF1, GF0 (General Purpose Flag): 2 cờ tùy ý người sử dụng
TỔ CHỨC BỘ NHỚ : SFR
* Bit chế độ nghỉ IDL (Idle mode): IDL = 1 làm MCU vào chế độ nghỉ (họ CMOS)
- Lệnh làm IDL=1 là lệnh cuối cùng được thực hiện trước khi MCU nghỉ
- Vào chế độ nghỉ: xung nhịp không cung cấp cho CPU, nhưng vẫn có cho các chức
năng ngắt, timer và port nối tiếp. Trạng thái CPU và nội dung thanh ghi được giữ
nguyên. Các chân port giữ nguyên mức logic. Các tín hiệu ALE và /PSEN ở mức cao.
- Chế độ nghỉ kết thúc khi có ngắt hay reset hệ thống. Khi đó bit IDL được xóa
* Bit chế độ giảm nguồn PD (Power down mode): PD = 1 làm MCU vào chế độ
giảm nguồn (họ CMOS)
- Lệnh làm PD=1 là lệnh cuối cùng được thực hiện trước khi MCU vào chế độ này
- Vào chế độ giảm nguồn: dao động trên chip và các chức năng bị dừng. Nội dung ram
trên chip giữ nguyên. Các chân port giữ nguyên mức logic. Các tín hiệu ALE và
/PSEN ở mức thấp.
- Chế độ giảm nguồn chỉ kết thúc khi reset hệ thống.
- Có thể giảm Vcc xuống 2V sau khi vào chế độ này. Phải hồi phục Vcc lên 5V ít nhất
10 chu kỳ xung nhịp trước khi chân RST về 0 (reset để thoát chế độ giảm nguồn)
TỔ CHỨC BỘ NHỚ

BỘ NHỚ NGOÀI (External Memory)


- Họ MCS-51 có khả năng mở rộng 64KB bộ nhớ chương trình và 64KB bộ nhớ
dữ liệu bên ngoài.
- Giao tiếp I/0 mở rộng như là 1 phần của không gian bộ nhớ dữ liệu (I/0 ánh xạ
bộ nhớ).
- Khi dùng bộ nhớ ngoài: Port 0 là
AD0 ÷ AD7 và Port 2 là A8 ÷ A15.

- Port 0 là port dồn kênh giữa bus địa


chỉ (A0 ÷ A7) và bus dữ liệu (D0 ÷ D7)

- Dùng mạch chốt 74373 có tín hiệu


điều khiển ALE để chốt 8 bit địa chỉ
thấp ở Port 0
TỔ CHỨC BỘ NHỚ
BỘ NHỚ NGOÀI (External Memory)
 BỘ NHỚ CHƯƠNG TRÌNH NGOÀI(External Code Memory)
MCU 8051 truy xuất bộ nhớ chương trình ngoài bởi tín hiệu PSEN
8051 EPROM

Port 0 D0 - D7

74373
EA
D Q A0 - A7
ALE G

Port 2 A8 - A15

PSEN OE

CS
TỔ CHỨC BỘ NHỚ
BỘ NHỚ NGOÀI (External Memory)
Định thì đọc bộ nhớ chương trình: thời gian MCU đọc lệnh từ bộ nhớ
chương trình gọi là chu kỳ nhận lệnh (opcode fetch)

Vd: Chu kỳ nhận lệnh của 1 lệnh 2 byte có thời gian thực hiện là 1
chu kỳ máy (MC): có 2 xung ALE và 2 byte lệnh được nhận
TỔ CHỨC BỘ NHỚ
BỘ NHỚ NGOÀI (External Memory)
 BỘ NHỚ DỮ LIỆU NGOÀI (External Data Memory)
MCU 8051 đọc/ghi bộ nhớ chương trình ngoài bởi tín hiệu RD và WR
8051 RAM

Port 0 D0 - D7

74373
EA + 5V
D Q A0 - A7
ALE G

Port 2 A8 - A15

RD OE
WR WE
CS
TỔ CHỨC BỘ NHỚ
BỘ NHỚ NGOÀI (External Memory)
Lệnh để truy xuất ram ngoài là MOVX với thanh ghi DPTR chứa địa chỉ ram
Định thì của lệnh đọc ram ngoài MOVX A, @DPTR: lệnh 1 byte tốn 2 MC

- Chu kỳ máy thứ 1 để đọc byte lệnh MOVX từ bộ nhớ chương trình
- Chu kỳ máy thứ 2 để thực thi lệnh MOVX để đọc data từ bộ nhớ dữ liệu,
có 1 xung ALE bị mất.
TỔ CHỨC BỘ NHỚ
BỘ NHỚ NGOÀI (External Memory)
MCU 8051 cho phép làm việc với bộ nhớ dữ liệu ngoài có dung lượng nhỏ là
256 byte, khi đó bus địa chỉ có 8 bit A0 – A7 nên chỉ dùng port 0
Lệnh MOVX dùng thanh ghi R0 hay R1 chứa địa chỉ ram ngoài cần truy xuất
8051 RAM

Port 0 D0 - D7

74373
EA + 5V
D Q A0 - A7
ALE G

Port 2

RD OE
WR WE
CS
TỔ CHỨC BỘ NHỚ
BỘ NHỚ NGOÀI (External Memory)
 GIẢI MÃ ĐỊA CHỈ (Address Decoding)
Nếu MCU 8051 làm việc với nhiều chip bộ nhớ ROM hay RAM thì cần có mạch
giải mã địa chỉ. Mạch giải mã địa chỉ có nhiệm vụ phân chia các vùng địa chỉ làm
việc khác nhau cho từng chip nhớ.
Vd: Thiết kế mạch giải mã địa chỉ cho các chip ROM 2764 (8KB) và chip RAM
6264 (8KB)
- Không gian bộ nhớ ngoài là 64KB có 16 bit địa chỉ A0 – A15, vùng địa chỉ từ
0000h - FFFFh
* Bộ nhớ chương trình 64KB = 8 x 8KB dùng 8 ROM 2764
* Bộ nhớ dữ liệu 64KB = 8 x 8KB dùng 8 RAM 6264
- ROM/RAM 8KB: có 13 bit địa chỉ A0 – A12
- Sử dụng 3 bit địa chỉ cao A15 A14 A13 làm mạch giải mã địa chỉ
TỔ CHỨC BỘ NHỚ
BỘ NHỚ NGOÀI (External Memory)

Mạch giải mã tạo các tín hiệu chọn chip (CS0, CS1, .. CS7) cho 8 chip nhớ 8KB
Bản đồ địa chỉ bộ nhớ cho 8 vùng nhớ mỗi vùng 8KB (CS0, CS1, .. CS7)
Tín hiệu
A A A A A A A A8 A7 A6 A5 A4 A3 A2 A1 A0 Vùng địa chỉ
chọn chip 15 14 13 12 11 10 9
/CS0 0 0 0 X X X X X X X X X X X X X 0000h - 1FFFh
/CS1 0 0 1 X X X X X X X X X X X X X 2000h - 3FFFh
/CS2 0 1 0 X X X X X X X X X X X X X 4000h - 5FFFh
/CS3 0 1 1 X X X X X X X X X X X X X 6000h - 7FFFh
/CS4 1 0 0 X X X X X X X X X X X X X 8000h - 9FFFh
/CS5 1 0 1 X X X X X X X X X X X X X A000h - BFFFh
/CS6 1 1 0 X X X X X X X X X X X X X C000h - DFFFh
/CS7 1 1 1 X X X X X X X X X X X X X E000h - FFFFh
TỔ CHỨC BỘ NHỚ
BỘ NHỚ NGOÀI (External Memory)

ADDRESS BUS (A0 – A15)

Sử dụng IC decoder 74138 DATA BUS (D0 – D7)

để làm mạch giải mã địa chỉ:

- A15 A14 A13 làm ngõ vào C B A


- 8 ngõ ra là các tín hiệu chọn chip

- Bộ nhớ chương trình và bộ nhớ


dữ liệu dùng chung tín hiệu chọn
chip C
B
Y0
Y1
A Y2
Y3
Y4
G1 Y5
G2A Y6
G2B Y7
TỔ CHỨC BỘ NHỚ
BỘ NHỚ NGOÀI (External Memory)

 PHỦ LẤP vùng dữ liệu và chương trình ngoài


- Trong số ứng dụng cần sửa đổi chương trình nhiều lần, có thể dùng bộ nhớ
dữ liệu để chứa chương trình
- Dùng RAM để chứa chương trình: phân riêng vùng nhớ cho chương trình
và dữ liệu
- Chương trình đưa vào RAM dùng WR
- Đọc RAM: đọc chương trình dùng PSEN và đọc dữ liệu dùng RD

RAM
WR WE

RD
OE
PSEN
TÍNH NĂNG MỞ RỘNG CỦA 8032/8052

* 8052 có 8KB ROM nội

* Có thêm 128B RAM nội có địa chỉ 80h – FFh


Để truy xuất vùng RAM này, dùng
định địa chỉ gián tiếp

* Có thêm Timer 2 (16 bit) Thanh ghi Địa chỉ Mô tả Truy xuất bit
T2CON 0C8H Điều khiển Có
Dùng 5 SFR để lập trình RCAP2L 0CAH Bắt byte thấp Không
cho Timer 2 RCAP2H 0CBH Bắt byte cao Không
TL2 0CCH Byte thấp Timer2 Không
TH2 0CDH Byte cao Timer2 KHông
HOẠT ĐỘNG RESET
Mạch thực hiện reset hệ thống cho MCU Thanh ghi Nội dung
PC 0000H
A 00H
B 00H
PSW 00H
SP 07H
DPTR 0000H
P0-P3 FFH
IP(8031/51) XXX00000B
IP(8032/52) XX000000B
Khi ngõ vào RST ở mức cao ít nhất 2 chu kỳ IE(8031/51) 0XX00000B
máy (MC) thì 8051 reset; các thanh ghi bên IE(8032/52) 0X0000000B
Các reg. Timer 00H
trong nạp giá trị khởi động lại hệ thống.
SCON 00H
- (PC) = 0000h: chạy lại từ ô nhớ địa chỉ 0000h
SBUF 00H
- (PSW) = 00h: bank thanh ghi hiện hành là Bank 0 PCON(HMOS) 0XXXXXXXB
PCON(CMOS) 0XXX0000B
- (SP) = 07h: vùng stack từ 80h – 7Fh
- Các thanh ghi Port ghi FFh: các chân port sẵn sang chức năng nhập data (IN)
HEÁT CHÖÔNG 2

CHAØO TAÏM BIEÄT CAÙC EM & HEÏN GAËP LAÏI

You might also like