Tải bản đầy đủ (.doc) (39 trang)

GIÁO TRÌNH VI ĐIỀU KHIỂN 8051 pps

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (376.9 KB, 39 trang )

Chương1 : GIỚI THIỆU VI ĐIỀU KHIỂN 8051
I.1 Tổng quan về kỹ thuật vi điều khiển:
I.1.1 Khái quát về kỹ thuật vi điều khiển:
Bộ vi điều khiển MC(Microcontroller) là một chíp có thể lập trình được
để điều khiển hoạt động của hệ thống. Nhờ chương trình điều khiển, bộ vi điều
khiển sẽ thực hiện đọc các tín hiệu từ bên ngoài vào,lưu trữ rồi xử lý,sau đó
dựa vào kết quả của các quá trình xử lý để dưa ra các thông báo, tiến hành bật
tắt các thiết bị bên ngoài. Vi điều khiển ứng dụng rất nhiều trong các sản phẩm
công nghệ và tiêu dùng.
Vi điều khiển được xây dựng từ vi xử lý. Năm 1971 tập đoàn Intel đã giới
thiệu bộ vi xử lý đầu tiên 8080. Sau đó một thời gian ngắn, các hãng
Motorola,RCA,MOS Technology va Zilog đã lần lượt giới thiệu các chíp vi xử
lý tương ứng là 6800, 1801, 6502 và Z80. Bản thân các mạch tích hợp (IC:
Integrated Circuit) này không thể tự làm gì khi đứng riêng lẻ, nhưng khi nằm
trong bo mạch chủ của hệ thống máy tính, nó trở thành bộ phận trung tâm trong
những sản phẩm có ích.
Xuất phát từ những yêu cầu điều khiển và giám sát hệ thống, một IC gần
tương tự với bộ vi xử lý ra đời đó là bộ vi điều khiển. Năm 1976 Intel giới thiệu
chíp vi điều khiển đầu tiên trong họ vi điều khiển MCS-48 là 8748. Mạch tích
hợp này chứa hơn 17000 transistor, nó bao gồm:
-Một CPU, 1Kbyte EPROM, 64Byte RAM.
-27 chân I/O và một bộ định thời 8 bit.
IC này và các chíp xuất hiện về sau trong họ 48 nhanh chóng chuẩn công
nghiệp trong các ứng dụng về điều khiển. Các ứng dụng phổ biến đầu tiên của
bộ vi điều khiển là trong máy giặt, hệ thống đèn giao thông và dần dần xuất
hiện trong xe hơi, thiết bị công nghiệp, sản phẩm tiêu dùng và thiết bị ngoại vi
của máy tính. Về sau sức mạnh cũng như sự phức tạp của MC đã nâng lên ở
mức cao hơn. Năm 1980, Intel đã giới thiệu chip vi điều khiển đầu tiên trong họ
MCS-51 là 8051. So với 8048, 8051 chứa hơn 60000 transistor, bao gồm :
-1 CPU, 4kbyte ROM, 128byte RAM.
-32 chân I/O, 1 cổng nối tiếp, 2 bộ định thời gian 16 bit.


Sau đó, Simens đưa ra phiên bản nâng cao của 8051 là SAB 80515 có 68
chân với 6 cổng I/O 8 bit, 13 ngắt và 1 bộ biến đổi A/D 8 bit với 8 đường ngỏ
vào. Họ 8051 được xem như là họ vi điều khiển 8 bit mạnh và đa năng nhất.
I.1.2. Sơ đồ khối của một vi điều khiển:
Sơ đồ khối chung của một vi điều khiển như hình dưới, bao gồm: CPU,
bộ nhớ ROM (hay EPROM) và RAM, mạch giao tiếp nối tiếp, mạch giao tiếp
song song, bộ dịnh thời gian, hệ thống ngắt và các đường BUS được tích hợp
trên cùng một chip.
I.1.2.1. Đơn vị xử lý trung tâm CPU:
Là thành phần chính của một chip vi điều khiển, quản lý tất cả hoạt động
của bộ vi điều khiển, thực hiện phép toán trên số liệu, thực chất nó là tập hợp
các mạch logic nhằm thực hiện liên tục hai hoạt động chính là tìm lệnh và thi
hành lệnh.
Hình 1.2 mô tả các khối bên trong của CPU. Nó có một tập các thanh ghi
dùng cho việc lưu trữ tạm thời các thông tin, khối số học ALU(Arithmatic and
Logic Unit) thực hiện các phép toán dựa trên các thông tin được lưu trong
thanh ghi, khối điều khiển và giải mã lệnh(Intruction Decode and control unit)
xác định phép toán cần thi hành và chuẩn bị các hoạt động cần thiết để thực
hiện lệnh đó có kết hợp với các thông tin trong hai thanh ghi phụ.Thanh ghi
lệnh(Intruction register) chứa mã nhị phân của mỗi lệnh cần thực hiện. Bộ đếm
chương trình(Program counter) lưu trữ địa chỉ trong bộ nhớ của lệnh cần thực
hiện tiếp theo.
Bus d li u, a ch , i u khi nữ ệ đị ỉ đ ề ể
H.1.S õ kh i b vi õió u khió n ồ ọử ọỳ ọỹ ử ứ
Times
B õió uọỹ ử
khió nứ
ngà từ
Giao tió pỳ
n i tió pọỹ ỳ

Giao tió pỳ
song song
CPU
RAM ROM
Thió t bỳ ở
n i tió pọỳ ỳ
Thió t bỳ ở
song song
Ngu n ngồ đồ
h ngoàiồ
Ng tắ
ngoài
ng hĐồ ồ
n iộ
I.1.2.2. Bộ nhớ bán dẫn RAM và ROM(EPROM):
Bộ nhớ dùng để lưu trữ chương trình và dữ liệu, có hai loại bộ nhớ là
RAM và ROM. Chúng ta có thể phân biệt được sự khác nhau giữa RAM và
ROM dựa trên hai tính năng.
+Thứ nhất: RAM(Random Access Memory) : bộ nhớ cho phép đọc và
ghi dữ liệu được, ROM(Read Only Memory): bộ nhớ chỉ đọc, trong một số
chip vi điều khiển còn sử dụng EPROM là loại lập trình có thể xóa được.
+Thứ hai: dữ liệu trong RAM sẽ bị mất đi khi ngắt nguồn cung cấp
điện,trong khi dữ liệu trong ROM thì vẫn lưu lại khi lúc không cấp nguồn.
I.1.2.3. Bus địa chỉ, Bus dữ liệu và Bus điều khiển:
Bus là tập hợp các đường dây mang thông tin với cùng mục đích. Trong
chip vi điều khiển có 3 loại Bus là bus địa chỉ, bus dữ liệu và bus điều khiển.
Trong hoạt động đọc hay ghi CPU xác định dữ liệu bằng cách đặt một địa chỉ
lên bus địa chỉ, rồi kích hoạt một tín hiệu trên bus điều khiển để chỉ thị hoạt
động đó là đọc hay ghi.
Hoạt động đọc sẽ lấy một byte dữ liệu từ bộ nhớ tại một vị trí xác định

