Đề cương bài giảng vi xử lý - 8051 - Pdf 17

Đề cương bài giảng vi xử lý - 8051
Đề cương
Bài giảng vi xử lý 8051
Bộ môn Công Nghệ Cơ Điện Trang 1
Đề cương bài giảng vi xử lý - 8051
Chương 1. TỔNG QUAN VỀ HỆ VI XỬ LÝ
1.1. Kiến trúc hệ vi xử lý
1.1.1. Sơ đồ khối tổng quát và chức năng của một bộ vi xử lý.
Sơ đồ khối :
Hình 1.1. Cấu trúc tổng quát của một hệ vi xử lý
Các khối chức năng chính của hệ vi xử lý bao gồm:
- Khối xử lý trung tâm (CPU)
- Bộ nhớ bán dẫn (memory, M)
- Khối phối ghép với các thiết bị ngoại vi
- Các bus truyền thông tin
Ba khối chức năng: CPU, M, I/O liên hệ với nhau thông qua tập các đường dây để
truyền tín hiệu gọi chung là bus hệ thống. Bus hệ thống bao gồm 3 bus thành phần ứng
với các tín hiệu địa chỉ, dữ liệu và điều khiển ta có bus địa chỉ, bus dữ liệu và bus điều
khiển.
Chức năng các khối :
- Bộ xử lý trung tâm CPU (Central Processing Unit ) là trung tâm đầu não của hệ, nó có
chức năng thu thập, xử lý thông tin và điều khiển mọi hoạt động của hệ vi xử lý.
- Bộ nhớ trung tâm có nhiệm vụ lưu trữ thông tin dữ liệu trước khi CPU xử lý
- Thiết bị I/O thực hiện việc nhận dữ liệu từ các kênh thông tin từ bên ngoài vào để cho
CPU xử lý và xuất ra các tín hiệu điều khiển hệ thống
- Các kênh thông tin hay Bus hệ thống là cầu nối liên kết giữa các khối trong đó thực hiện
3 việc chính là liên kết các Bus địa chỉ, Bus điều khiển và Bus dữ liệu. Một bus là tập
hợp các dây dẫn mang thông tin có cùng một mục đích. Việc truy xuất tới một mạch xung
quanh CPU sử dụng ba bus: bus địa chỉ, bus điều khiển và bus dữ liệu. Với mỗi thao tác
đọc hoặc ghi CPU xác định rõ vị trí của dữ liệu hoặc lệnh bằng cách đặt một địa chỉ lên
bus địa chỉ, sau đó tích cực một tín hiệu trên bus điều khiển để chỉ ra thao tác là đọc hay

BUS ngoài
Đơn vị thực hiện EU
(Execution Unit)
Đơn vị ghép nối- BIU
(Bus Interface Unit)

Hàng đợi lệnh

Các
thanh ghi
đa năng
Thanh ghi
con trỏ,
chỉ số
AX
BX
CX
DX
SP
BP
SI
DI
CS
DS
SS
ES
IP
Toán hạng

Khối điều

Tóm lại, khi CPU hoạt động EU sẽ cung cấp thông tin về địa chỉ cho BIU để khối này
đọc lệnh và dữ liệu, còn bản thân nó thì giải mã lệnh và thực hiện lệnh.
Trong BIU còn có một bộ nhớ đệm lệnh (hàng đợi lệnh) với dung lượng 4 byte dùng
để chứa các mã lệnh đọc được nằm sẵn để chờ EU xử lý. Đây là cấu trúc mới được cấy
vào bộ vi xử lý 8088 do việc Intel đưa cơ chế xử lý xen kẽ liên tục dòng mã lệnh
(instruction pipelining) vào ứng dụng trong các bộ vi xử lý thế hệ mới. Pipeline là một cơ
chế đã được ứng dụng từ những năm 60 trong các máy lớn. Cơ chế này hoạt động như
sau: Hoạt động của CPU gồm 3 giai đoạn đọc mã lệnh (opcode fetch), giải mã lệnh
(decode) và thực hiện lệnh (execution). Bộ vi xử lý 8088 sử dụng cơ chế xử lý xen kẽ
liên tục dòng mã lệnh thì CPU được chia làm hai khối có sự phân chia công việc cho từng
khối. Việc đọc mã lệnh do BIU thực hiện, việc giải mã lệnh và thực hiện lệnh là do khối
EU đảm nhiệm. Các khối chức năng này có khả năng làm việc đồng thời và các bus sẽ
liên tục được sử dụng. Trong khi EU lấy mã lệnh từ bộ đệm 4 byte để giải mã thì BIU
vẫn có thể đọc mã lệnh từ bộ nhớ chính rồi đặt chúng vào bộ nhớ đệm lệnh đã nêu. Bộ
đệm lệnh này làm việc theo kiểu vào trước – ra trước. Điều này làm tăng tốc độ của bộ vi
xử lý. Tuy nhiên nếu trong bộ đệm lệnh chứa các mã lệnh CALL hay JMP thì nội dung
cũ của bộ đệm sẽ bị xóa và thay thế vào đó là nội dung mới được nạp vào bởi các mã
lệnh mới do lệnh nhảy hoặc lệnh con quyết định. Việc này tiêu tốn nhiều thời gian hơn so
với việc xử lý theo kiểu tuần tự.
Không có pipelining
F1 D1 E1 F2 D2 E2 F2 D3 E3
Có pipelining
F1 D1 E1
F2 D2 E2
F3 D3 E3
Hình 1.3. Dòng lệnh thường và dòng lệnh xen kẽ liên tục
• Các thanh ghi đoạn (segment register, 16 bit)
Khối BIU đưa ra trên bus địa chỉ 20 bus địa chỉ, như vậy 8088 có khả năng phân biệt
được 2
20

