1. Nội dung: Chương 2: Cấu trúc họ vi điều khiển 8051
• Chương 1: Giới thiệu về Vi xử lý 2.1. Giới thiệu chung
• Chương 2: Giới thiệu về cấu trúc của Họ Vi điều • Cùng với việc phát triển các VXL cho hệ máy tính, các
khiển 8051 hãng cũng chế tạo các hệ vi xử lý chuyên dụng
• Chương 3: Khảo sát tập lệnh và lập trình Vi điều ⇒ Vi điều khiển (VĐK).
khiển 8051
• Chương 4: Hoạt động của bộ định thời • VĐK (MicroController) là một thiết bị tích hợp các
• Chương 5: Hoạt động ngắt phần tử của một hệ vi xử lý lên trên cùng một Chip.
• Chương 6: Hoạt động truyền thông nối tiếp
• Chương 7: Thiết kế giao tiếp
Chương 2: Cấu trúc họ vi điều khiển 8051
2.1. Giới thiệu chung
VĐK cũng có thể có:
– Timer : phục vụ cho các hoạt động có tính chu kỳ.
– Truyền tin nối tiếp : dùng để kết nối với các thiết
bị khác.
– ADC : cho phép xử lý các tín hiệu tương tự - số.
2. Chương 2: Cấu trúc họ vi điều khiển 8051
2.2. Giới thiệu chung về họ VĐK 8051
• Hiện nay có hơn 40 công ty sản xuất các loại vi điều
khiển khác nhau của họ 8051.
• Một số công ty có trên 40 version 8051.
• Trên 100 triệu vi điều khiển 8051 được bán ra mỗi
năm.
• Họ VĐK MCS-51 được phát triển bởi Intel năm 1980
và sau đó các nhà sản xuất khác như: Siemens, Philips,
Atmel,…
Tóm tắt một số đặc điểm chính của họ 8051: MCS-51 bao gồm nhiều phiên bản khác nhau, mỗi
4K bytes ROM trong. phiên bản sau tăng thêm một số thanh ghi điều khiển hoạt
động của MCS-51.
128 bytes RAM trong.
4 cổng I/O 8-bit. Đặc tính 8051 8031 8751 8052 8032 8752
2 bộ định thời 16 bit. ROM trên chíp 4K byte 0K 4K 8K 0K 8K byte
Giao tiếp nối tiếp. RAM 128 byte 128 byte 128 byte 256 byte 256 byte 256 byte
Quản lý được 64K bộ nhớ chương trình bên ngoài. Bộ định thời 2 2 2 3 3 3
Quản lý được 64K bộ nhớ dữ liệu bên ngoài. Chân vào ra 32 32 32 32 32 32
Thao tác trên các Bit riêng rẽ.
210 vị trí nhớ được định địa chỉ Bit.
Thực hiện phép nhân/chia trong 4µs.
µ
3. Cấu trúc bên
trong của MCS-51
Vi điều khiển AT89C51 2.3. Sơ đồ chân
• AT89C51 là vi điều khiển do Atmel sản xuất, chế tạo
theo công nghệ CMOS.
• 4 KB EEPROM (Electrical Erase Programmable Read
Only Memory), có khả năng tới 1000 chu kỳ ghi xoá.
4. 2.3. Sơ đồ chân
Chân nguồn: Vcc, GND.
Chân nguồn:
Các cổng vào/ra: P0, P1, P2, P3.
Vcc = 5V ± 20% : (chân số 40)
Chân truy xuất bộ nhớ ngoài: /EA.
Chân cho phép bộ nhớ chương GND = 0V : (chân số 20)
trình: /PSEN.
Chân cho phép chốt địa chỉ: ALE.
Chân Reset: RST.
Các chân XTAL1 và XTAL2.
Các cổng vào/ra Các cổng vào/ra
• P0 : gồm các chân từ 32 – 39, có 2 công dụng: • P1 : gồm các chân từ 1-8: Chỉ có chức năng
xuất/nhập.
Xuất / nhập: dùng cho các thiết kế nhỏ.
Bus địa chỉ / dữ liệu đa hợp: khi dùng các Tuy nhiên đối với các VĐK: 8032, 8052, 8752 (có
thiết kế lớn, đòi hỏi phải sử dụng bộ nhớ sử dụng bộ định thời thứ 3) thì P1.0 và P1.1 còn làm
ngoài thì Port 0 vừa là bus dữ liệu (8 bit) vừa ngõ vào cho bộ định thời thứ 3.
là bus địa chỉ (8 bit thấp).
5. Các cổng vào/ra • P3 : gồm các chân từ 10 – 17, có 2 công dụng:
Xuất / nhập.
• P2 : gồm các chân từ 21 – 28, có 2 công dụng:
Các công dụng khác được mô tả như sau:
Xuất / nhập: dùng cho các thiết kế nhỏ. Bit Tên Chức năng
P3.0 RxD Ngõ vào port nối tiếp
Bus địa chỉ / dữ liệu đa hợp: khi dùng các P3.1 TxD Ngõ ra port nối tiếp
thiết kế lớn, đòi hỏi phải sử dụng bộ nhớ P3.2 /INT0 Ngắt ngoài 0
ngoài thì Port 2 vừa là bus dữ liệu (8 bit) vừa P3.3 /INT1 Ngắt ngoài 1
là bus địa chỉ (8 bit cao). - P3.4 T0 Ngõ vào của bộ định thời 0
P3.5 T1 Ngõ vào của bộ định thời 1
P3.6 /WR Điều khiển ghi dữ liệu lên bộ nhớ ngoài.
P3.7 /RD Điều khiển đọc từ bộ nhớ dữ liệu ngoài.
Chân truy xuất bộ nhớ ngoài: /EA (External Access) Chân cho phép bộ nhớ chương trình: /PSEN
(Program Store Enable)
• EA (chân 31) dùng để cho phép thực thi chương trình
từ ROM ngoài. • PSEN (chân 29): cho phép đọc bộ nhớ chương trình mở
rộng đối với các ứng dụng sử dụng ROM ngoài.
• Khi nối EA với Vcc (5V) , AT89C51 sẽ thực thi chương
trình từ ROM nội. • Thường được nối đến chân OE (Output Enable) của
ROM ngoài để đọc các byte mã lệnh.
• Ngược lại, khi nối EA với GND (0V) , AT89C51 sẽ thực
thi chương trình từ ROM ngoài.
• Khi 89x51 thi hành chương trình trong ROM nội, PSEN
• Ngoài ra, chân EA còn được dùng để nhận điện áp sẽ ở mức logic 1.
cho việc lập trình (Vpp) EPROM nội.
6. Chân Reset: RST
Chân cho phép chốt địa chỉ: ALE (Address Latch Enable)
• Ngõ vào Reset (chân 9): dùng để thiết lập trạng thái ban
• ALE/ PROG (chân 30) cho phép tách các đường địa chỉ và đầu (Reset) cho hệ thống.
dữ liệu tại Port 0 và Port 2.
• Để thực hiện Reset cần phải giữ ngõ vào RST ở mức cao ít
nhất 2 chu kỳ máy.
• Khi truy xuất bộ nhớ ngoài. ALE thường nối với
chân Clock của IC chốt (74373, 74573).
• Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao
động trên chip (12/6 = 2 MHz).
• Ngoài ra, chân này còn được dùng để nhận ngõ vào xung
lập trình cho ROM nội (PROG).
Các chân XTAL1 và XTAL2
• Ngõ vào và ngõ ra bộ dao động, được nối với mạch dao
động bên ngoài (thạch anh).
• Tần số thạch anh thường sử dụng cho AT89C51
khoảng 12Mhz.
7. 2.3. Tổ chức bộ nhớ 2.3. 1. Tổ chức bộ nhớ trong
Bộ nhớ của MCS-51 bao gồm: bộ nhớ trong và bộ nhớ ngoài Bộ nhớ trong của MCS-51 gồm ROM và RAM.
RAM bao gồm các vùng nhớ:
• Các bank thanh ghi (từ 00h –1Fh).
• Vùng có thể định địa chỉ hóa từng bit (20h – 2Fh).
• Vùng RAM đa mục đích (địa chỉ byte từ 30h – 7Fh).
• Các thanh ghi chức năng đặc biệt (từ 80h – 0FFh).
8. RAM Thanh ghi chức năng đặc biệt
Tổ chức bộ nhớ Tổ chức bộ nhớ dữ liệu
dữ liệu
Các bank thanh ghi:
• Có 4 bank thanh ghi có địa chỉ từ: 00h –1Fh.
• Mỗi bank có 8 thanh ghi 8 bit: R0 – R7.
Tổ chức bộ nhớ dữ liệu
Tổ chức bộ nhớ dữ liệu
Các bank thanh ghi:
Vùng RAM định địa chỉ từng bit: gồm 16 byte có địa chỉ
• Việc lựa chọn bank thanh ghi được thực hiện thông từ 20h – 2Fh (16 x 8 = 128 bit).
qua thanh ghi PSW (từ trạng thái chương trình).
Vùng RAM đa mục đích: gồm 80 byte có địa chỉ từ
• Các lệnh sử dụng bank thanh ghi sẽ có code ngắn hơn 30h – 7Fh. Vùng nhớ này, có thể truy xuất mỗi lần 8 bit
và tốc độ nhanh hơn các lệnh tương đương. bằng cách dùng chế độ địa chỉ trực tiếp hay gián tiếp.
Ví dụ: MOV A, R5 ; đọc nội dung tại địa chỉ 05H vào
thanh ghi A. (lệnh này chiếm 1byte).
MOV A, 05H ; (lệnh chiếm 2 byte).
9. Các thanh ghi chức năng đặc biệt (SFR – Special Các thanh ghi chức năng đặc biệt (SFR – Special
Function registers) Function registers)
Thanh ghi tích lũy (A hay Acc - Accumulator ): Thanh ghi B:
Là thanh ghi rất quan trọng của VĐK, có chức năng lưu
trữ dữ liệu khi tính toán, hầu hết các phép toán thực • Thanh ghi B dùng cho các phép toán nhân, chia và
hiện đều thông qua thanh ghi này. có thể dùng như một thanh ghi tạm, chứa các kết quả
trung gian.
Thanh ghi tích luỹ có thể truy xuất trực tiếp thông qua
địa chỉ E0h (byte) hay truy xuất từng bit thông qua địa VD: MUL AB; Nhân hai số nguyên 8 bit, kết quả lưu vào A, B
chỉ bit từ E0h đến E7h. ; A chứa kết quả byte thấp
; B chứa kết quả byte cao
VD: MOV A,#1
MOV 0E0h,#1 ; có cùng kết quả • Thanh ghi B có địa chỉ byte F0h và địa chỉ bit từ
Hay: SETB ACC.4 F0h – F7h.
SETB 0E4h ; cũng tương tự
Các thanh ghi chức năng đặc biệt (SFR) Hãy biểu diễn ngăn xếp và con trỏ ngăn xếp đối với
đoạn chương trình sau đây. Giả thiết vùng ngăn xếp là
Thanh ghi con trỏ Stack (SP – Stack Pointer): mặc định.
MOV R6, #25H
• SP là một thanh ghi 8 bit, có địa chỉ 81h. Được sử dụng MOV R1, #12H
để truy cập bộ nhớ ngăn xếp. SP chứa địa chỉ của dữ liệu MOV R4, #0F3H
hiện đang ở đỉnh của ngăn xếp. PUSH 6
PUSH 1
• Ngăn xếp là một vùng bộ nhớ RAM được CPU sử dụng PUSH 4 Sau PUSH 6 Sau PUSP 1 Sau PUSH 4
để lưu thông tin tạm thời. Thông tin này có thể là dữ 0B 0B 0B 0B
liệu, có thể là địa chỉ. 0A 0A 0A 0A F3
• Khi VĐK được cấp nguồn thì SP có giá 07h. SP có thể 09 09 09 12 09 12
được khởi động lại. 08 08 25 08 25 08 25
Ví dụ: MOV SP, #5Fh; Vùng Stack bắt đầu có địa chỉ 60h. Bắt đầu SP = 07 SP = 08 SP = 09 SP = 0A
10. Khảo sát ngăn xếp và hãy trình bày nội dung của các thanh Các thanh ghi chức năng đặc biệt (SFR)
ghi và SP sau khi thực hiện đoạn chương trình sau đây:
POP 3 ; Lấy ngăn xếp trở lại R3 Thanh ghi con trỏ dữ liệu (DPTR – Data Pointer):
POP 5 ; Lấy ngăn xếp trở lại R5
• SP là một thanh ghi 16 bit, có địa chỉ 82h (DPL) và 83h
POP 2 ; Lấy ngăn xếp trở lại R2
Sau POP3 Sau POP 5 Sau POP 2
(DPH). Được sử dụng để truy xuất bộ nhớ chương trình
0B 54 0B 0B 0B ngoài hoặc bộ nhớ dữ liệu ngoài.
0A F9 0A F9 0A 0A Ví dụ: MOV A, #55h; nạp giá trị 55H vào A.
09 76 09 76 09 76 09 MOV DPTR, #1000H; nạp địa chỉ ô nhớ vào DPTR
08 6C 08 6C 08 6C 08 6C
MOV @DPTR, A; nạp giá trị 55H vào ô nhớ có địa
Bắt đầu SP = 0B SP = 0A SP = 09 SP = 08
chỉ chứa trong DPTR(1000H)
Các thanh ghi chức năng đặc biệt (SFR) Các thanh ghi chức năng đặc biệt (SFR)
Các Thanh ghi port Các thanh ghi định thời
Dùng để định các khoảng thời gian hoặc đếm các sự kiện.
Các thanh ghi P0 tại địa chỉ 80h, P1 tại địa chỉ 90h, P2, tại
MCS – 51 có 2 thanh ghi định thời 16 bit:
địa chỉ A0h, P3 tại địa chỉ B0h là các thanh ghi chốt cho 4
port xuất / nhập (Port 0, 1, 2, 3). • Timer 0: TL0 (8Ah) và TH0 (8Ch).
• Timer 1: TL1 (8Bh) và TH1 (8Dh).
Tất cả các thanh ghi này đều cho phép định địa chỉ bit:
P0 từ 80h – 87h, P1 từ 90h – 97h, P2 từ A0h – A7h, P3 từ Hoạt động định thời được thiết lập bởi các thanh ghi:
B0h – B7h. • TMOD (Timer Mode Register): thanh ghi chế độ định thời có
địa chỉ 89h.
Các địa chỉ bit này có thể thay thế bằng toán tử.
Ví dụ như: 2 lệnh sau là tương đương: • TCON (Timer Control register) có địa chỉ 88h, thanh ghi điều
SETB P0.0 khiển định thời.
SETB 80h
11. Các thanh ghi chức năng đặc biệt (SFR) Các thanh ghi chức năng đặc biệt (SFR)
Các thanh ghi của port nối tiếp Các thanh ghi ngắt (Interrupt Register)
Dùng để truyền thông với các thiết bị nối tiếp như: Modem, Dùng để điều khiển, thiết lập các chế độ khi lập trình ngắt.
VĐK,…
Thanh ghi ngắt gồm có 2 thanh ghi:
Thanh ghi port nối tiếp gồm có 2 thanh ghi:
• IE (Interrupt Enable Register – Thanh ghi cho phép ngắt)
• SBUF (Serial Data Buffer – Bộ đệm dữ liệu nối tiếp) có địa có địa chỉ A8h.
chỉ 99h, dùng để lưu trữ dữ liệu đi và đọc dữ liệu truyền về.
• IP (Interrupt Priority Register – Thanh ghi ưu tiên ngắt)
• SCON (Serial Port Control register) có địa chỉ 98h, có chức có địa chỉ B8h, có chức năng thiết lập các ngắt ưu tiên.
năng điều khiển việc truyền thông nối tiếp.
Các thanh ghi chức năng đặc biệt (SFR) Các thanh ghi chức năng đặc biệt (SFR)
Thanh ghi điều khiển nguồn (PCON – Power Control Từ trạng thái chương trình (PSW – Program State Word)
Register) Có địa chỉ D0h, chứa các bit trạng thái có chức năng:
Có địa chỉ 87h, được định địa chỉ từng bit, dùng để điều Bit Ký hiệu Địa chỉ Mô tả Bit
khiển các chế độ nguồn: PSW.7 CY D7h Cờ nhớ
PSW.6 AC D6h Cờ nhớ phụ
• Chế độ giảm nguồn. PSW.5 F0 D5h Cờ 0
PSW.4 RS0 D4h Chọn bank thanh ghi (Bit 1)
• Chế độ nghỉ PSW.3 RS1 D3h Chọn bank thanh ghi (Bit 0)
PSW.2 OV D2h Cờ tràn
PSW.1 - D1h Dự trữ
PSW.0 P D0h Cờ kiểm tra chẵn lẻ