rồi đặt lên bus dữ liệu. CPU đọc dữ liệu này và đặt nó vào một trong các thanh
ghi nội của CPU. Hoạt động ghi thì ngược lại, CPU lấy dữ liệu đưa ra bus dữ
liệu. Nhờ có tín hiệu điều khiển bộ nhớ nhận biết được đây là một hoạt động
ghi và nó sẽ lưu dữ liệu trên vào vùng nhớ đã được xác định nhờ địa chỉ mà
CPU đã gởi tới từ trước.
Bus dữ liệu mang thông tin trao đổi giữa CPU và bộ nhớ, giữa CPU và
thiết bị I/O. Độ rộng của Bus dữ liệu đóng vai trò khá quan trọng trong vấn đề
tăng tốc cho một bộ vi điều khiển, 8051 có độ rộng bus dữ liệu là 8 bit. Hiện
H1.2.S kh i c a CPUơ đồ ố ủ
Thanh ghi l nh(IR)ệ
Khối điều khiển v à
giải mã lệnh
Kh i logic và s ố ố
h cọ
CPU
Caùc thanh ghi
B m ch ng trình(PC)ộ đế ươ
nay nhiều bộ vi điều khiển sữ dụng bus địa chỉ và bus dữ liệu dồn kênh, nghĩa
là sử dụng cùng một đường truyền cho các bit dữ liệu và một số bit địa chỉ.
Trong trường hợp này bộ vi điều khiển có thêm các mạch ngoài dùng để phân
tích các tín hiệu địa chỉ và dữ liệu trong các bus tương ứng.
Các bus dữ liệu hoạt động theo 2 hướng, còn bus địa chỉ hoạt động theo
một hướng. Bởi vì thông tin địa chỉ luôn luôn được cung cấp bởi CPU, nhưng
dữ liệu thì có thể lưu thông theo cả 2 chiều tùy thuộc vào hoạt đọng ghi vào hay
đọc ra. Thông tin lưu trữ trên bus dữ liệu có thể là nhữg lệnh của chương trình,
địa chỉ gắn vào câu lệnh, dữ liệu được sử dụng bởi chương trình. Bus điều
khiển là tổ hợp các báo hiệu, mỗi báo hiệu có một vai trò xác định để điều
khiển hoạt động của hệ thống hoạt động một cách hiệu quả. Những tín hiệu
điều khiển là những tín hiệu định thời được cung cấp bởi CPU nhằm đồng bộ
và vận chuyển thông tin trên bus địa chỉ vào bus dữ liệu.

I.2 . Kiến trúc phần cứng của 8051:
I.2.1. Sơ đồ khối vi điều khiển 8051:
IC 8051 là một chip vi điều khiển trong họ vi điều khiển C51 đã được
Intel giới thiệu và đưa ra thị trường. Các thành phần bên trong gồm có:
-128 byte RAM4
-Cổng vào ra 8 bit
-2 bộ đếm thời gian 16 bit
-Giao tiếp nối tiếp
-64Kbytes không gian bộ nhớ chương trình ngoài.
-64Kbytes không gian bộ nhớ dữ liệu ngoài.
-Bộ vi xử lý hoạt động trên từng bit riêng lẻ.
-210 vị trí có thể đánh địa chỉ theo bit.
-Bộ nhân chia 4 us.

Số hiệu
Bộ nhớ
Chương trình
Bộ nhớ
Dữ liệu
Timers
8051 4 K ROM 128 bytes 2
8051 0K 128 bytes 2
8751 4 K EPROM 128 bytes 2
8052 8 K ROM 256 bytes 3
8032 0 K 256 bytes 3
8752 8K EPROM 256 bytes 3
Hình 1.3 So sánh các IC thuộc họ vi điều khiển 51
I.2.2. Chức năng các chân của 8051:
Chip vi điều khiển 8051 có 32 chân trong tổng số 40 chân có chức năng
như là cổng I/O.Trong đó có 24 chân sử dụng với 2 mục đính. Nghĩa là ngoài

chức năng I/O, mỗi chân có thể là một đường điều khiển của bus địa chỉ hay
bus dữ liệu khi hệ thống sử dụng bộ nhớ ngoài. Hoặc là mỗi đường hoạt động
một cách độc lập để giao tiếp với các thiết bị đơn bit như là các công tắc, đèn
LED, môtơ, transistor , loa
Trong những mô hình thiết kế không có bộ nhớ ngoài Port0 được sử
dụng như là cổng I/O. Còn đối với những hệ thống lớn hơn có yêu cầu một số
lượng đáng kể bộ nhớ ngoài thì Port0 trở thành các đường truyền dữ liệu và 8
bit thấp của Bus địa chỉ.
Cổng Port1 được chỉ định là cổng I/O từ chân 1 đến 8. Chúng được sử
dụng cho mục đích duy nhất là giao tiếp với các thiết bị ngoài khi cần thiết.
Cổng Port2 là cổng I/O hoặc là đường truyền 8 bit cao của bus địa chỉ
cho những mô hình thiết kế có bộ nhớ chương trình nằm ở ngoài hoặc có hơn
256 byte bộ nhớ dữ liệu ngoài.
Cổng Port3 ngoài mục đích chung là cổng I/O, những chân này còn kiêm
luôn nhiều chức năng khác nữa liên quan đến các tính năng đặc biệt của 8051.
32
P0.7
P0.6
P0.5
P0.4
P0.3
P0.2
P0.1
P0.0
33
34
35
36
37
38

39
AD7
AD6
AD5
AD4
AD3
AD1
AD0
AD2
8
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
P1.1
P1.0
7
6
5
4
3
2
1
28
P2.7
P2.6
P2.5
P2.4

P2.3
P2.2
P2.1
P2.0
27
26
25
24
23
22
21
A15
A14
A13
A12
A11
A9
A8
A10
17
P3.7
P3.6
P3.5
P3.4
P
3.3
P3.2
P3.1
P3.0
16

15
14
13
12
11
10
RD
WR
T1
T0
INT1
TxD
RxD
INT2
28
P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0
27
26
25
24
23
22
21

A15
A14
A13
A12
A11
A9
A8
A10
V
SS
20
PSEN
ALE
EA
RST
29
30
31
9
19
18
XTAL2
XTAL1
12MHz
30pF
30pF
Vcc
40
Bit Tên Địa chỉ bit Chức năng thứ hai
P3.0 RxD B0H Nhận dữ liệu cho cổng nối tiếp