từ nội dung của cặp thanh ghi đó nó tạo ra địa chỉ vật lý theo công thức sau.
Địa chỉ vật lý = thanh ghi đoanh *16 + thanh ghi lệnh
Việc dùng hai thanh ghi để ghi nhớ thông tin về địa chỉ thực chất tạo ra một loại địa
chỉ gọi là địa chỉ logic và được ký hiệu như sau:
Thanhghiđoạn : thanhghilệch (segment : offset)
Địa chỉ segment : offset là logic vì nó tồn tại dưới dạng giá trị của các thanh ghi cụ
thể bên trong CPU và khi cần thiết truy nhập ô nhớ nào đó thì nó phải được đổi ra địa chỉ
vật lý để rồi được đưa lên bus địa chỉ. Việc chuyển này do một bộ tạo địa chỉ thực hiện.
Ví dụ: cặp CS:IP sẽ chỉ ra địa chỉ của lệnh sắp thực hiện trong đoạn mã. Nếu tại một
thời điểm nào đó ta có CS=F000H và IP=FFF0H thì
CS:IP~F000H*16+FFF0H = F0000H + FFF0H = FFFF0H
Địa chỉ FFFF0H chính là địa chỉ khởi động của 8088. Dấu ‘~’ là để chỉ sự tương ứng.
Địa chỉ các ô nhớ thuộc các đoạn khác cũng có thể tính được theo cách tương tự như vậy.
Vì vậy khi cần nói đến địa chỉ của môt ô nhớ ta có tể sử dụng cả địa chỉ logic lẫn địa chỉ
vật lý. Vì bao giờ cũng tồn tại sự tương ứng giữa hai loại địa chỉ này (thông qua bộ tạo
địa chỉ Σ).
Trước khi nói đến các thanh ghi khác ta nói thêm chút ít về tính đa trị của các thanh
ghi đoạn và thanh ghi lệch trong địa chỉ logic ứng với một địa chỉ vật lý. Điều này cũng
nói lên tính linh hoạt cua cơ chế segment : offset trong việc định địa chỉ của 8088/8086.
Nhìn vào các giá trị cuối cùng của địa chỉ vật lý, ta thấy có thể tạo ra địa chỉ đó từ nhiều
giá trị khác nhau cua thanh ghi đoạn và thanh ghi lệch.
Ví dụ: địa chỉ vật lý 12345H có thể được tạo ra từ các giá trị
Thanh ghi đoạn Thanh ghi lệch
1000H
1200H
1004H
0300H

2345H
0345H

hiện nằm trong đoạn mã CS. Địa chỉ đầy đủ của lệnh tiếp theo này ứng với
CS:IP và được xác định theo cách đã nêu ở trên.
- BP (con trỏ cơ sở-base pointer) BP luôn trỏ vào một dữ liệu nằm trong đoạn
ngăn xếp SS. Địa chỉ đầy đủ của một phần tử trong đoạn ngăn xếp ứng với
SS:BP và được xác định theo cách đã nói ở trên.
- SI (chỉ số gốc hay nguồn – source index) SI chỉ vào dữ liệu trong đoạn dữ liệu
DS mà địa chỉ cụ thể đầy đủ ứng với DS:SI và được xác định theo cách đã nêu
ở trên
- DI (Chỉ số đích – destination index) DI chỉ vào dữ liệu trong đoạn dữ liệu DS
mà địa chỉ cụ thể đầy đủ ứng với DS:SI và được xác định như cách đã nói ở
trên
Chú ý: Riêng trong các lệnh thao tác với dữ liệu kiểu chuỗi thì cặp ES:DI luôn ứng với
địa chỉ của phần tử thuộc chuỗi đích, còn cặp DS:SI ứng với địa chỉ của phần tử thuộc
chuỗi gốc.
• Thanh ghi cờ FR (flat register)
Đây là thanh ghi khá đặc biệt trong CPU, mỗi bit của nó được dùng để phản ánh một
trạng thái nhất định của kết quả phép toán do ALU thực hiện hoặc một trạng thái hoạt
động của EU. Dựa vào các cờ này người lập trình có thể có các lệnh thích hợp tiếp theo
cho bộ vi xử lý (các lệnh nhảy có điều kiện). Thanh ghi cờ gồm 16 bit nhưng người ta chỉ
dùng hết 9 bit của nó để làm các bit cờ.
x x x x O D I T S Z x A x P x C
Hình 1.4. Sơ đồ thanh ghi cờ của bộ vi xử lý 8086/88
Các cờ cụ thể:
- C hoặc CF (Carry Flat) cờ nhớ, CF = 1 khi có nhớ hoặc mượn từ MSB.
Bộ môn Công Nghệ Cơ Điện Trang 6
Đề cương bài giảng vi xử lý - 8051
- P hoặc FP (Parity Flat) cờ parity phản ánh tính chẵn lẻ của tổng số bit 1 có trong kết
quả. PF = 1 khi tổng số bit 1 có trong kết quả là chẵn (even parity) PF = 0 khi tổng số bit
1 trong kết quả là lẻ.
- A hoặc AF (auxiliary carry flat) cờ nhớ phụ rất có ý nghĩa khi ta làm việc với các số