P3.1 TxD B1H Truyền dữ liệu cho cổng nối tiếp
P3.2 INT0 B2H Ngắt 0 bên ngoài
P3.3 INT1 B3H Ngắt 1 bên ngoài
P3.4 T0 B4H Ngỏ vào bộ đếm thời gian 0
P3.5 T1 B5H Ngỏ vào bộ đếm thời gian 1
P3.6 WR B6H Tín hiệu diều khiển ghi bộ nhớ dữ liệu ngoài
P3.7 RD B7H Tín hiệu diều khiển đọc bộ nhớ dữ liệu
ngoài
P1.0 T2 90H Ngỏ vào bộ đếm thời gian 2
P1.1 T2EX 91H Capture/reload bộ đếm thời gian 2
H1.5.S kh i 8051ơ đồ ố
i u khi n Đề ể
ng tắ
Các thanh
ghi khác
128 bytes
RAM
ROM
4K
Timer1
Timer 0
INT
1
INT
0
Timer1
Timer
0
Serial port
CPU

B dao ộ
ngđộ
i u khi n Đề ể
BUS
Các c ng ổ
Input/Output
C ng n i ổ ố
ti pế
ALE
PSEN
EA
RST
P
0
P
1
P
2
P
3
TxD RxD
Hình 1.6: Những chức năng thứ hai của một số chân cổng
PSEN : là một tín hiệu điều khiển cho phép bộ nhớ chương trình bên
ngoài hoạt động. Nó thường được kết nối đến chân OE (output enable) của
EPROM để thực hiện đọc các byte chương trình. Xung tín hiệu PSEN luôn ở
mức thấp trong suốt phạm vi quá trình của một lệnh. Còn khi thi hành chương
trình từ ROM ở ngay bên trong chip, chân PSEN luôn ở mức cao (không hoạt
động).
Tín hiệu ALE có chức năng tách byte địa chỉ thấp và bus dữ liệu khi
cổng P0 được sử dụng ở chế độ tuần tự hay còn gọi là chế độ dồn kênh, nghĩa

là sử dụng cùng một đường truyền cho các bit dữ liệu và byte thấp của bus địa
chỉ.
Khi chân EA ở mức cao, 8051/8052 được phép thực hiện các chương
trình lưu trữ ở vùng nhớ thấp hơn 4kbyte/8 kbyte ROM bên trong chip. Còn khi
EA ở mức thấp, chỉ có những chương trình lưu ở bộ nhớ bên ngoài mới được
thực hiện.(Dùng cho 8051)
8051 có một bộ dao động nội bên trong chip hoạt động bám theo tần số
của dao động thạch anh nằm bên ngoài. Tần số thông dụng của thạch anh là 12
Mhz cho hầu hết các IC thuộc họ 51.
I.2.3. Tổ chức bộ nhớ:

B nh bên trong chipộ ớ
B nh ộ ớ
ch ng trình ươ
ho t ng ạ độ
nh tín hi u ờ ệ
PSEN
0000H
FFFFH
B nh d ộ ớ ữ
li u ho t ệ ạ
ng nh tín độ ờ
hi u RD và ệ
WR
0000H
FFFFH
B nh ộ ớ
ch ng ươ
trình
00H

FFH
B nh bên ngoàiộ ớ
H1.7.Không gian b nh c a 8051ộ ớ ủ
Byte Address Bit Address Byte Address Bit Address
7F
Ram duỡng chung
FF
F0 F7 F6 F5 F4 F3 F2 F1 F0 B
E0 E7 E6 E5 E4 E3 E2 E1 E0 ACC
D0 D7 D6 D5 D4 D3 D2 D1 D0 PSW
30 B8 - - - BC BB BA B9 B8 IP
2F 7F 7E 7D 7C 7B 7A 79 78
2E 77 76 75 74 73 72 71 70 B0 B7 B6 B5 B4 B3 B2 B1 B0 P3
2D 6F 6E 6D 6C 6B 6A 69 68
2C 67 66 65 64 63 62 61 60 A8 AF - - AC AB AA A9 A8 IE
2B 5F 5E 5D 5C 5B 5A 59 58
2A 57 56 55 54 53 52 51 50 A0 A7 A6 A5 A4 A3 A2 A1 A0 P2
29 4F 4E 4D 4C 4B 4A 49 48
28 47 46 45 44 43 42 41 40 99 Not bit addressable SBUF
27 3F 3E 3D 3C 3B 3A 39 38 98 9F 9E 9D 9C 9B 9A 99 98 SCON
26 37 36 35 34 33 32 31 30
25 2F 2E 2D 2C 2B 2A 29 28 90 97 96 95 94 93 92 91 90 P1
24 27 26 25 24 23 22 21 20
23 1F 1E 1D 1C 1B 1A 19 18 8D Not bit addressable TH1
22 17 16 15 14 13 12 11 10 8C Not bit addressable TH0
21 0F 0E 0D 0C 0B 0A 9 8 8B Not bit addressable TL1
20 7 6 5 4 3 2 1 0 8A Not bit addressable TL0
1F
Bank 3
89 Not bit addressable TMOD

18 88 8F 8E 8D 8C 8B 8A 89 88 TCON
17
Bank 2
87 Not bit addressable PCON
10
0F
Bank 1
83 Not bit addressable DPH
8 82 Not bit addressable DPL
7 Default Register bank 0
for R0 - R7
81 Not bit addressable SP
0 80 87 86 85 84 83 82 81 80 P0
RAM Special funcion register

Không gian bộ nhớ của bộ vi điều khiển được phân chia ra làm 2 phần:Dữ
liệu và chương trình. Hầu hết các IC MCS-51 đều có bộ nhớ chương trình và
dữ liệu nằm bên trong chip, tuy nhiên cũng có thể mở rộng dung lượng lên đến
64Kbytes bộ nhớ chương trình và 64 Kbytes bộ nhớ dữ liệu bằng cách sử dụng
thêm một số bộ nhớ ngoài.
Hình 1.8 trình bày chi tiết bộ nhứ dữ liệu. Không gian bộ nhớ trong được
phân chia ra gồm các BANK thanh ghi (00H-1FH), RAM địa chỉ theo bit (20H-
2FH) RAM dùng chung(30H-7FH), và các thanh ghi chức năng đặc biệt.
I.2.4. Các thanh ghi chức năng đặc biệt:
8051 có các thanh ghi RO-R7 và 21 thanh ghi chức năng đặc biệt SFR
(Special Function Rigister) nằm ở phần trên của RAM trong từ địa chỉ 80H-
FFH.
H1.8.C u trúc RAM trong c a 8051ấ ủ
Thanh ghi trạng thái chương trình PSW (Progam Status Word): Thanh
ghi PSW chứa các bit trạng thái được tóm tắt trong hình 1.9.

CY AC F0 RS1 RS0 OV P
Hình 1.9 : Các bit trong thanh ghi trạng thái
+Cờ nhớ CY(Carry Flag): Cờ nhớ được sử dụng cho 2 mục đích. Nó được
dùng trong các phép toán số học, cờ nhớ được lập khi kết quả phép toán có nhớ
hoặc phải mượn. Ngoài ra cờ nhớ được sử dụng như là một thanh ghi một bit
cho các lênh boolean hoạt động trên các bit.
+Cờ nhớ phụ AC(Auxiliary Carry Flag): Khi thực hiện phép tính BCD,
Bit AC được bật nếu kết quả phép toán vừa thực hiện có nhớ hay có mượn đối
với 4 bit thấp.
+Cờ OFO(Flag O):Là bit cờ dùng chung được dành sẵn cho các ứng dụng
của người sử dụng.
+Bit chọn lựa Bank thanh ghi: Các bit RSO và RSI dùng để xác định bank
thanh ghi tích cực. Chúng được xóa mỗi khi hệ thống khởi động lại và được
thay đổi bởi phần mềm khi cần thiết.
+Cờ tràn OV(Overflow Flag) :Cờ tràn được bật nếu kết quả của một phép
toán cộng hay trừ các số có dấu bị sai.
+Bit chẵn lẻ P(Parity Bit):Bit parity được tự động lập hay xóa sau mỗi chu
kỳ máy để thiết lập parity chẵn với thanh ghi A. Nghĩa là tổng số bit 1 của
thanh ghi A cộng với bit Parity thì luôn luôn chẵn.
Thanh ghi B: Thanh ghi B được sử dụng đi kèm với thanh ghi A để thực
hiện các phép toán nhân và chia. Thanh ghi B cũng được xem như là thanh ghi
đệm dùng chung. Nó có địa chỉ bit từ F0H-F7H.
Con trỏ ngăn xếp: là một thanh ghi 8 bit, nó chứa địa chỉ của phần dữ liệu
đang hiện diện tại đỉnh của ngăn xếp. Ngăn xếp hoạt động theo phương thức
vào trước ra sau. Hoạt động đẩy vào ngăn xếp làm tăng SP lên trước khi ghi dữ
liệu vào. Hoạt động lấy ra khỏi ngăn xếp sẽ đọc dữ liệu ra rồi giảm SP.
Con trỏ dữ liệu DPTR(Data pointer) :DPTR được sử dụng để truy cập
vào bộ nhớ chương trình và bộ nhớ dữ liệu ngoài, đó là thanh ghi 16 bit có 8 bit
thấp ở địa chỉ 82H(DPL) và 8 bit cao ở địa chỉ 83H(DPH).
Các thanh ghi cổng: Các cổng I/O của 8051 bao gồm P0 tại địa chỉ 80H,

P1 tại địa chỉ 90H, P2 tại địa chỉ AOH, P3 có địa chỉ BOH. Tất cả các cổng đều
có địa chỉ nên cung cấp khả năng giao tiếp với bên ngoài rất mạnh.
Các thanh ghi bộ đếm thời gian: 8051 có 2 bộ đếm thời gian 16 bit để định
các khoảng thời gian hay đếm các sự kiện. Timer0 có địa chỉ 8AH (TL0:byte
thấp) và 8CH(TH0:byte cao),timer1 có địa chỉ 8BH(TL1:Byte thấp) và
8DH(TL2:Byte cao).Hoạt động của bộ đếm thời gian được thiết lập bởi thanh
ghi chế độ thời gian TMOD và thanh ghi điều khiển thời gian TCON có địa chỉ
bit.
Cổng nối tiếp để kết nối với các thiết bị thanh ghi cổng tuần tự: IC 8051
chứa một cổng nối tiếp như Modem hoặc để giao tiếp với các IC khác sử dụng
giao tiếp nối tiếp( Bộ chuyển đổi A/D, thanh ghi dịch, bộ nhớ RAM ).Bộ đệm
dữ liệu nối tiếp SBUF lưu giữ cả dữ liệu truyền đi và dữ liệu nhận được.Hoạt
động ghi SBUF sẽ nạp vào dữ liệu để truyền đi, còn hoạt động đọc SBUF sẽ
truy cập vào dữ liệu đã nhận được. Nhiều chế độ hoạt động khác nhau có thể
lập trình được thông qua địa chỉ bit của thanh ghi điều khiển cổng nối tiếp tại
địa chỉ 98H.
Các thanh ghi ngắt: IC 8051 có 5 nguồn ngắt và 2 mức ưu tiên. Các ngắt
bị cấm sau khi hệ thống khởi động lại và sẽ được bật bằng cách ghi vào thanh
ghi cho phép ngắt IE(Interupt Enable register).Mức ưu tiên được thiết lập thông
qua thanh ghi ưu tiên ngắt IP(Interrupt Priority register).Cả hai thanh ghi này
đều có địa chỉ bit.
Thanh ghi điều khiển năng lượng PCON(Power Control register): Chứa
nhiều bit điều khiển đảm nhiệm những chức năng khác nhau.
SMO
D
- - - GF
1
GF
0
PD IDL

Hình 1.10 : Các bit trong thanh ghi điều khiển năng lượng
*Bit SMOD làm tăng gấp đôi tốc độ baud của cổng nối tiếp khi ở chế độ
1, 2 hay 3.Bit 2 và bit 3 là các bit cờ dùng chung được dành sắn cho các ứng
dụng của người dùng. Các bit điều khiển năng lượng là: Bit hạ thấp năng lượng
PD(Power down) và bit ngừng không hoạt động IDL(Idle).các bít này sẽ
chuyển bộ vi điều khiển sang hai chế độ hoạt động cơ bản.
I.2.5. Bộ nhớ ngoài:
Vi điều khiển cho phép mở rộng lên đến 64 Kbytes không gian bộ nhớ
chương trình và 64 Kbytes không gian bộ nhớ dữ liệu ngoài. Khi sử dụng bộ
nhớ ngoài thì cổng P0 không được dành cho hoạt động I/O, nó trở thành đường
truyền bus dữ liệu (D0-D7) và byte thấp (A0-A7) của bus địa chỉ. Cổng P2
thường được sử dụng cho đường truyền byte cao của bus địa chỉ.
Trong suốt một nữa chu kỳ bộ nhớ đầu, tín hiệu ALE sẽ chốt byte thấp
của bus địa chỉ vào bộ chốt 74H573, và trong nữa chu kỳ nhớ còn lại, cổng P0
được sử dụng như là bus dữ liệu để đọc dữ liệu vào MC hay ghi dữ liệu ra bộ
nhớ ngoài.Chế độ hoạt động như vậy gọi là chế độ dồn kênh.
D li uữ ệ
a chĐị ỉ
Chu k máyỳ
A
0
A
15
D
0
D
3
a chĐị ỉ D li uữ ệ
a chĐị ỉ
Chu k máyỳ

A
8
A
15
Ghép kênh(16 ng)đườ
Không ghép kênh(24 ng)đườ
I.2.5.1. Phương thức truy cập vào bộ nhớ chương trình ngoài:
Bộ nhớ chương trình ngoài được đọc bởi tín hiệu PSEN khi bộ nhớ
chương trình bên ngoài được sử dụng, cả cổng P0 và P2 đều không được sử
dụng như cổng I/O. Các kết nối phần cứng được mô tả như trên hình vẽ. Một
vòng chu kỳ máy của 8051 gồm có 12 chu kỳ dao động. Nếu bộ dao động nội
hoạt động bám theo một dao động thạch anh 12 Mhz thì một chu kỳ máy là
1us. Suốt một chu kỳ máy chuẩn, tín hiệu ALE dao động 2 lần và 2 byte được
đọc ra từ bộ nhớ chương trình.
I.2.5.2. Truy cập bộ nhớ dữ liệu ngoài:
H1.11: Gi n th i gian trong ch d n kênh và không d nả đồ ờ ế độ ồ ồ
kênh
PSEN
OE
PORT 0
D Q
G
ALE
A
8
A
15
A
0
A