chính nó (SF) hoặc ngược lại. Điều này có thể tổng quát hóa cho các trường hợp làm việc
với số bù hai có dấu với độ dài 16/32 bit.
1.1.3. Quá trình tìm nạp lệnh và thực thi lệnh của CPU
Việc tìm nạp một lệnh từ Ram hệ thống là một trong những thao tác cơ bản nhất mà
CPU phải thực hiện. Quá trình tìm nạp lệnh được thực hiện theo trình tự như sau:
Bộ môn Công Nghệ Cơ Điện Trang 7
Đề cương bài giảng vi xử lý - 8051
Hình 1.5. Hoạt động của Bus cho chu kỳ tìm nạp lệnh
- Nội dụng của PC được đặt lên bus địa chỉ.
- Tín hiệu điều khiển READ được xác lập, chuyển sang trạng thái tích cực.
- Dữ liệu (opcode của lệnh) được đọc từ RAM và đưa lên bus dữ liệu.
- opcode được chốt vào thanh ghi lệnh bên trong CPU
- PC được tăng để chuẩn bị tìm nạp lệnh kế tiếp từ bộ nhớ.
Giai đoạn thực thi lệnh bao gồm việc giải mã opcode và tạo ra các tín hiệu điều khiển,
các tín hiệu này điều khiển việc xuất nhập giữa các thanh ghi nội với ALU và thông báo
để ALU thực hiện thao tác đã được xác định.
1.1.4. Bộ nhớ chỉ đọc ROM (Read Only Memory)
• ROM cơ bản:
ROM dùng để lưu trữ chương trình điều hành (Monitor) của hệ VXL. Chương trình này
sẽ quy định mọi hoạt động của hệ VXL. Bộ VXL sẽ căn cứ vào các lệnh chứa trong
chương trình để điều khiển hệ VXL thực hiện các chức năng, nhiệm vụ được ấn định
trong lệnh. Nói cách khác, hệ VXL sẽ thực hiện một cách trung thực thuật toán mà người
thiết kế phần mềm đã xây dựng và cài đặt vào ROM của hệ.
Ngoài ra, ROM trong hệ VXL còn dùng để lưu trữ các bảng biểu, tham số của hệ thống
mà trong quá trình hoạt động không được thay đổi như: bảng địa chỉ cổng giao tiếp, các
bảng tra cứu số liệu, các bộ mã cần sử dụng trong hệ.
ROM cũng được quản lý theo phương thức ma trận điểm, nó có nhiều chủng loại
khác nhau: ROM, PROM, EPROM, EEPROM,…
ROM là bộ nhớ cố định có cấu trúc đơn giản nhất. Nội dung của nó do nhà sản xuất chế
tạo, người sử dụng không thể thay đổi nội dung này được nữa.

Hệ đếm thập phân còn gọi là hệ đếm cơ số mười và nó được biểu diễn bởi 10 con số từ(0,1,2,3,4,5,6,7,8,9 ) những con số này được sử dụng rất nhiều trong khoa học kỹ thuật
(0,1,2,3,4,5,6,7,8,9 ) những con số này được sử dụng rất nhiều trong khoa học kỹ thuậtcũng như trong đời sống hàng ngày, khi biểu diễn số thập phân thì dứng sau dãy số
cũng như trong đời sống hàng ngày, khi biểu diễn số thập phân thì dứng sau dãy sốthường có chữ D.
thường có chữ D.
Ví dụ: Ba nghìn Chin trăm Bảy mươi Tám được biểu diễn như sau
Ví dụ: Ba nghìn Chin trăm Bảy mươi Tám được biểu diễn như sau
3978
3978
= 3x10
= 3x10
3
3
+ 9x10
+ 9x10
2
2
+ 7x10
+ 7x10
1
1
+ 8x10
1001
1001
b
b
; gọi là 1 Byte
; gọi là 1 Byte1010
10101011
10111100
11001101
1101
b
b
; gọi là 1 Word
; gọi là 1 Word
Trong dãy số nhị phân được biểu diễn thì số nhị phân sát phải gọi là bít LSB còn số
Trong dãy số nhị phân được biểu diễn thì số nhị phân sát phải gọi là bít LSB còn số

2
2
+ 0x2
+ 0x2
1
1
+ 1x2
+ 1x2
0
0
= 8 + 4 + 0 + 1 = 13
Giải giá trị của các số có dấu 8 bit là: -128 đến 127
Giải giá trị của các số có dấu 16 bit là: -32768 đến 32767
Trong khi biểu diễn dãy số nhị phân có dấu thì người ta sử dụng bít MSB để quy ước
Trong khi biểu diễn dãy số nhị phân có dấu thì người ta sử dụng bít MSB để quy ướccho bít dấu, với bít 0 cho dãy số nhị phân dương còn bít 1 cho dãy số nhị phân âm.
cho bít dấu, với bít 0 cho dãy số nhị phân dương còn bít 1 cho dãy số nhị phân âm.
1.2.3. Hệ thống số bát phân (BCD-Binary Coded Decimal)
Số đếm BCD được định nghĩa là số thập phân nhưng được biểu diễn dưới dạng nhị
phân 4 bít, nhưng dãy số nhị phân 4 bít này khi quy sang hệ thập phân thì giá trị của nó
phải ≤ 9 .Trong kỹ thuật điện tử nói chung thì mã BCD được sử dụng để giải mã hiển thị
LED bảy thanh…
Ví dụ: (0011), (0100), (0101), (0110), …(1001) ; đây gọi là số BCD không nén
Ví dụ: (00110100), (01010110), … (01111000) ; đây gọi là số BCD nén
Dưới đây là bảng các mã BCD
Thập phân BCD
0 0000
1 0001