7
D
0
D
7
74HC
573
80C51
EPROM
EA
H1.12.S u n i 8051 v i ROM ngoàiơ đồ đấ ố ớ
Các hoạt động đọc ghi bộ nhớ dữ kiệu được điều khiển bởi 2 tín hiệu RD
và WR. Cách duy nhất truy cập đến bộ nhớ dữ liệu ngoài là dùng lệnh MOVX,
sử dụng con trỏ dữ liệu DPTR 16 bit hoặc R0 hay R1 làm thanh ghi địa chỉ.
Giản đồ thời gian cho hoạt động đọc bộ nhớ dữ liệu ngoài bằng lệnh
MOVX A, @DPTR được chỉ trong hình 1.3.Lúc này, một xung ALE và một
xung PSEN bị bỏ qua và thay vào đó là một xung RD để đọc ra RAM, Giản đồ
thời gian cho một hoạt động ghi cũng tương tự , chỉ khác là xung WR ở mức
thấp để ghi dữ liệu ra cổng P0 và RD tồn tại ở mức cao.
P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2
S1 S2 S3 S4 S5 S6
P1 P2
S1
M t chu k máyộ ỳ
OS
C
ALE
PSEN
PCL
Opcod

e
PCL
Byte 2
Port
2
Port
0
PC
H
PC
H
H1.13.Gi n th i gian cho ho t ng c b nh ch ng trình ả đồ ờ ạ độ đọ ộ ớ ươ
bên ngoài
RAM
H1.14.S u n i ph n c ng c a 8051 v i RAM ngoàiơ đồ đấ ố ầ ứ ủ ớ
PORT 0
D Q
G
A
0
A
7
D
0
D
7
74HC
373
RD
ALE

80C51
EA
WR
PSEN
OE
A
8
A
15
WE
CS
N
C
Mass
S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6
M t chu ky ọỹ ỡ
maùy
M t chu ky ọỹ ỡ
maùy
S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6
M t chu ky ọỹ ỡ
maùy
M t chu ky ọỹ ỡ
maùy
PC
L
Opcode
DPL
Extarnal
Data in

PCH
DPH (Data pointer High
byte )
Port
2
Port
0
RD
PSEN
ALE
H1.15.Giãn th i gian c a l nh MOVXđồ ờ ủ ệ
I.2.6.Reset hệ thống:
Để Reset 8051, ta phải giữ chân RST ở mức cao trong tối thiểu 2 chu kỳ
máy rồi mới trở lại mức thấp. Việc Reset có thể thực hiện hoàn toàn bằng tay
thông qua công tắc, hoặc có thể tự động reset khi cấp điện.
Tình trạng các thanh ghi trong 8051 sau khi reset được tóm tắt trong hình
1.7. Bộ đếm chương trình sẽ nạp vào giá trị 0000H, bởi vì khi RST xuống mức
thấp, sự thực hiện chương trình luôn luôn bắt đầu tại địa chỉ đầu tiên của bộ
nhớ chương trình:0000H. Nội dung của RAM bên trong chip không bị ảnh
hưởng bởi hoạt động của reset .

H1.16.S m ch th c hi n RESETơ đồ ạ ự ệ
Reset
R
1
C
D
R
2
Thanh ghi Nội dung Thanh ghi Nội dung

Bộ đếm CT 0000H IP Xxx00000B
Thanh ghi A 00H IE 0xx00000B
Thanh ghi B 00H Thanh ghi Timer 00H
PSW 00H SCON 00H
SP 07H SBUF 00H
DPTR 0000H PCON (Hmos) 0xxxxxxxB
Cổng P (0,1,2,3) FFH PCON (Cmos) 0xxx0000B
Hình 1.17: Giá trị các thanh ghi sau khi Reset hệ thống.
I.3. Giới thiệu các chế độ địa chỉ của 8051:
I.3.1.Các chế đọ địa chỉ của 8051:
Bộ vi điều khiển 8051 sử dụng 8 chế độ địa chỉ để xác định vùng dữ liệu
cần thiết cung cấp cho các lệnh hoạt động.
Địa chỉ thanh ghi, địa chỉ trực tiếp, địa chỉ gián tiếp, địa chỉ tức thời, địa
chỉ tương đối, địa chỉ tuyệt đối, địa chỉ dài, địa chỉ liệt kê.
I.3.1.1. Địa chỉ thanh ghi:
8051 cung cấp 8 thanh ghi ký hiệu từ R0 đến R7. Khi mã hóa những lệnh
sử dụng địa chỉ thanh ghi, 3 bit có trị số nhỏ nhất của mã lệnh(OPCODE)được
dùng để xác định thanh ghi nào được sử dụng. Như vậy, mã chức năng và mã
thanh ghi kết hợp với nhau tạo thành một lệnh ngắn(1byte).
Opcode n n n
Hình 1.18a: Địa chỉ thanh ghi.
Có tất cả 4 bank thanh ghi, nhưng tại mỗi thời điểm chỉ có 1 bank là hoạt
động(Active), nhờ vào bit RSI và RSO của thanh ghi trạng thái PSW sẽ xác
định thanh ghi nào hoạt động.
I.3.1.2. Địa chỉ trực tiếp:
Sử dụng địa chỉ trực tiếp thì có thể truy cập vào bất cứ vùng nhớ hay
thanh ghi phần cứng nào khác. 1byte được thêm vào trong mã lệnh để xác định
vùng nhớ cần sử dụng.
Opcode Direct Address
H1.18b. a ch tr c ti pĐị ỉ ự ế

Vùng nhớ được truy cập có thể là 128 byte thấp trong bộ nhớ RAM( có
địa chỉ từ 00H đến 7FH) hoặc các cổng I/O, thanh ghi chức năng đặc biệt, và
thanh ghi trạg thái ( có địa chỉ từ 80H-FFH) .
I.3.1.3. Địa chỉ gián tiếp:
R0 và R1 có thể hoạt động như là những thanh ghi con trỏ, nội dung của
chúng cho biết địa chỉ của vùng dữ liệu cần ghi hay đọc trong RAM. Bit có
trọng số nhỏ nhất của mã lệnh xác định thanh ghi nào được sử dung làm con
trỏ.
Trong hợp ngữ của 8051, địa chỉ gián tiếp được biểu thị bằng dấu Yỵ
đứng trước R0 hay R1.
I.3.1.4.Địa chỉ tức thời:
Khi toán hạng nguồn là một hằng số, thì nó có thể kết hợp vào luôn trong
lệnh như là byte dữ liệu tức thời.
Trong ngôn ngữ Assembly, các toán hạng tức thời được đứng trước bởi 1
ký hiệu #. Toán hạng có thể là hằng số, biến số tượng trưng, hoặc là biểu thức
toán học sử dụng hằng số, ký hiệu, toán tử.
I.3.1.5. Địa chỉ tương đối:
Địa chỉ tương đối chỉ được sử dụng với những lệnh nhảy nào đó. Địa chỉ
tương đối hay coàn gọi là khoảng cách(Offset) tương đối là một giá trị 8 bit, nó
được cộng thêm vào bộ đếm chương trình để tạo nên địa chỉ của lệnh kế tiếp
cần thi hành. Bởi vì sử dụng giá trị 8 bit nêm khoảng cách nhảy nằm giữa -128
đến +127. Khoảng cách tương đối này được đưa thêm vào lệnh và trở thành
byte thứ 2.
I.3.1.6.Địa chỉ tuyệt đối:
Địa chỉ tuyệt đối chỉ được sử dụng trong lệnh ACALL và AJMP.Địa chỉ
đích gồm 11 bit địa chỉ thấp nhất được phân bố vào trong mã lệnh 3 bit (A10-
A8) và 8 bit(A0-A7) và byte 2 của lệnh. Còn 5 bit địa chỉ cao A15-A11 chính
là 5 bit cao trong bộ đếm chương trình được giữ nguyên không đổi.
Opcode
i

H1.18.c. a ch gián ti pĐị ỉ ế
Opcode
H1.18.e. a ch t ng iĐị ỉ ươ đố
Relative Offset
Opcode
H1.18.d. a ch t c th iĐị ỉ ứ ờ
Immedial Data
A10 A9 A8 Opcode
H1.18.f. a ch tuy t iĐị ỉ ệ đố
Add 7 - Add 0
I.3.1.7. Địa chỉ dài:
Địa chỉ dài chỉ được sử dụng trong lệnh LCALL và LJMP. Lệnh 3 byte
này chứa địa chỉ8 đích 16 bit trong byte 2 và byte 3, vì vậy cho phép truy cập
đủ 64 K bộ nhớ chương trình.
I.3.1.8. Địa chỉ liệt kê:
Địa chỉ liệt kê sử dụng thanh ghi cơ bản (Bộ đếm chương trình hay con trỏ
dữ liệu) và một Offset(Thanh ghi A) đẻ tạo nên địa chỉ cho các lệnh JMP hay
MOVC.
I.3.2. Tập lệnh:
Tập lệnh của 8051 chia ra thành 5 nhóm chính là:
+ Lệnh số học .
+ Lệnh Logic .
+ Lệnh chuyển dữ liệu.
+ Lệnh kiểu boolean.
+ Lệnh rẽ nhánh chương trình.
*Lệnh số học: gồm các lệnh cộng, trừ, nhân, chia, tăng giảm tác động trên
các địa chỉ và thanh ghi.
*Lệnh Logic: Gồm các lệnh thực hiện phép toán Boolean, lệnh quay
thanh ghi.
*Lệnh chuyển dữ liệu: gồm các lệnh chuyển dữ liệu giữa các thanh ghi,

giữa thanh ghi và bộ nhớ, giữa các vùng nhớ với nhau.
*Lệnh boolean: 8051 chổùa một bộ xử lý boolean hoàn chỉnh thực hiện
các phép toán trên từng bit. Những lệnh truy cập các bit này không chỉ là các
lệnh rẻ nhánh có điều kiện mà còn có các lệnh chuyển, bật, xóa, bù, AND và
OR.
*Lệnh rẻ nhánh chương trình: gồm những lệnh rẻ nhánh có điều kiện hay
không có điều kiện. Các lệnh rẻ nhánh chương trình sử dụng 3 kiểu địa chỉ là
kiểu địa chỉ tương đối, địa chỉ dài và địa chỉ tuyệt đối.
I.4.Hoạt động của bộ Timer:
Opcode
H1.18.g. a ch dàiĐị ỉ
Add 7 - Add 0
Add 15 - Add 8
PC (or DPTR)
ACC
Effective Address
+
=
H1.18.h. a ch li t kêĐị ỉ ệ
I.4.1. Giới thiệu bộ timer trong 8051:
Bộ timer là một dãy các Flip-Flop chia 2, chúng nhận một tín hiệu đưa vào
như là nguồn đồng hồ. Tín hiệu từ nguồn đồng hồ được đưa vào Flip-Flop thứ
nhất, và ngõ ra của Flip-Flop thứ nhất lại làm tín hiệu đồng hồ cho Flip-Flop
thứ hai và cứ thế tiếp tục. Bởi vì mỗi tầng kế tiếp nhau chia cho 2, nên bộ định
thời với n tần sẽ chia tần số của tín hiệu đồng hồ ngỏ vào cho 2n. gỏ ra của tần
cuối cùng dùng để điều khiển cho Flip-plop tràn, hay còn gọi là cờ tràn và nó
được kiểm tra bởi phần mềm, nó thường được dùng tạo ra một ngắt. Giá trị nhị
phân trong các Flip-plop được hiểu là số xung đồng hồ được đếm(hay các sự
kiện) Khi bộ đếm thời gian đã bắt đầu hoạt động. Bộ đếm thời gian 16 bit sẽ
thực hiện đếm từ 0000H đến FFFFH. Cờ tràn được lập khi nội dung bộ đếm

chuyển từ FFFFH qua 0000H.
Trên hình vẽ,giói thiệu bộ định thời 3 bit. Giản đồ thời gian cho thấy
hoạt động của bộ đếm, tầ số xung đồng hồ sau khi ra tần thứ nhất bị chia 2,
tương tự ở các tầng sau.
Các bộ định thời thường được dùng trong các hệ thống điều khiển. Trong
8051 có 2 bộ định thời 16 bit, mỗi bộ có 4 chế độ hoạt động. Bộ định thời được
dùng để:
+Xác định các khoảng thời gian, bộ dịnh thời được lập để tràn lại khoảng
thời gian nào đó và cờ tràn được bật lên.
0 01 2 3 4 5 6 7
0
Clock
Q
0
Q
1
Q
3
Flag
D Q
Q
0
D Q
Q
1
D Q
Q
2
D Q
Q

Clock
Flag
Flip
flop
H1.19.B nh th i 3 bit và gi n th i gianộ đị ờ ả đồ ờ
+Tạo ra tốc độ baud cho việc truyền thông tin tại cổng nối tiếp( được tích
hợp bên trong 8051).
+Đếm sự kiện và đo khoảng thời gian trôi qua giữa các sự kiện. Mỗi sự
kiện chính là bất kỳ tác nhân kích thích bên ngoài nào tạo ra sự chuyển đổi từ 1
qua 0 trên một chân của 8051.
Để truy cập vào các bộ định thời, ta sử dụng 6 thanh ghi SFR dành riêng.
SFR Mục đích Địa chỉ Chế độ địa chỉ Bit
TCON Điều khiển 88H YES
TMOD Định Mode 89H NO
TL0 Byte thấp của Timer 0 8AH NO
TL1 Byte thấp của Timer 1 8BH NO
TH0 Byte cao của Timer 0 8CH NO
TH1 Byte cao của Timer 1 8DH NO
Hình 1.20. Các thanh ghi chức năng đặc biệt của bộ định thời trong 8051.
I.4.2. Thanh ghi kiểu thời gian TMOD: (Timer Mode Register)
Bit Tên Time
r
Chức năng
7 GATE 1 Khi GATE=1 và INTE1 ở mức cao thì Tiner mới
hoạt động
6 C/T 1 Bit chọn Counter/Timer 1(C/T = 1/0)
5 M1 1 Bit Mode 1
4 M0 1 Bit Mode 0
3 GATE 0 Bit GATE của Timer 0
2 C/T 0 Bit chọn Counter/Timer