ngoài việc biểu diễn số không dấu, số có dấu thì người ta còn sử dụng cách biểu diễn số
bù 2. Vậy số bù 2 sẽ biểu diễn như thế nào?
Ví dụ: Hãy biểu diễn dãy số A = 10011001 sang số bù 2 của nó:
b1: Tìm số bù 1 của A(bằng cách lấy bù tất cả các bit của A): 01100110
b2: Tìm số bù 2 của A (bằng cách lấy số bù 1 cộng cho 1) : 01100111
đến đây ta nhận thấy rằng số bù 2 của một số nào đó nó chính là số đối của nó và tổng =0
1.2.6. Các phép toán số học đối với hệ nhị phân
a. phép cộng nhị phân không dấu
Quy ước:
0 + 0 = 0
Bộ môn Công Nghệ Cơ Điện Trang 10
Đề cương bài giảng vi xử lý - 8051
0 + 1 = 1
1 + 1 = 0 nhớ 1
Ví dụ: Cho 2 số nhị phân như sau A = 10010011 ; B = 00111001 hãy tìm tổng Y
của 2 số nhị phân đã cho
b. Phép trừ nhị phân
Quy ước:
0 – 0 = 0
0 – 1 = 1 mượn 1
1 – 0 = 1
1 – 1 = 0
Ví dụ : Cho 2 số nhị phân như sau A = 10010011 ; B = 00111001 hãy tìm hiệu Z
của 2 số nhị phân đã cho (Lưu ý rằng phép trừ có thể thực hiện bằng cách biến thành
phép cộng bằng cách cộng với số bù 2 )
c. Phép nhân nhị phân
Ví dụ : Cho 2 số nhị phân như sau A = 00100101 ; B = 00000100 hãy tìm tích F
Khi nhân 2 dãy số nhị phân với nhau thì ta đặt phép toán nhân giống như nhân
số thập phân, kết quả của phép nhân 2 dãy số nhị phân 8 bít sẽ thu được dãy số nhị phân
là 16 bít, như vậy ta có F = A*B = 0000000010010100b

(N-1)
+ B
(N-2)
* 2
(N-2)
+ B
(N-3)
* 2
(N-3)
+ … + B
(1)
* 2
(1)
+
B
(0)
* 2
(0)
Ví dụ : Chuyển số nhị phân không dấu 01011110b sang số thập phân
A = 0*2
7
+ 1*2
6
+0*2
5
+ 1*2
4
+ 1*2
3
+ 1*2

Bộ môn Công Nghệ Cơ Điện Trang 12
cng bi ging vi x lý - 8051
Chng 2
B VI IU KHIN 8051
2.1. Khỏi quỏt chung v cỏc b vi iu khin
Vi iu khin (VK) l mt h Vi x lý (VXL) c t chc trong mt chip. Nú
bao gm:
- B VXL (CPU)
- B nh chng trỡnh (ROM/EPROM/EEPROM/FLASH).
- B nh d liu (RAM).
- Cỏc thanh ghi chc nng, cỏc cng I/O, c ch iu khin ngt v truyn tin ni
tip.
- Cỏc b thi gian dựng trong lnh vc chia tn v to thi gian thc.
B VK cú th c lp trỡnh iu khin cỏc thit b thụng tin, vin thụng, thit b
o lng, thit b iu chnh cng nh cỏc ng dng trong cụng ngh thụng tin v k
thut iu khin t ng. Cú th xem b VK nh mt h VXL On-chip, i vi
AT89C51, nú cú y chc nng ca mt h VXL 8 bit, oc iu khin bi mt h
lnh, cú s lnh mnh, cho phộp lp trỡnh bng hp ng (Assembly, C).
Cỏc thnh viờn khỏc ca h 8051
Cú hai b vi iu khin thnh viờn khỏc ca h 8052 l 8031 v 8052
a- Bộ vi điều khiển 8052:
Bộ vi điều khiển 8052 là một thành viên khác của họ 8051, 8052 có tất cả các đặc tính
chuẩn của 8051 ngoài ra nó có thêm 128 byte RAM và một bộ định thời nữa. Hay nói
cách khác là 8052 có 256 byte RAM và 3 bộ định thời. Nó cũng có 8K byte ROM. Trên
chíp thay vì 4K byte nh 8051. Xem bảng 1.4.
Bảng2.1: so sánh các đặc tính của các thành viên họ 8051.
Đặc tính 8051 8052 8031
ROM trên chíp 4K byte 8K byte OK
RAM 128 byte 256 byte 128 byte
Bộ định thời 2 3 2

triển yêu cầu truy cập đến một bộ đốt PROM cũng nh bộ xoá UV- EPROM để xoá nội
dung của bộ nhớ UV-EPROM bên trong 8751 trớc khi ta có thể lập trình lại nó. Do một
thực tế là ROM trên chíp đối với 8751 là UV-EPROM nên cần phải mất 20 phút để xoá
8751 trớc khi nó có thể đợc lập trình trở lại. Điều này đã dẫn đến nhiều nhà sản xuất giới
thiệu các phiên bản Flash Rom và UV-RAM của 8051. Ngoài ra còn có nhiều phiên bản
với các tốc độ khác nhau của 8751 từ nhiều hãng khác nhau.
Bộ vi điều khiển AT8951 từ Atmel Corporation.
Chíp 8051 phổ biến này có ROM trên chíp ở dạng bộ nhớ Flash. Điều này là lý tởng
đối với những phát triển nhanh vì bộ nhớ Flash có thể đợc xoá trong vài giây trong tơng
quan so với 20 phút hoặc hơn mà 8751 yêu cầu. Vì lý do này mà AT89C51 để phát triển
một hệ thống dựa trên bộ vi điều khiển yêu cầu một bộ đốt ROM mà có hỗ trợ bộ nhớ
Flash. Tuy nhiên lại không yêu cầu bộ xoá ROM. Lu ý rằng trong bộ nhớ Flash ta phải
xoá toàn bộ nội dung của ROM nhằm để lập trình lại cho nó. Việc xoá bộ nhớ Flash đợc
thực hiện bởi chính bộ đốt PROM và đây chính là lý do tại sao lại không cần đến bộ xoá.
Để loại trừ nhu cầu đối với một bộ đốt PROM hãng Atmel đang nghiên cứu một phiên
bản của AT 89C51 có thể đợc lập trình qua cổng truyền thông COM của máy tính IBM
PC .
Bảng 2.2: Các phiên bản của 8051 từ Atmel (Flash ROM).
Số linh kiện
Chân I/O
Đóng vỏ
AT89C51 4K 128 32 2 6 5V 40
AT89LV51 4K 128 32 2 6 3V 40
AT89C10511K 64 15 1 3 3V 20
AT89C20512K 128 15 2 6 3V 20
AT89C52 8K 128 32 3 8 5V 40
AT89LV52 8K 128 32 3 8 3V 40
Cũng có những phiên bản đóng vỏ và tốc độ khác nhau của những sản phẩm trên đây.
Xem bảng 1.6. Ví dụ để ý rằng chữ C đứng trớc số 51 trong AT 89C51 -12PC là ký
hiệu cho CMOS 12 ký hiệu cho 12 MHZ và P là kiểu đóng vỏ DIP và chữ C cuối

128
128
32
32
32
32
2
2
2
2
6
6
6
6
5V
5V
5V
5V
40
40
40
40
Chữ T đứng sau 5000 là có đồng hồ thời gian thực.
Lu ý rằng đồng hồ thời gian thực RTC là khác với bộ định thời Timer. RTC tạo và giữ
thời gian l phút giờ, ngày, tháng - năm kể cả khi tắt nguồn.
Còn có nhiều phiên bản DS5000 với những tốc độ và kiểu đóng gói khác nhau.( Xem
bảng 1.8). Ví dụ DS5000-8-8 có 8K NV-RAM và tốc đọ 8MHZ. Thông thờng DS5000-8-
12 hoặc DS5000T-8-12 là lý tởng đối với các dự án của sinh viên.
Bảng 2.5:Các phiên bản của DS5000 với các tốc độ khác nhau
Mã linh kiện

2.2. S khỏc nhau gia b vi x lý v b vi iu khin
Tiờu chớ SS VXL VK
Phn cng
CPU n chớp.
CPU, RAM, ROM, Timers, SFR,
mch giao tip, h thng ngt v c
ch iu khin ngt
B mụn Cụng Ngh C in Trang 15
Đề cương bài giảng vi xử lý - 8051
Tập lệnh
Sử dụng các tập lệnh bao
quát, mạnh về kiểu định địa
chỉ. Các lệnh này có thể truy
xuất dữ liệu lớn, thực hiện ở
dạng 1/2 Byte, Byte, Word,
Double Word.
Sử dụng các lệnh điều khiển xuất
nhập, có thể truy xuất dữ liệu ở
dạng Bit hoặc Byte. Các nhóm lệnh
chính: Chuyển dữ liệu, điều khiển
biến logic, rẽ nhánh chương trình,
tính toán số học và logic.
Ứng dụng
Trong các hệ máy vi tính.
Trong các hệ thống điều khiển, đo
lường và điều chỉnh…
2.3. Cấu trúc chung của bộ vi điều khiển 8051
2.3.1. Sơ đồ khối
Hình 2.1. Hình Sơ đồ khối của 8051
Bảng 2.6. Các thông số của các họ VĐK thuộc hãng Intel _ Atmel (MSC 51)

80C52 8K ROM 256 12,16,20,2432 3 1 6
87C52 8K EPROM 256 12,16,20,2432 3 1 6
80C54 16K ROM 256 12,16,20,2432 3 1 6
87C54 16K EPROM 256 12,16,20,2432 3 1 6
Họ VĐK
ROM
(bytes)
RAM
(bytes)
Tốc độ
(MHz)
Chân I/O
Timer/
Counter
UART Ngắt
80C58 32K ROM 256 12,16,20,2432 3 1 6
87C58 32K EPROM 256 12,16,20,2432 3 1 6
8xL52/54/58
80L52 8K ROM 256 12,16,20 32 3 1 6
87L52 8K OTP ROM256 12,16,20 32 3 1 6
80L54 16K ROM 256 12,16,20 32 3 1 6
87L54 16KOTP ROM256 12,16,20 32 3 1 6
80L58 32K ROM 256 12,16,20 32 3 1 6
87L58 32KOTP ROM256 12,16,20 32 3 1 6
2.3.2. Sơ đồ chân tín hiệu
Hình 2.2. Hình Sơ đồ chân tín hiệu
Chức năng của các chân tín hiệu như sau:
Bộ môn Công Nghệ Cơ Điện Trang 17
Đề cương bài giảng vi xử lý - 8051
- P0.0 đến P0.7 là các chân của cổng 0.