1 M1 0 Bit Mode 1 của Timer 0
0 M0 0 Bit Mode 0 Timer 0
Hình 1.21 : Các Bit trong thanh ghi TMOD
Thanh ghi TMOD được chia ra thành 2 nhóm 4 bit dùng để thiết lập các
chế độ hoạt động của Timer0 và Timer1.Thanh ghi TMOD không có địa chỉ
bit, thông thường nó được tải lên một lần ở đầu chương trình để thiết lập chế độ
định thời.
Các chế độ hoạt động của bộ định thời:
M1=0,M0=0: Mode 0
M1=0,M0=1: Mode 1
M1=1,M0=0:Mode 2
M1=1,M0=0:Mode 3
I.4.3.Thanh ghi điều khiển định thời TCON :(Timer Cotrol Register)
TCON chứa các bit tình trạng và các bit điều khiển cho Timer0 và
Timer1. Bốn bit cao của TCON được dùng để bật hay tắt bộ định thời(TR0,
TR1), hoặc được dùng để báo hiệu việc tràn bộ định thời(TF0,TF1). Bốn bit
thấp chỉ dùng để kiểm tra và thiết lập các ngắt ở bên ngoài.
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
Hình 2.22 : Các Bit trong thanh ghi định thời TCON
-TF1,TF0: Cờ tràn Timer1/timer0 được bật bởi phần cứng khi xảy ra tràn
bộ định thời. Được xóa bởi lệnh trong chương trình, hoặc bởi phần cứng khi bộ
xử lý chỉ đến một thủ tục phục vụ ngắt.
-TR1,TR0: Bit điều khiển chạy cho Timer1/Timer0. Được lập hay xóa
bởi phần mềm để bật hay tắt bộ định thời.
-IE1,IE0:Cờ phát hiện ngắt bên ngoài. Được bật bởi phần cứng khi phát
hiện thấy sườn xuống trên chân INT1/INT0. Bị xóa bởi chương trình hoặc bởi
phần cứng khi CPU chỉ đến một thủ tục phục vụ ngắt.
-IT1,IT0: Hai bit này được lập trình để chọn lựa cách tác động của ngắt
bên ngoài là tác động mức thấp hay tác động sườn âm.
I.4.4.Các chế độ của Timer và cờ tràn:

I.4.4.1.Chế độ định thời 13 bit (MODE 0):
Mode 0 ít được sử dụng trong các hệ thống mới. Byte cao của bộ định thời
(THx) được kết hợp với 5 bit có trọng số nhỏ nhất của byte thấp của bộ định
thời(TLx) để tạo nên bộ định thời 13 bit. Còn 3 bit trên của TLx không được sử
dụng.
I.4.4.2. Chế độ định thời 16 bit (Mode 1):
TLx
(5Bit)
THx
(8Bit)
TFx
(C tràn)ờ
Timer
clock
H.1.23.a. Mode nh th i 13 bitđị ờ
Trong Mode 1, tín hiệu đồng hồ được đưa vào cả 2 byte thấp và cao của
bộ định thời (THx,TLx). Khi nhận được xung đồng hồ, bộ định thời bắt đầu
đếm lên từ 0000H.Hiện tượng tràn xảy ra khi có sự chuyển tiếp từ FFFFH qua
0000H, và điều này làm bật cờ tràn bộ đếm, sau đó bộ định thời vẫn tiếp tục
đếm . Cờ tràn là bit TFx trong TCON được đọc hay ghi bởi phần mềm.
Bit có trọng số lớn nhất (MSB) trong thanh ghi định thời là bit 7 của
THx, và bit có trọng số nhỏ nhất (LSB) là bit 0 của TLx. Bit MSB chia tần số
của tín hiệu đồng hồ ngõ vào cho 65536(2 mũ 16), bit LSB thì chia tần số đồng
hồ cho 2.
I.4.4.3.Chế độ tự động nạp lại 8 bit (Mode 2):
Trong mode này, thanh ghi định thời TLx hoạt động như bộ định thời 8
bit trong khi byte cao của bộ định thời THx lưu trữ giá trị nạp lại. Khi quá trình
đếm ở TLx bị tràn từ FFH qua 00H thì không những cờ tràn được bật lên mà
giá trị trong THx được nạp vào TLx và tiếp tục quá trình đếm lên từ giá trị này
cho đến khi xảy ra sự chuyển đổi tiếp theo từ FFH qua 00H, và quá trình lại

tiếp tục diễn ra như trên.
I.4.4.4.chế độ định thời phân chia (Mode3):
TLx
(8Bit)
THx
(8Bit)
TFx
(C tràn)ờ
Timer
clock
H1.23.b. Mode nh th i 16 bitđị ờ
TLx
C trànờ
Reload
Timer Clock
H.1.23.c. Mode t ng n p l i 8 bitự độ ạ ạ
T
THx
Mode 3 là mode định thời phân chia và khác nhau đối với mỗi bộ định
thời. Timer 0 trong mode 3 được chia ra thành 2 bộ định thời 8 bit, TL0 và TH0
hoạt động như là 2 bộ định thời riêng lẻ và sử dụng các cờ tràn tương ứng là
TF0 và TF1.
Timer 1 trong mode 3 ngừng làm việc nhưng có thể hoạt động bằng cách
chuyển nó sang 1 trong các mode khác. Điều hạn chế duy nhất là cờ tràn của
Timer 1 không bị ảnh hưởng khi xảy ra tràn timer 1 bởi vì nó được nối tiếp đến
TH0.
I.4.5. Nguồn đồng hồ:
8051 có thể được định nhịp bởi 1 trong 2 nguồn đồng hồ, thực hiện việc
lựa chọn này bằng cách ghi vào các bit C/T trong thanh ghi TMOD khi mà bộ
định thời được thiết lập. Một nguồn đồng hồ được sử dụng để xác định khoảng