Nội dung
LSB
IE EA - ET2 ES ET1 EX1 ET0 EX0
IP - - PT2 PS PT1 PX1 PT0 PX0
PSW CY AC FO RS1 RS0 OV - P
TMOD GATE C/(/T) M1 M0 GATE C/(/T) M1 M0
TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
SCON SM0 SM1 SM2 REN TB8 RB8 TI RI
PCON SMOD - - - GF1 GF0 PD IDL
P1 T2 T2EX /SS MOSI MISO SCK
P3 RXD TXD /INT0 /INT1 T0 T1 /WR /RD
Bảng2.7. địa chỉ trực tiếp của các thanh ghi đặc biệt được lưu trữ trong RAM
Symbol Name Address Reset Values
* ACC Thanh ghi tích luỹ 0E0h 00000000b
* B Thanh ghi B 0F0h 00000000b
* PSW Từ trạng thái chương trình 0D0h 00000000b
SP Con trỏ ngăn xếp 81h 00000111b
Bộ môn Công Nghệ Cơ Điện Trang 18
Đề cương bài giảng vi xử lý - 8051
DP0L Byte cao của con trỏ dữ liệu 0 82h 00000000b
DP0H Byte thấp của con trỏ dữ liệu 0 83h 00000000b
* P0 Cổng 0 80h 11111111b
* P1 Cổng 1 90h 11111111b
Bảng 2.8. Địa chỉ, ý nghĩa và giá trị của các SFR sau khi Reset
Symbol Name Address Reset Values
* P2 Cổng 2 0A0h 11111111b
* P3 Cổng 3 0B0h 11111111b
* IP TG điều khiển ngắt ưu tiên 0B8h xxx00000b
* IE TG điều khiển cho phép ngắt 0A8h 0xx00000b
TMOD Điều khiển kiểu Timer/Counter 89h 00000000b

bộ 3 bank thanh ghi1,2,3 (gồm24 Byte). Nếu trong 1 chương trình mà cần phải có ngăn
Bộ môn Công Nghệ Cơ Điện Trang 19
Đề cương bài giảng vi xử lý - 8051
xếp > 24 Byte thì phải gán địa chỉ cho ngăn xếp lên vùng nhớ có địa chỉ từ 30h trở lên.
Nhớ rằng khi reset hệ thống thì giá trị của SP = 07h.
2.4.4. Thanh ghi DPTR
Dph Dpl
Thanh ghi con trỏ dữ liệu (16 bit) bao gồm 1 thanh ghi byte cao (DPH-8bit) và 1
thanh ghi byte thấp (DPL-8bit). DPTR có thể được dùng như thanh ghi 16 bit hoặc 2
thanh ghi 8 bit độc lập. Thanh ghi này được dùng để truy cập RAM ngoài.
2.4.5. Ports 0 to 3
P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0
P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0
P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0
P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0
P0, P1, P2, P3 là các chốt của các cổng 0, 1, 2, 3 tương ứng. Mỗi chốt gồm 8 bit. Khi
ghi mức logic 1 vào một bit của chốt, thì chân ra tương ứng của cổng ở mức logic cao.
Còn khi ghi mức logic 0 vào mỗi bit của chốt thì chân ra tương ứng của cổng ở mức logic
thấp. Khi các cổng đảm nhiệm chức năng như các đầu vào thì trạng thái bên ngoài của
các chân cổng sẽ được giữ ở bit chốt tương ứng. Tất cả 4 cổng của on-chip đều là cổng
I/O hai chiều, mỗi cổng đều có 8 chân ra, bên trong mỗi chốt bit có bộ “Pullup-tăng
cường” do đó nâng cao khả năng nối ghép của cổng với tải (có thể giao tiếp với 4 đến 8
tải loại TTL).
2.4.6. Thanh ghi SBUF:
SBUF
SBUF
Đệm dữ liệu nối tiếp gồm 2 thanh ghi riêng biệt, một thanh ghi đệm phát và một thanh
ghi đệm thu. Khi dữ liệu được chuyển tới SBUF, nó sẽ đi vào bộ đệm phát, và được giữ ở
đấy để chế biến thành dạng truyền tin nối tiếp. Khi dữ liệu được truyền đi từ SBUF, nó sẽ
đi ra từ bộ đệm thu.