thời gian và nguồn kia dùng để đếm sự kiện.
Nếu C/T = 0, bộ Timer sẽ được cấp xung nhịp từ bộ dao động bên trong
chip, một bộ chia 12 được gắn thêm vào trước Timer để hạn chế tần số đồng hồ
từ nguồn dao động xuống một giá trị hợp lý cho hầu hết các ứng dụng. Các
thanh ghi định thời THx/TLx sẽ tăng lên sau mỗi xung nhịp có tần số 1Mhz
(Bộ dao động nội hạt động nhờ vào thạch anh 12 Mhz ở bên ngoài). Hiện tượng
tràn bộ định thời xảy ra sau một số xung nhất định, điều này phụ thuộc vào giá
trị nạp vào THx/TLx lúc ban đầu.
Nếu C/T = 1, bộ định thời được định nhịp bởi nguồn từ bên ngoài thông
qua hai chân P3.4 (T0) và P3.5 (T1). Trong hầu hết các ứng dụng, nguồn bên
ngoài này cung cấp cho Timer một xung vào lúc xảy ra một sự kiện nào đó, lúc
này bộ timer là bộ đếm sự kiện.Số các sự kiện được xác định bởi phần mềm
bằng cách đọc các thanh ghi định thời TLx/THx, bởi vì giá trị 16 bit trong các
thanh ghi này tăng lên sau mỗi sự kiện.
TLx
THx
Timer clock
H.1.23.d.Mode nh th i phân chia(Mode 3)đị ờ
TL0 TF0
Timer clock
C trànờ
TH0 TF1
1/12 F
OSC
C trànờ
I.5. Hoạt động của cổng nối tiếp:
I.5.1.Giới thiệu chung:
Bộ vi điều khiển có chứa một cổng nối tiếp ở bên trong nó có thể hoạt
động ở 4 mode khác nhau. Chức năng chủ yếu của cổng nối tiếp là thực hiện
việc chuyển đổi từ song song sang nối tiếp để xuất dữ liệu ra, và từ nối tiếp sag

song song để nhập dữ liệu vào thông qua 2 chân P3.1(TxD) và P3.0(RxD).
Cổng nối tiếp có tính năng hoạt động kép, tức là cùng một lúc có thể
truyền và nhận dữ liệu, ngoài ra 8051 còn sử dụng cơ chế bộ đệm cho phép một
ký tự được nhận vào và lưu trữ trong bộ đệm trong khi nhận vào ký tự thứ 2.
Nếu CPU đọc ký tự đầu tiên trước khi ký tự thứ hai được nhận đầy đủ thì dữ
liệu sẽ không bị mất.
Hoạt động ghi vào SBUF sẽ nạp vào dữ liệu để truyền đi, và hoạt động
SBUF truy cập vào phần dữ liệu nhận được .Thật sự SBUF là 2 thanh ghi khác
biệt và tách rời nhau, thanh ghi phát chỉ ghi và thanh ghi nhận chỉ đọc.
Tần số hoạt động của cổng nối tiếp hay tốc độ baud có thể cố định ( Được
cấp bởi bộ dao động nội của 8051) hay thay đổi. Timer 1 được sử dụng làm
nguồn phát. Tốc độ baud có thể thay đổi được bằng cách lập trình cho nó.
I.5.2. Thanh ghi điều khiển cổng nối tiếp SCON:
Chế độ hoạt động của cổng nối tiếp trong 8051 được thiết lập bằng thanh
ghi điều khiển cổng nối tiếp SCON.
SM0 SM1 SM2 REN TB8 RB8 TI RI
Hình 1.25 : các bit trong thanh ghi điều khiển cổng nối tiếp SCON
-SM0,SM1: Là 2 bit thiết lập mode hoạt động cho cổng nối tiếp.
-SM2:Bit mode cho phép chế độ truyền thông đã sử lý trong mode2 và
mode3.RI sẽ không được kích hoạt nếu nhận được bit thứ 9 là bit 0.
-REN : Bit cho phép nhận, phải được bật bởi chương trình để nhận ký tự.
-TB8 : Chứa bit thứ 9 được truyền đi trong mode 2 và mode 3.
-RB8: Nơi nhận bit thứ 9 trong Mode 2 và mode 3.
On-chip
Oscillator
÷12
C/T
0 = Up (Interval Timing)
1 = Down (Event
Counting)

T0 or T1
pin
Time
clock
H.1.24. Ngu n ng hồ đồ ồ
-TI : Cờ ngắt phát, được bật sau khi truyền song bit cuối cùng của một ký
tự được xóa bởi chương trình.
-RI: Cờ ngắt nhận,được bật
sau khi nhận xong bit cuối cùng của một ký tự. Được xóa bởi chương trình.
I.5.3.Các chế độ hoạt động (Mode):
Cổng nối tiếp của 8051 có tất cả 4 chế độ hoạt động được chọn lựa bởi
các bit SM0 và SM1 trong SCON. Có 3 trong 4 Mode cho phép truyền thông
tin không đồng bộ với mỗi ký tự được truyền hay nhận được đóng khung bởi 1
bit start và một bit stop, đây là kiểu truyền thông tin quen thuộc theo chuẩn RS
-232C trong hệ thống máy vi tính. Trong Mode còn lại, cổng nối tiếp hoạt động
như là một thanh ghi dịch đơn giản.
-SM0=0,SM1=0:Mode 0( thanh ghi dịch)
-SM0=0,SM1=1: Mode 1 (8bit UART)
-SM0=1,SM1=0: Mode 2 (9bit UART)
-SM0=1,SM1=1: Mode 3(9bit UART)
I.5.3.1. Thanh ghi dịch 8 bit (Mode 0):
Trong mode 0, cổng nối tiếp hoạt động như thanh ghi dịch 8 bit. Hai
chân RxD và TxD không được dùng như truyền thống, chân RxD được sử dụng
cho cả dữ liệu nhập vào và dữ liệu xuất ra, còn chân TxD dùng xuất nhịp đồng
hồ, bit LSB được truyền hay nhận đầu tiên trong 8 bit.
Hoạt động nhận dữ liệu được bắt đầu khi bit cho phép nhập REN bật 1
và bit ngắt RI bị xóa về 0. Khi RI bị xóa, các xung đồng hồ được ghi ra đường
TxD, tại thời điểm bắt đầu của một chu kỳ máy và dữ liệu sẽ được dịch chuyển
vào ngỏ RxD bởi nhịp đồng hồ.
Tốc độ baud =1/12.(Tần số của bộ dao động nội)

I.5.3.2. Chế độ 8 bit UART với tốc độ baud thay đổi (Mode 1):
Trong mode 1 cổng nối tiếp của 8051 hoạt động như là một bộ 8 bit
UART có tốc độ baud thay đổi. 10 bit được phát đi trên đường TxD hoặc được
nhận vào ngỏ RxD. Chúng bao gồm 1 bit Start (luôn luôn ở mức 0), tiếp theo là
8 bit dữ liệu (Bit LSB ở đầu), và bit Stop cuối cùng (luôn luôn là 1). Chu kỳ
của mỗi bit là số nghịch đảo của tốc độ baud. Tốc độ baud được thiết lập bởi
mức tràn Timer 1
Hoạt động phát được khởi đầu bằng cách ghi vào SBUF. Dữ liệu được
chuyển dịch ra ngõ TxD bắt đầu bởi bit start, tiếp theo là 8 bit dữ kiệu và kết
thúc bằng bit stop. Cờ ngắt phát đi T1 được bật ngay khi bit Stop xuất hiện ở
chân TxD.

×