RS1 (PSW. 4) RS0 (PSW. 3)
Bank 0 0 0
Bank 1 0 1
Bank 2 1 0
Bank 3 1 1
* OV: Cờ tràn. Khi thực hiện các phép toán cộng hoặc trừ mà xuất hiện một tràn số
học, thì OV được đặt bằng 1. Khi các số có dấu được cộng hoặc được trừ, phần mềm có
thể kiểm tra OV để xác định xem kết quả có nằm trong tầm hay không. Với phép cộng
các số không dấu, OV được bỏ qua. Kết quả lớn hơn +128 hoặc nhỏ hơn -127 sẽ đặt
OV=1.
* -: Bit dành cho người sử dụng tự định nghĩa(Nếu cần).
* P: Cờ chẵn lẻ. Được tự động đặt/ xoá bằng phần cứng trong mỗi chu trình lệnh để chỉ
thị số chẵn hay lẻ của bit 1 trong thanh ghi tích luỹ. Số các bit 1 trong A cộng với bit P
luôn luôn là số chẵn.
2.4.10. Thanh ghi PCON:
Thanh ghi điều khiển nguồn.
SMOD - - - GF1 GF0 PD IDL
* SMOD: Bit tạo tốc độ Baud gấp đôi. Nếu Timer 1 được sử dụng để tạo tốc độ baud và
SMOD=1, thì tốc độ Baud được tăng lên gấp đôi khi cổng truyền tin nối tiếp được dùng
bởi các kiểu 1, 2 hoặc 3.
* -: Không sử dụng, các bit này có thể được dùng ở các bộ VXL trong tương lai. Người
sử dụng không được phép tự định nghĩa cho các bit này.
* GF0, GF1: Cờ dùng cho các mục đích chung (đa mục đích).
* PD: bit nguồn giảm. Đặt bit này ở mức tích cực để vận hành chế độ nguồn giảm trong
AT89C51. Chỉ có thể ra khỏi chế độ bằng Reset.
* IDL: bit chọn chế độ nghỉ. Đặt bit này ở mức tích cực để vận hành kiểu Idle (Chế độ
không làm việc) trong AT89C51.
Lưu ý: Nếu PD và IDL cùng được kích hoạt cùng 1 lúc ở mức tích cực, thì PD được ưu
tiên thực hiện trước. Chỉ ra khỏi chế độ bằng 1 ngắt hoặc Reset lại hệ thống.
2.4.11. Thanh ghi IE: Thanh ghi cho phép ngắt

* TF0: Cờ tràn Timer 0. Được đặt bởi phần cứng khi bộ Timer 0 tràn. Được xoá bởi
phần cứng khi bộ vi xử lý hướng tới chương trình con phục vụ ngắt.
* TR0: Bit điều khiển bộ Timer 0 hoạt động. Được đặt/xoá bởi phần mềm để điều khiển
bộ Timer 0 ON/OFF.
* IE1: Cờ ngắt ngoài 1. Được đặt bởi phần cứng khi sườn xung của ngắt ngoài 1 được
phát hiện. Được xoá bởi phần cứng khi ngắt được xử lý.
* IT1: Bit điều khiển ngắt 1 để tạo ra ngắt ngoài. Được đặt/xoá bởi phần mềm.
* IE0: Cờ ngắt ngoài 0. Được đặt bởi phần cứng khi sườn xung của ngắt ngoài 0 được
phát hiện. Được xoá bởi phần cứng khi ngắt được xử lý.
* IT0: Bit điều khiển ngắt 0 để tạo ra ngắt ngoài. Được đặt/xoá bởi phần mềm.
2.4.14. Thanh ghi TMOD:
Thanh ghi điều khiển kiểu Timer/Counter
GATE C/(/T) M1 M0 GATE C/(/T) M1 M0
Dành cho Timer 1 Dành cho Timer 0

* GATE: Khi GATE=1 và TRx =1, bộ TIMER/COUTERx hoạt động chỉ khi chân INTx
ở mức cao. Khi GATE=0, bộ TIMER/COUNTERx sẽ hoạt động chỉ khi TRx=1
* C/(/T): Bit này cho phép chọn chức năng là Timer hay Counter.
- Bit này =0 thì thực hiện chức năng Timer
- Bit này =1 thì thực hiện chức năng Counter
* M0, M1: Bit chọn Mode, để xác định trạng thái và kiểu Timer/Counter:
- M1=0, M0=0: Chọn kiểu bộ Timer 13 bit.Trong đó THx dài 8 bit, TLx dài 5 bit.
- M1=0, M0=1: Chọn kiểu bộ Timer 16 bit. THx và TLx dài 16 bit được ghép tầng.
Bộ môn Công Nghệ Cơ Điện Trang 22
Đề cương bài giảng vi xử lý - 8051
- M1=1, M0=0: 8 bit Auto reload. Các thanh ghi tự động nạp lại mỗi khi bị tràn. Khi bộ
Timer bị tràn, THx dài 8 bit được giữ nguyên giá trị, còn giá trị nạp lại được đưa vào
TLx.
- M1=1, M0=1: Kiểu phân chia bộ Timer. TL0 là 1 bộ Timer/Counter 8 bit, được điều
khiển bằng các bit điều khiển bộ Timer 0, Còn TH0 chỉ là bộ Timer 8 bit, được điều

RB8 là bit dừng đã được nhận. Ở Mode 0, RB8 không được sử dụng.
* TI: Cờ ngắt truyền. Được đặt bởi phần cứng tại cuối thời điểm của bit thứ 8 trong
Mode 0, hoặc đầu thời điểm của bit dừng trong các Mode khác. Ở bất kỳ quá trình truyền
nối tiếp nào, nó cũng phải được xoá bằng phần mềm.
* RI: Cờ ngắt nhận. Được đặt bởi phần cứng tại cuối thời điểm của bit thứ 8 trong
Mode 0, hoặc ở giữa thời điểm của bit dừng trong các Mode khác. Ở bất kỳ quá trình
nhận nối tiếp nào (trừ trường hợp ngoại lệ, xem SM2), nó cũng phải được xoá bằng phần
mềm.
2.5. Các cổng vào ra của 8051.
Vi điều khiển 8051/8951 có 4 cổng, mỗi cổng có 8 bit để thực hiện việc xuất /nhập
dữ liệu. Bốn cổng này sẽ cho phép người lập trình truy xuất dữ liệu dưới dạng cả byte
hoặc truy xuất từng bít riêng rẽ, khi truy xuất cả byte thì nó được ký hiệu là P
0
, P
1
, P
2

P
3
. Một chú ý là khi khởi động lại bộ VĐK (Reset ) thì giá trị của các cổng đều ở mức
lôgic 1.
Cổng P
0
có 8 chân và số thứ tự chân từ 32 đến chân 39(chân 39~P
0.0
và chân 32~P
0.7
)
Cổng P

2.6. Khối tạo thời gian và bộ đếm.
2.6.1. Giới thiệu các bộ Timer/Counter trong 80C51/89C51:
Hệ vi xử lý on-chip AT89C51 có 2 thanh ghi Timer/Counter dài 16 bit, đó là: Timer 0
và Timer 1. Trong On-chip AT89C52, ngoài Timer 0 và Timer 1 nó còn có thêm bộ
Timer 2. Cả 3 bộ Timer này đều có thể được điều khiển để thực hiện chức năng thời gian
hay bộ đếm, thông qua thanh ghi TMOD.
Khi thanh ghi Timer/Counter làm việc ở kiểu Timer, thì sau mỗi chu kỳ máy nội dung
trong thanh ghi được gia tăng thêm 1 đơn vị. Vì vậy thanh ghi này đếm số chu kỳ máy.
Một chu kỳ máy có 12 chu kỳ dao động, do đó tốc độ đếm của thanh ghi là 1/12 tần số
đđ.
Khi thanh ghi Timer/Counter làm việc ở kiểu Counter, xung nhịp bên ngoài được đưa
vào để đếm ở T0 hoặc T1. Nội dung thanh ghi được tăng lên khi có sự chuyển trạng thái
từ 1 về 0 tại chân đầu vào ngoài T0 hoặc T1. Xung nhịp ở các đầu vào ngoài được lấy
mẫu tại thời điểm S5P2 của mỗi chu kỳ máy. Khi quá trình lấy mẫu phát hiện ra mức cao
ở 1 chu kỳ và mức thấp ở chu kỳ tiếp theo, thì bộ đếm được tăng lên. Giá trị mới của bộ
đếm xuất hiện trong thanh ghi tại thời điểm S3P1 của chu kỳ máy sau khi sự chuyển
trạng thái đã được phát hiện. Vì vậy để nội dung của thanh ghi tăng lên 1 đơn vị phải
mất 2 chu kỳ máy, nên tốc độ đếm tối đa là 1/24 tần số bộ dao động. Không có sự giới
hạn số vòng thực hiện của tín hiệu ở đầu vào ngoài, nhưng nó sẽ giữ ít nhất 1 chu kỳ máy
đầy đủ để đảm bảo chắc chắn rằng một mức đã cho được lấy mẫu ít nhất 1 lần nữa trước
khi nó thay đổi.
Do xung nhịp bên ngoài có tần số bất kỳ nên các bộ Timer (0 và 1) có 4 chế độ làm
việc khác nhau để lựu chọn: (13 bit Timer, 16 bit Timer, 8 bit auto-reload, split Timer).
2.6.2. Chế độ hoạt động của các bộ Timer/Counter
Trong AT89C51 và AT89C52 đều có các bộ Timer 0 và 1, chức năng Timer hay
Counter sẽ được lựa chọn bởi các bit điều khiển C/(/T) trong thanh ghi TMOD. Các bộ
Timer/Counter này có 4 chế độ hoạt động và nó được lựa chọn bởi cặp bit (M0, M1)
trong thanh ghi TMOD. Chế độ 0, chế độ 1 và chế độ 2 hoạt động giống nhau cho các
chức năng Timer/Counter. Chế độ 3 thì hơi khác so với 3 chế độ trên và còn gọi là chế độ
đếm 8 bít chia sẻ.

Ở chế độ này, chức năng Timer/Counter 0 và chức năng Timer/Counter 1 khác
nhau. Bộ Timer 1 ở chế độ 3 chỉ chứa chức năng đếm của nó, kết quả giống khi đặt
TR1=0. Bộ Timer 0 ở chế độ 3 thiết lập TH0, TL0 như là 2 bộ đếm riêng biệt. Mạch
Logic đối với chế độ 3 của Timer 0 thể hiện ở hình 2.7. Bộ đếm TL0 được điều khiển bởi
các bit: C/(/T), GATE, TR0, /INT0 và khi đếm tràn nó thiết lập cờ ngắt TF0. Bộ đếm
TH0 chỉ được điều khiển bởi bit TR1, và khi đếm tràn nó thiết lập cờ ngắt TF1. Vậy,
TH0 điều khiển ngắt Timer/Counter 1.
Chế độ 3 thường được dùng khi yêu cầu cần có bộ thời gian hoặc bộ đếm ngoài 8
bit. Đối với Timer 0 ở chế độ 3, AT89C51 có thể có 3 bộ Timer/Counter, còn AT89C52
có thể có 4 bộ. Khi Timer 0 hoạt động ở chế độ 3, thì Timer 1 có thể được bật hoặc tắt
bằng chuyển mạch ngoài. Ở chế độ này, Timer 1 có thể được sử dụng bởi cổng nối tiếp
như một bộ tạo tốc độ Baud, hoặc trong bất kỳ ứng dụng nào mà không yêu cầu một ngắt.
Bộ môn Công Nghệ Cơ Điện Trang 25

Trích đoạn Một số quy ước và cỏc phương phỏp định địa chỉ Lệnh truy xuất dữ liệu ngoà Lệnh hiệu chỉnh số thập phõn
Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status