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

XÂY DỰNG HỆ PHÁT TRIỂN CHO CÁC HỆ MICROCONTROLLER

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 (209.85 KB, 20 trang )

Lời nói đầu
Trong giai đoạn hiện nay việc phát triển ứng dụng các hệ vi điều khiển rất
đa dạng, chính vì vậy mà các hệ vi điều khiển đợc sử dụng để giải quyết các bài
toán rất khác nhau. Tính đa dạng của các ứng dụng phụ thuộc vào việc lựa chọn
các hệ vi điều khiển cụ thể cũng nh vào kỹ thuật lập trình. Ngày nay các bộ vi
điều khiển có mặt trong rất nhiều thiết bị điện tử hiện đại: từ trong gia đình, trong
văn phòng, trong các nhà máy công nghiệp. Lĩnh vực ứng dụng của vi điều khiển
cũng rất rộng lớn từ nghiên cứu khoa học, truyền dữ liệu, năng lợng, giao thông
vận tải, công nghiệp, y tế và quân sự Trong lĩnh vực quân sự các hệ vi điều
khiển đã rất đợc quan tâm bởi vì không những nó gọn nhẹ hơn các phơng thức
điều khiển cũ nhiều lần mà cái quan trọng hơn cả đó là tính chính xác, độ tin cậy
và hiệu quả của chúng. Đối với Hải quân chúng ta là một quân chủng kỹ thuật,
tuy vậy lực lợng tàu thuyền và trang thiết bị vũ khí nhìn chung đợc trang bị từ
khá lâu và nhiều thiết bị đã lạc hậu hiệu suất sử dụng không cao. Chính vì vậy
việc nghiên cứu ứng dụng các hệ vi điều khiển để thay thế, cải tiến các hệ điều
khiển cũ là một vấn đề rất thiết thực cấp bách, nhằm nâng cao hiệu quả và kéo
dài thời hạn phục vụ của trang bị - vũ khí. Từ nhận thức đó tôi đã nhận đề tài
"Xây dựng hệ phát triển cho các hệ Microcontroller". Để thống nhất và tiện
trong khi đọc, thì cụm từ Microcontroller (vi điều khiển) ta đọc là vi điều khiển.
Đề tài có thể nghiên cứu trên rất nhiều hệ vi điều khiển để xây dựng hệ phát
triển. Tuy vậy do tính phổ dụng của họ vi điều khiển MCS-51 (Microcontroller
System), nên tôi đã đi sâu vào tìm hiểu và nghiên cứu về họ này, mà cụ thể đi sâu
vào bộ vi điều khiển 89C51, đây là chíp điều khiển hiện nay đang đợc ứng dụng
rất rộng rãi vì sự tiện lợi của nó. Đề tài đợc cấu trúc gồm 3 chơng.
Chơng 1: Họ vi điều khiển MCS-51 và bộ vi điều khiển 89C51
Chơng 2: Xây dựng hệ phát triển cho họ vi điều khiển MCS-51
Chơng 3: ứng dụng hệ phát triển để tự động hoá quá trình điều khiển
độ sâu camera của khí tài dò tìm thuỷ lôi IT-3
Để hoàn thành đề tài này tôi đã nhận đợc sự gúp đỡ tận tình của các thầy
hớng dẫn, của các thầy trong khoa kỹ thuật điều khiển và đồng nghiệp. Tôi xin
chân thành cảm ơn.


Trong quá trình thực hiện đề tài do năng lực còn hạn chế, mặt khác đây là
một lĩnh vực khá mới đối với tôi cho nên không tránh khỏi sai sót, tôi rất mong
đợc sự gúp đỡ của các thầy giáo và đồng nghiệp để tôi tiếp tục nghiên cứu tốt
hơn.
Chơng 1
họ vi điều khiển MCS-51 và bộ vi điều khiển 89C51
1.1. họ vi điều khiển MCS-51
1.1.1. Khái quát chung về họ vi điều khiển MCS-51
Những đặc điểm chính và nguyên tắc hoạt động của các bộ vi điều
khiển khác nhau không nhiều. Khi đã sử dụng thành thạo một loại vi điều
khiển thì ta có thể nhanh chóng vận dụng kinh nghiệm để làm quen và làm
1
chủ các ứng dụng của một vi điều khiển khác. Bộ vi điều khiển thông dụng
nhất, đó là họ MCS-51, họ có số lợng đợc sản xuất ra nhiều nhất hiện nay.
Nếu nh họ MCS-51 là họ vi điều khiển điển hình thì 8051 chính là đại
diện tiêu biểu. Bên cạnh những thông số chung bộ vi điều khiển 8051 (chip
8051) có bộ nhớ chơng trình ROM tơng đối lớn, đến 4 kbyte, đợc tích hợp
ngay trong chíp và nh vậy có thể hình thành trọn vẹn một máy tính. Bộ nhớ
ROM bên trong của 8051/52 và 8751/52 khi chế tạo cũng nh lập trình đều cho
phép bảo vệ chống đọc ra.
Bởi vì nội dung của ROM này phải đợc lập trình ngay từ khi chế tạo,
nên mã chơng trình của nhà sản xuất cũng phải đợc chuyển giao khi bán hàng.
Thành thử phơng pháp này chỉ mang tính kinh tế khi chuyển giao những loạt
hàng lớn và vì lý do này mà chip 8051 không đợc chào bán lẻ.
Tuy vậy chip 8051 cũng có thể làm việc với một chơng trình khác bằng
cách đấu thên một bộ nhớ ROM ở bên ngoài. Để thông báo cho bộ vi điều
khiển biết là phải tiếp nhận chơng trình điều hành từ bộ nhớ ROM ở bên ngoài
và sử dụng chân /EA dể trao đổi với bộ nhớ ROM bên ngoài.
Với chip 8051 ta không thể viết thêm một chơng trình nào khác, thành
ra để dễ ràng đáp ứng yêu cầu mở rộng, các nhà thiết kế đã thiết kế ra các chíp

có tính chất gần gống 8051 chỉ có một điểm khác là bộ nhớ ROM đợc thay thế
bằng bộ nhớ EPROM hoặc bộ nhớ EEPROM có cùng dung lợng nhớ, nhng ta
có thể xoá đi đợc các chơng trình cũ bằng tia tử ngoại hoặc băng điện. Sau đó
nạp chơng trình mới vào bằng thiết bị chuyên dụng. Sau khi đã nạp chơng
trình mới bộ vi điều khiển hoạt động giống nh bộ 8051 thông thờng, tất nhiên
là giá thành cao hơn.
Đại diện cho các chíp trên đó là chip 89C51 đây là chíp có bộ nhớ
EEPROM (FLASH ROM) có thể nạp và xoá chơng trình nhiều lần bằng điện.
Tuy có cấu tạo khác nhau về bộ nhớ chơng trình nhng về cơ bản, nhất là tập lênh
thì bộ vi điều khiển 8051 và 8951 đều có thể dùng lẫn cho nhau đợc. Vì vậy mà
chíp này hiện đang đợc ứng dụng rất nhiều trong các lĩnh vực khác nhau, cho nên
trong đồ án tôi đi sâu vào nghiên cứu và trình bày về chip vi điều khiển này.
1.1.2. Những tính chất đặc trng cho họ vi điều khiển MCS-51
- Đơn vị xử lý trung tâm 8 bit đã đợc tối u hoá để đáp ứng chức năng
điều khiển.
- Khối lôgic xử lý theo bit thuận tiện cho các phép toán Bool.
- Bộ tạo dao động giữ nhịp bên trong đến 12MHz
- Tập lệnh rất phong phú.
- Giao diện nối tiếp có khả năng hoạt động song công, đồng bộ (UA RT).
- Có 16 (32) đờng dẫn vào/ra hai hớng và từng đờng dẫn có thể đợc định
địa chỉ một cách tách biệt.
- Năm nguồn ngắt với hai mức u tiên.
- Dung lợng của bộ nhớ ROM bên ngoài có thể đến 64 kbyte
- Dung lợng của bộ nhớ dữ liệu RAM bên ngoài có thể đến 64 kbyte.
- Dung lợng của bộ nhớ RAM bên trong, nhiều nhất có thể đến 128 kbyte.
- Hai bộ đếm định thời 16 bit.
- Bus và khối định thời tơng thích với các khối ngoại vi của bộ vi điều
khiển 8085/88. Bảng 1.1 trình bày tổng quát về họ vi điều khiển MCS-51.
2
Bảng 1.1 Một số chíp vi điều khiển trong họ MCS-51 và những

thông số cơ bản của chúng
Tên Công nghệ ROM
trong
RAM
trong
Timer
16 bit
Nguồn
ngắt
8031
8051
8751
NMOS
NMOS
NMOS
-
4 kbyte
4k EEPROM
128 byte
128 byte
128 byte
2
2
2
5
5
5
8032
8052
8052

NMOS
NMOS
NMOS
-
4 kbyte
4k EEPROM
256 byte
256 byte
256 byte
2
2
2
6
6
6
80C31
80C51
87C51
CMOS
CMOS
CMOS
-
4 kbyte
4k EEPROM
128 byte
128 byte
128 byte
2
2
2

5
5
5
80C32
80C52
87C52
CMOS
CMOS
CMOS
-
4 kbyte
4k EEPROM
256 byte
256 byte
256 byte
3
3
3
6
6
6
1.1.3. Những ứng dụng cơ bản của họ vi điều khiển 8051
Sau khi ra đời họ vi điều khiển 8051 đã đợc ứng dụng rộng rãi trong
các lĩnh vực khác nhau:
- Trong gia đình sử dụng để điều khiển thiết bị điện, điện thoại, máy
tính, truyền hình cáp, máy quay cammera, các nhạc cụ, các bộ mở cửa
- Trong văn phòng sử dụng cho máy tính, điện thoại, hệ thống an toàn,
máy sao chụp , máy in lazer, máy Fax
- Trong công nghiệp sử dụng để điều khiển các lò nung, các dây chuyền
sản xuất, các máy cái, máy công cụ, trong ô tô

- Trong quân sự đã đợc sử dụng để điều khiển các phơng tiện, vũ khí
phục vụ chiến tranh
Trong thực tế hiện nay họ vi điều khiển MCS-51 còn đợc ứng dụng vào
nhiều lĩnh vực khác nữa và nó đã và đang mang lại sự thay đổi rất lớn trong
lĩnh vực tự động điều khiển.
1.2. bộ vi điều khiển 89C51
2.2.1. Cấu trúc phần cứng
1. Sơ đồ chân tín hiệu của chip 89C51
Chip 89C51, có đầy đủ chức năng của một hệ vi điều khiển 8 bit, đợc
tích hợp trong một chip IC 40 chân. Các đặc tính cơ bản: tần số xung đồng hồ
12 MHz; bộ nhớ EEPROM 4KB và bộ nhớ RAM 128B c trú bên trong, nhng
có thể mở rộng thêm bằng các bộ nhớ ngoài tới 64KB; có 4 cổng 8 bit, vào/ra
hai chiều để giao tiếp với các thiết bị ngoại vi. Sơ đồ chân kí hiệu của chip
89C51đợc trình bày trên hình 1.1.
3
VssVcc
XTAL1
XTAL2
P0.ì
P3.ì
chip 89C51
RxD
TxD
INT0
INT1
T0
T1
WR
RD
P1.ì

P2.ì
PSEN
RST
ALE-(PRO)
EA-Vpp
ADDRESS
AD.ì
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
RST
RxD-P3.0
TxD-P3.1
INT0-P3.2
INT1-P3.3
T0-P3.4
T1-P3.5
WR-P3.6
RD-P3.7
XTAL2
XTAL1
Vss
1 40
2 39
3 38

4 37
5 36
6 35
7 34
8 33
9 chip 89C51
32
10 31
11 30
12 29
13 28
14 27
15 26
16 25
17 24
18 23
19 22
20 21
Vcc
P0.0-AD0
P0.1-AD1
P0.2-AD2
P0.3-AD3
P0.4-AD4
P0.5-AD5
P0.6-AD6
P0.7-AD7
EA-Vpp
ALE-(PRO)
PSEN

P2.7-A15
P2.6-A14
P2.5-A13
P2.4-A12
P2.3-A11
P2.2-A10
P2.1-A9
P2.0-A8
Hình 1.1. Sơ đồ chân ký hiệu của chip 89C51
Chức năng các chân của chip 89C51 đợc trình bày trên bảng 1.2.
Bảng 1.2. Chức năng các chân của chip 89C51
Chân Ký hiệu Chức năng
1-8 P1.0-P1.7 Chỉ có một chức năng là xuất/nhập nghĩa là để giao
tiếp với các thiết bị bên ngoài khi có yêu cầu
9 RES ET Là ngõ vào xoá chính dùng để thiết lập lại trạng thái
ban đầu cho hệ thống hay gọi tắt là reset hệ thống
10-17 P3.0-P3.7 Có hai chức năng xuất/nhập và khi không xuất/nhập
thì mỗi chân có chức năng riêng liên quan đến đặc tr-
ng cụ thể của chip.
18
19
XTAL1
XTAL2
Để ghép mạch dao động bên trong chíp 89C51 với
mạch dao động thạch anh bên ngoài
20 Vss Nối mass
21-28 P2.0-P2.7 Xuất/nhập hoặc byte địa chỉ cao của bus địa chỉ 16 bit
cho các thiết kế có bộ nhớ chơng trình ngoài hoặc các
thiết kế có nhiều hơn 256 byte bộ nhớ dữ liệu ngoài
29 /PSEN Xuất ra các xung đọc dùng cho bộ nhớ chơng trình

ngoài
30 ALE Xuất ra các xung điều khiển để lu trữ trung gian các
địa chỉ.
31 /EA Có thể đợc nối với 5V(lôgic 1) ở 8051/8052 thực hiện
chơng trình ROM trong hoặc với GND (lôgic 0) ch-
ơng trình cần thực hiện chứa ở ROM ngoài, khi này
chân /EA phải dợc đặt lên điện áp mass.
32-39 P0.7-P0.1 Trong các thiết kế có tối thiểu thành phần làm nhiệm
vụ xuất nhập. trong thiết kế lớn hơn có bộ nhớ ngoài
trở thành bus địa chỉ và bus dự liệu đa hợp.
40 V
cc
Nguồn nuôi dơng (+5V)
2. Sơ đồ chức năng của chip 89C51(hình 1.2)
Cấu trúc phần cứng của chip chip 89C51 nh là một hệ vi điều khiển 8
bít tối thiểu, bao gồm các thành phần cơ bản: Các thanh ghi chức năng đặc
biệt (SFR); bộ tính toán logic và số học (ALU); các cổng vào/ra (I/O); bộ nhớ
chơng trình EEPROM và bộ nhớ dữ liệu RAM.
a. Các thanh ghi chức năng đặc biệt
4
Các thanh ghi chức năng đặc biệt SFR đảm nhiệm các chức năng khác
nhau trong chip 89C51. Chúng nằm ở RAM trong của chip 89C51 và chiếm
vùng không gian nhớ 128 B đợc định địa chỉ từ 80H đến FFH. Tổ chức của
SFR trên bảng 1.2.
P0.0-P0.7 P2.0-P2.7
PSEN
ALE
EA
RST
P0.1-P1.7 P3.0-P3.7

Hình 1.2. Sơ đồ chức năng của chip 89C51
- Thanh ghi tích luỹ Acc: Dài 8 bit, có địa chỉ E0H trong SFR, dùng để
lu trữ các toán hạng và kết quả phép tính.
- Thanh ghi B: Dài 8 bit, địa chỉ F0H, thờng đợc sử dụng khi thực hiện
các phép toán nhân, chia. Đối với các lệnh khác, nó nh là một thanh ghi đệm.
5
Vss
Vcc
XTAL2
XTAL1
Điều khiển
cổng 0
Điều khiển
cổng 2
Chốt
cổng 0
Chốt
cổng 2
EEPROM
RAM
T.Ghi Đ/c
RAM
T.Ghi Đ/c
Ch.trình
T.Ghi
đệm
T.Ghi
Tăng PC
PC
DPTR

T.Ghi
B
Acc
TMP2
TMP1
SP
ALU
T.Ghi lệnh
T.Ghi trạng
thái đ/k
PSW
PCONSCONTMODTCONTH0TL0
TH1TL1SBUFIEIPKhối ngắt
cổng nối tiếp
và định thời
Chốt
cổng 1
Đ.khiển
cổng 1
Chốt
cổng 1
Đ.khiển
cổng 1
OSC
- Con trỏ ngăn xếp SP: Dài 8 bit, địa chỉ 81H. Giá trị của nó tự động
tăng trớc khi thực hiện các lệnh PUSH, CALL.
- Con trỏ dữ liệu DPTR: Dài 16 bit, gồm hai thanh ghi dài 8 bit hợp lại:
thanh ghi byte cao DPH và thanh ghi byte thấp DPL.
Bảng 1.3. Tổ chức của SFR trong RAM
F8

F0
E8
E0
D8
D0
C8
C0
B8
B0
A8
A0
98
90
88
80
FF
F7
EF
E7
DF
D7
CF
C7
BF
B7
AF
A7
9F
97
8F

87
B
AC
PSW
IP
P3
IE
P2
SCON SBUF
P1
TCON TMOD TL0 TL1 TH0 Th1
P0 SP DPL DPH PCON
- Từ trạng thái chơng trình PSW: Dài 8 bit, địa chỉ D0H, dùng để chứa
thông tin về trạng thái chơng trình, mỗi bit của PSW đảm nhiệm một chức
năng cụ thể. Thanh ghi này cho phép truy cập ở mức bit.
- Đệm dữ liệu truyền nối tiếp SBUF: Địa chỉ 99H, gồm hai thanh ghi
đệm phát và đệm thu.
- Thanh gi thời gian cơ sở: Chip chip 89C51 có hai đôi thanh ghi là
TH0, TL0 và Th1, TL1. Mỗi đôi dài 16 bit, dùng làm bộ đếm trong khối định
thời/bộ đếm tơng ứng. Địa chỉ các thanh ghi này từ 8AH đến 8DH.
- Thanh ghi điều khiển mode định thời/bộ đếm TMOD: Dài 8 bit, có địa
chỉ 89H, dùng để điều khiển kiểu chức năng định thời gian hay chức năng bộ đếm.
- Thanh ghi điều khiển khối định thời/bộ đếm TCON: Địa chỉ là 88H.
Khối định thời/bộ đếm trong mỗi mode định thời hoặc bộ đếm lại có 4 chế độ
hoạt động và thanh ghi TCON sẽ điều khiển việc lựa chọn này.
- Thanh ghi điều khiển cổng nối tiếp SCON: Địa chỉ là 98H. Nó giúp
chip 89C51 thiết lập trạng thái và điều khiển cổng thực hiện chức năng truyền
dữ liệu nối tiếp.
- Thanh ghi cho phép ngắt IE: Dài 8 bit, có địa chỉ là A8H. Nó cho phép
truy cập tới mức bit.

b. Các cổng của chip 89C51
Chip 89C51 có 4 cổng P0, P1, P2, P3 gồm 4 thanh ghi đệm cổng tơng
ứng P0, P1, P2, P3. Cả 4 cổng của chip 89C51 đều là các cổng vào/ra hai
6
chiều 8 bit. Riêng cổng P3 còn có thể đợc sử dụng để làm các chức năng điều
khiển đặc biệt khác (các đầu vào ngắt ngoài, các đầu vào đếm ngoài cho Timer
0,Timer 1) và truyền thông nối tiếp.
c. Bộ tạo dao động của chip chip 89C51
Chip 89C51 có 2 chân XTAL1 và XTAL2 đợc dùng nối với bộ tạo dao
động để tạo xung đồng hồ cho chip. Có hai phơng pháp tạo xung đồng hồ cho
chip 89C51. Đó là dùng bộ dao động bên trong và dùng tín hiệu bên ngoài.
d. Chu kỳ máy của chip chip 89C51
Một chu kỳ máy của chip 89C51 bao gồm 6 trạng thái từ S1 đến S6, mỗi
trạng thái gồm 2 nhịp và đợc gọi là hai pha P1, P2. Nh vậy mỗi chu kỳ máy có
12 nhịp (pha). Nếu bộ dao động làm việc với tần số 12MHz thì một pha kéo
dài 1às. Chu kỳ máy đợc minh họa trên hình 1.3.
Chu kỳ máy
S6 S1 S2 S3 S4 S5 S6 S1
P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1
Hình 1.3. Minh hoạ chu kỳ máy
e. Các ngắt của chip chip 89C51
Chip 89C51 có sáu ngắt, bao gồm hai ngắt ngoài /INT0, /INT1 và bốn ngắt
trong (hai ngắt của khối định thời/bộ đếm và hai ngắt phục vụ cổng nối tiếp).
Các ngắt ngoài có thể đợc kích hoạt theo mức hoặc theo sờn xung, tuỳ
thuộc vào giá trị các bit IT0, IT1 trong thanh ghi TCON. Ngắt ngoài có hai cờ
ngắt tơng ứng là IE0, IE1 cũng nằm trong thanh ghi TCON. Các ngắt trong của
hai khối định thời/bộ đếm đợc phát sinh bởi cờ ngắt TF0, TF1. Hai cờ ngắt này
đợc thiết lập khi thanh ghi định thời/bộ đếm thực hiện quay vòng.
g. Nguyên lý khởi động lại chip chip 89C51
Tín hiệu khởi động lại chip 89C51 đợc đa qua chân RST bằng cách giữ

chân RST ở mức cao trong khoảng thời gian lớn hơn hai chu kỳ máy (24 chu kỳ
dao động). Tín hiệu khởi động lại bên ngoài đa vào chân RST không đồng bộ với
thời gian RESET bên trong. Chân RST sẽ đợc lấy mẫu S5-P2 của mỗi chu kỳ
máy, các chân của cổng sẽ giữ hoạt động hiện hành của chúng cho 19 chu kỳ dao
động sau giá trị logic 1 đã đợc lấy mẫu ở chân RST. Sau khi khởi động lại, giá trị
các thanh ghi chức năng đặc biệt (SFR) đợc gán giá trị nh bảng 1.3.
Bảng 1.4. Giá trị RESETcủa các thanh ghi
Thanh ghi của SFR Giá trị RESET
PC 0000H
Acc 00H
7
B 00H
PSW 00H
SP 07H
DPTR 0000H
P0 ữ P3
FFH
IP
ììì00000B
IE
0ìì00000B
TMOD 00H
TCON 00H
TH0 00H
TL0 00H
TH1 00H
TL1 00H
SCON 00H
SBUF
PCON (NMOS)

0ìììììììB
PCON (CMOS)
0ììì0000B
h. Khối định thời/bộ đếm
Thanh ghi định thời/bộ đếm
Trong chip chip 89C51 có hai thanh ghi dài 16 bit có thể hoạt động nh
kiểu bộ định thời hay hoạt động nh kiểu bộ đếm. Thanh ghi TMOD trong SFR
sẽ điều khiển kiểu hoạt động này.
Nguyên lý hoạt động của khối định thời/bộ đếm
Thanh ghi định thời/bộ đếm làm việc ở kiểu bộ đếm thì tại thời điểm
P2-S5 của mỗi chu kỳ máy, xung nhịp bên ngoài đợc đa vào để đếm theo chân
T0 hoặc T1 khi chuyển từ mức logic 1 xuống mức logic 0 sẽ làm cho thanh
ghi tăng thêm một đơn vị phải mất hai chu kỳ máy, cho nên tốc độ đếm của
thanh ghi là 1/24 tần số dao động.
Do xung nhịp bên ngoài có tần số bất kỳ, cho nên khối định thời/bộ đếm
của chip chip 89C51 có bốn chế độ hoạt động để lựa chọn.
Chức năng định thời hoặc bộ đếm đợc lựa chọn bởi các bit điều khiển C/
T trong thanh ghi TMOD. Mỗi chức năng có bốn chế độ hoạt động, lại đợc lựa
chọn bởi cặp bit M1 M0. Các chế độ hoạt động 0, 1 và 3 giống nhau cho cả
chức năng định thời và bộ đếm, riêng chế độ 3 thì khác. Khối định thời/bộ
đếm đợc điều khiển bằng các bit trong thanh ghi TCON của SFR.
1.2.2. Tổ chức các cổng vào/ra (I/O)
1. Cấu trúc cổng vào/ra (I/O)
Mỗi cổng của chip 89C51 chứa một chốt SFR, một bộ điều khiển ra và
một bộ đệm vào. Bộ điều khiển ra của cổng P0, cổng P2 và bộ đệm vào của
cổng P0 đợc dùng để truy cập bộ nhớ ngoài. Cổng P0 xuất ra byte thấp của địa
chỉ, cổng P2 xuất ra byte cao của địa chỉ, khi cần địa chỉ hoá cho bộ nhớ
ngoài. Ngoài chức năng truy cập địa chỉ, cổng P0 còn truyền dữ liệu vào/ra.
Cổng P3 là cổng đa chức năng, các chân của cổng không những dùng để
xuất/nhập dữ liệu mà còn làm chức năng điều khiển đặc biệt khác.

8
Hình 1.4 biểu diễn sơ đồ chức năng của một bộ đệm vào ra một chốt bit
tiêu biểu cho các cổng của chip chip 89C51.
2. Thao tác ghi vào cổng
Khi thực hiện một lệnh mà làm thay đổi giá trị của chốt cổng, thì giá trị
mới này đến chốt cổng tại thời gian P2-S6 trong chu kỳ cuối của chu kỳ lệnh.
Tuy nhiên, giá trị chuẩn mẫu ở các chốt cổng là giá trị của các bộ đệm ra, xuất
hiện duy nhất trong các pha 1 (P1) của chu kỳ máy. Sau đó nó chuyển đến
chốt cổng vào pha thứ 2 của trạng thái thứ 6 (P2-S6), bởi vậy giá trị mới không
xuất hiện ở chân ra ngay trong và sau pha 1. Nếu sự thay đổi yêu cầu chuyển
tiếp từ 0 sang 1 ở cổng P1, P2 và P3, thì sẽ có một bộ kéo lên tăng cờng xuất
hiện trọng thời gian P1-S1 và P2-S1 của chu kỳ máy, ở cổng có sự chuyển tiếp.
Bộ kéo lên tăng cờng là các transistor trờng, do đó nó có thể tạo ra
dòng gấp 100 lần bộ kéo lên thông thờng.
Kênh Điều khiển Vcc
Địa chỉ/Dữ liệu
Tín hiệu đọc chốt
Kênh nội
bộ
Chốt
Tín hiệu
đọc chân
Hình 1.4. Cấu trúc chốt (Latch) từng bit cho các cổng vào/ra
1.2.3. Tổ chức không gian bộ nhớ
Chip chip 89C51 có vùng nhớ không gian nhớ đợc định địa chỉ riêng
biệt cho bộ nhớ chơng trình EEPROM và bộ nhỡ dữ liệu RAM.
1. Bộ nhớ chơng trình EEPROM
Bộ nhớ chơng trình EEPROM có vùng không gian nhớ nh biểu diễn trên
hình 1.5. Không gian cực đại của bộ nhớ này chiếm tới 64 KB, đợc định địa
chỉ từ 0000H đến FFFFH. Trong đó 4 KB EEPROM nội trú bên trong chip

89C51, đợc định địa chỉ từ 0000H đến 0FFFH và có thể mở rộng thêm 60 KB
bộ nhớ chơng trình bên ngoài, đợc định địa chỉ từ 1000H đến FFFFH.
Chip 89C51 cũng có thể sử dụng toàn bộ bộ nhớ chơng trình ngoài gồm
64 KB đợc định địa chỉ từ 0000H đến FFFFH.
9
Điềukhiển
Chuyển
mạch MUX
D Q
Chốt 1 bit
Clk Q
Bit P0.x
FFFFH FFFFH
Hoặc
1000H
0FFFH
0000H 0000H
Hình 1.5. Tổ chức không gian của bộ nhớ chơng trình EEPROM
Mỗi RESET, chip 89C51 sẽ truy cập bộ nhớ chơng trình từ địa chỉ khởi
đầu là 0000H, sau đó nếu cơ chế ngắt đợc sử dụng thì chip truy cập tới địa chỉ
quy định trong bảng véc tơ ngắt. Các địa chỉ cố định do ngắt định vị nh hình
1.6.
FFFFH



Hình 1.6. Bảng véc tơ ngắt của chip 89C51
Khi truy cập bộ nhớ chơng trình, chip 89C51 sử dụng xung chọn
______
PSEN

để điều khiển. Nếu chip 89C51 làm việc với bộ nhớ chơng trình nội trú thi
chân phát ra xung chọn
______
PSEN
không sử dụng, còn nếu chip 89C51 làm việc
với bộ nhớ chơng trình ngoại trú thì chân phát xung nhọn
______
PSEN
đợc sử dụng.
Khi đó, nếu
______
PSEN
= 0 thì cho phép chip đọc bộ nhớ chơng trình, còn khi
______
PSEN
= 1 thì không cho phép chip chọn bộ nhớ chơng trình.
Khi chip 89C51 truy cập bộ nhớ chơng trình ngoại trú, nó luôn sử dụng
địa chỉ 16 bit thông qua cổng P0 và cổng P2, bất kể bộ nhớ chơng trình ngoài
có dung lợng là 60 KB hay là 64 KB. Sơ đồ mạch của chip 89C51 truy cập bộ
nhớ chơng trình ngoài đợc thể hiện trên hình 1.7.
10
EA=1
(Trong)
EA=0
(Ngoài)
EA=1
(Ngoài)
0023H
001BH
0013H

000BH
0003H
0000H
RI hoặc TI
TF1
IE1
TF0
IE0
RESET
89C51
P1 P0
EA
ALE
P3 P2
PSEN
EEPROM
AD0 ữ AD7
A0 ữ A7
A8 ữ A15
OE

LATCH
OE
Hình 1.7. Sơ đồ tổ chức bộ nhớ chơng trình ngoài
Nguyên lý nhận lệnh từ bộ nhớ chơng trình ngoại trú đợc biểu diễn bằng
đồ thị thời gian nh trên hình 1.8. Khi truy cập bộ nhớ chơng trình ngoại trú,
chip 89C51 phát xung chốt địa chỉ ALE. Mỗi chu kỳ máy gồm hai xung chốt,
mỗi xung chốt tồn tại trong hai chu kỳ dao động từ P2-S1 đến P1-S2 và từ P2-
S4 đến P1-S5. Để địa chỉ hoá bộ nhớ chơng trình ngoại trú, byte thấp của địa
chỉ từ bộ đếm chơng trình PCL-OUT của chip 89C51 đợc xuất ra qua cổng P0

tại các trạng thái S2 và S5 của chu kỳ máy, byte cao của địa chỉ từ bộ đếm ch-
ơng trình PCH-OUT của chip 89C51 đợc xuất ra qua cổng P2 trong cả khoảng
thời gian của cả chu kỳ máy. Tiếp theo xung chốt, chip 89C51 phát ra xung
nhọn PSEN. Mỗi chu kỳ máy của chu kỳ lệnh gồm hai xung chọn, mỗi xung
chọn tồn tại trong ba chu kỳ dao động, từ P1-S3 đến hết P1-S4 và từ P1-S6 đến
P1-S1 của chu kỳ máy tiếp theo. Trong khoảng thời gian phát ra xung chọn thì
byte mã lệnh INST-IN đợc đọc từ bộ nhớ chơng trình để nhập vào chip.
Chu kỳ máy
S1 S2 S3 S4 S5 S6 S1
P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1
Hình 1.8. Đồ thị thời gian nhận lệnh từ bộ nhớ chơng trình ngoại trú
2. Bộ nhớ dữ liệu RAM
11
P2
PCL
out
P0 INST
in
PCL
out
INST
in
PCH
out
PCH
out
Chip 89C51 có bộ nhớ dữ liệu RAM chiếm một không gian nhớ độc lập
với bộ nhớ chơng trình EEPROM. Mô tả không gian nhớ dữ liệu của chip
89C51 trên hình 1.9. Trong chip 89C51 chứa bộ nhớ dữ liệu RAM có dung l-
ợng là 128 byte đợc định địa chỉ từ 00H đến 7FH và có một vùng không gian

nhớ đợc định địa chỉ từ 80H đến FFH dành riêng cho các thanh ghi chức năng
đặc biệt SFR. Bộ nhớ dữ liệu nội trú của chip 89C51 còn có thể có vùng nhớ
không gian nhớ với dung lợng 128 byte, đợc định địa chỉ từ 80H đến FFH
song song với vùng SFR.
FFFFH
FFH
80H
7FH
00H 0000H
Hình 1.9. Không gian bộ nhớ dữ liệu RAM
Chip 89C51 cũng có thể làm việc với bộ nhớ dữ liệu RAM ngoại trú có
dung lợng cực đại 64 KB, đợc định địa chỉ từ 0000H đến FFFFH.
a. Bộ nhớ dự liệu nội trú
Bộ nhớ dữ liệu có không gian nhớ 128 byte, đợc định địa chỉ từ 00H đến
7FH và đợc chi thành ba đoạn.
Đoạn thứ nhất gồm 32 byte có địa chỉ từ 00H đến 1FH, đợc chia thành
bốn băng thanh ghi. Đoạn thứ hai gồm 16 bit có địa chỉ từ 20H đến 2FH, đợc
phép truy cập bằng địa chỉ trực tiếp mức bit. chip 89C51 có các lệnh đợc sử
dụng để truy cập tới 128 bit trong đoạn bộ nhớ này sẽ chứa địa chỉ mức bit và
đợc đánh địa chỉ từ 00H đến 7FH. Đoạn thứ ba gồm 80 byte có địa chỉ từ 30H
đến 7FH, đợc dành riêng cho ngời sử dụng để lu trữ dữ liệu.
Bộ nhớ dữ liệu có không gian nhớ phía trên gồm 128 byte, đợc định địa
chỉ từ 80H đến FFH. Đợc tổ chức thành hai vùng nhớ có địa chỉ song song.
Nguyên tắc truy cập địa chỉ của từng vùng nhớ này khác nhau. Một vùng nhớ
đợc truy cập bằng địa chỉ trực tiếp, một vùng nhớ đợc truy cập bằng địa chỉ
gián tiếp.
b. Bộ nhớ dữ liệu ngoại trú
Chip 89C51 truy cập bộ nhớ dữ liệu ngoại trú bằng địa chỉ có độ dài hai
byte hoặc một byte.
12

RAM
ngoài
RAM
trong
SFR
Vcc
89C51
P1 P0
EA
ALE
P3 P2
RD
WR
EEPROM
AD0 ữ AD7
A0 ữ A7
A8 ữ A15
RD
WR

LATCH
OE
Hình 1.10. Sơ đồ tổ chức bộ nhớ dữ liệu RAM ngoại trú
Bộ nhớ có địa chỉ dài hai byte đợc chip 89C51 truy cập thông qua cổng
P0 và cổng P2. Trờng hợp bộ nhớ ngoài có dung lợng chỉ cần truy cập bằng
địa chỉ dài một byte thì chip 89C51 cấp địa chỉ thông qua cổng P0. Sơ đồ
mạch của chip 89C51 truy cập bộ nhớ dữ liệu ngoài đợc thể hiện trên hình
1.10. Sơ đồ mạch này dùng với bộ nhớ chơng trình nội trú trong chip 89C51,
cho nên chân
___

EA
đợc nối lên +Vcc.
Nguyên lý đọc dữ liệu bộ nhớ RAM ngoại trú đợc biểu diễn bằng đồ thị
thời gian theo hình 1.11. Khi truy cập bộ nhớ dữ liệu ngoại trú, tuỳ thuộc vào
nhiệm vụ đọc dữ liệu từ bộ nhớ hay ghi dữ liệu vào bộ nhớ mà nguyên lý truy
cập bộ nhớ dữ liệu có khác nhau.
Chu kỳ máy 1 Chu kỳ máy 2
S4 S5 S6 S1 S2 S3 S4
P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2
Hình 1.11. Đồ thị thời gian chu kỳ đọc dữ liệu từ bộ nhớ ngoài
Quá trình đọc dữ liệu từ bộ nhớ ngoài chip 89C51 phát phát xung chốt
địa chỉ ALE có bộ chốt bên ngoài. Mỗi chu kỳ máy có một xung chốt tồn tại
trong hai chu kỳ dao động từ P2-S4 đến P1-S5. Để địa chỉ hoá bộ dữ liệu ngoài,
byte thấp của địa chỉ từ bộ đếm dữ liệu DPL của chip 89C51 đợc xuất qua cổng
P0 vào khoảng các trạng thái S5 của các chu kỳ máy trong chu kỳ lệnh. Tiếp
theo, cũng ở cổng P0 byte thấp của địa chỉ từ PCL xuất ra truy cập bộ nhớ ch-
ơng trình để thực hiện lệnh tiếp theo. Byte cao của địa chỉ từ bộ đếm dữ liệu
DPH của chip 89C51 đợc xuất ra qua cổng P2, trong khoảng thời gian từ S5 đến
S4 của chu kỳ máy tiếp theo. Ngoài khoảng thời gian này, cổng P2 xuất địa chỉ
từ PCH đến bộ nhớ chơng trình. Trờng hợp địa chỉ hoá bộ nhớ có địa chỉ dài
13
RD
P0
PCL
ALE
DATA
in
P2
PCH
PCL

out
PCL
out
DPH
out
một byte, thì địa chỉ có thể từ bộ đếm dữ liệu DPL hoặc từ thanh ghi nào đó
trong băng thanh ghi đợc chọn, xuất ra qua cổng P0. Tiếp theo xung chốt, chip
89C51 phát ra tín hiệu điều khiển
___
RD
cho phép đọc dữ liệu từ bộ nhớ. Xung
___
RD
tồn tại trong ba trạng thái của mỗi chu kỳ máy từ P1-S1 đến P2-S3 và trong
khoảng thời gian này dữ liệu từ bộ nhớ đợc đọc vào chip 89C51.
Quá trình ghi dữ liệu vào bộ nhớ ngoài, có nguyên lý tơng tự nh quá trình
đọc dữ liệu từ bộ nhớ ngoài, chỉ khác là thay vì tín hiệu điều khiển đọc
___
RD
bằng tín hiệu điều khiển ghi
___
WR
.
1.2.4. Nguyên lý truyền tin nối tiếp
Chip 89C51 truyền tin nối tiếp bằng cổng RxD và TxD, dữ liệu xuất
nhập truyền qua cổng nối tiếp bằng tốc độ baud và đều qua vùng đệm nối tiếp
(SBUF). Cổng nối tiếp của chip 89C51 là cổng truyền tin hai chiều với khả
năng vừa thực hiện chức năng nhận vừa thực hiện chức năng đệm, tức là nó có
thể nhận byte kế tiếp, trớc khi byte đợc nhận trớc nó đợc đọc từ thanh ghi
đệm. Tuy nhiên, nếu byte đầu tiên vẫn cha đợc đọc tại thời điểm nhận của byte

thứ hai, thì byte này sẽ bị mất. Điều khiển cổng nối tiếp bằng thanh ghi
SCON, trạng thái của hai bit SM0, SM1 trong SCON thiết lập bốn chế độ hoạt
động giao tiếp nối tiếp chuẩn:
- Chế độ 0: Dữ liệu nối tiếp vào và ra sẽ thông qua chân RxD. Chân
TxD sẽ đa ra xung nhịp đồng hồ. Khung dữ liệu gồm 8 bit đợc truyền/nhận
nối tiếp (LSB đầu tiên). Tốc độ baud đợc cố định bằng 1/12 tần số bộ dao
động clock.
- Chế độ 1: Chế độ này khung dữ liệu có 10 bit đợc truyền (thông qua
TxD) hoặc đợc nhận thông qua RxD gồm bit khởi đầu (có giá trị 0), 8 bit dữ
liệu (đầu tiên là LSB) và 1 bit dừng (có giá trị 1).
- Chế độ 2: Chế độ này 11 bit đợc truyền thông qua TxD hoặc đợc nhận
thông qua RxD gồm bit khởi đầu (có giá trị 0), 8 bit dữ liệu (đầu tiên là LSB),
1 bit dữ liệu thứ 9 có thể lập trình đợc và một bit dừng (có giá trị 1).
- Chế độ 3: Chế độ này 11 bit đợc truyền (thông qua TxD) hoặc đợc
nhận (thông qua RxD) gồm bit khởi đầu (có giá trị 0), 8 bit dữ liệu (đầu tiên là
LSB), 1 bit dữ liệu thứ 9 có thể lập trình đợc và 1 bit dừng (có giá trị 1). Thực
tế chế độ 3 giống chế độ 2 là khả biến và đợc xác định theo Timer 1.
Trong cả bốn chế độ, việc truyền đợc bắt đầu bởi bất kỳ một lệnh nào
mà có sử dụng thanh ghi SBUF nh một thanh ghi đích. Việc nhận cũng đợc bắt
đầu ở các chế độ, khi bit REN = 1.
14
Khi bộ vi điều khiển chủ muốn truyền một khối dữ liệu đến một trong
các bộ vi điều khiển khác, thì việc đầu tiên nó gửi đi một byte địa chỉ xác định
của bộ vi điều khiển đích. Một byte địa chỉ khác với một byte dữ liệu ở chỗ là
bit thứ chín bằng 1 ở byte địa chỉ và bằng 0 ở byte dữ liệu. Khi SM2 = 1 đợc
gán, thì không có bộ vi điều khiển nào khác đợc ngắt bởi một byte dữ liệu. Tuy
nhiên một byte địa chỉ sẽ ngắt tất cả các bộ vi điều khiển khác, để cho mỗi bộ
vi điều khiển khác có thể kiểm tra byte nhận đợc và để xem có phải nó đang đ-
ợc trỏ tới không. Bộ vi điều khiển nào trỏ tới sẽ xoá bít SM2 của nó và chuẩn bị
nhận các byte dữ liệu khác sẽ đa đến. Các bộ vi điều khiển khác mà không đợc

trỏ sẽ tiếp tục hoạt động của mình mà không cần quan tâm tới dữ liệu trên kênh.
* Thanh ghi điều khiển cổng nối tiếp
Thanh ghi trạng thái và điều khiển cổng nối tiếp là một thanh ghi chức
năng đặc biệt SCON. Thanh ghi này không những chứa các bit chọn chế độ mà
còn chứa bit dữ liệu thứ chín dành cho việc truyền và nhận (TB8 và RB8) và
chứa các bit ngắt cổng nối tiếp (TI và RI).
* Các tốc độ baud
Tốc độ baud ở chế độ 0 đợc cố định
Tốc baud chế độ 0 = Tần số bộ dao động / 12.
Tốc độ buad ở chế độ 2 phụ thuộc vào giá trị của bi SMOD trong thanh
ghi chức năng đặc biệt PCON. Nếu SMOD = 0 (tức là giá trị khi xác lập lại), thì
tốc độ baud bằng 1/64 tần số của bộ dao động. Nếu SMOD = 1, thì tốc độ baud
bằng 1/32 tần số bộ dao động.
Trong 89C51, các tốc độ baud ở chế độ 1 và 3 do Timer 1 quyết định.
* Sử dụng Timer 1 để tạo ra tốc độ baud
Khi Timer 1 đợc sử dụng nh bộ tạo tốc độ baud thì các tốc độ baud ở chế
độ 1 và 3 do tốc độ tràn của Timer 1 và giá trị của SMOD quyết định.
Tốc độ baud chế độ 1 và 3 =
32
2
SMOD
x (tốc độ tràn của Timer 1).
Ngắt của Timer 1 sẽ mất tác dụng trong ứng dụng này.
Bảng 1.5. Các tốc độ baud thờng dùng do Timer 1 tạo ra
15
Tốc độ baud Tần số (MHz) SMOD
Timer 1
C/T Chế
độ
Giá trị

tái nạp
Cực đại chế độ 0:1
MHz
12
ì ì ì ì
Cực đại chế độ 2:375 K 12 1
ì ì ì
Chế đọ 1, 3:62.5 K 12 1 0 2 FFH
19.2 K 11.059 1 0
2
FDH
9.6 K 11.059 0 0
2
FDH
4.8 K 11.059 0 0 2 FAH
2.4 K 11.059 0 0 2 F4H
1.2 K 11.059 0 0 2 E8H
137.5 11.986 0 0 2 1DH
110 6 0 0 2 72H
110 12 0 0 1 FEEBH
*Hoạt động của cổng nối tiếp ở chế độ 1
Thờng sẽ đặt chế độ truyền dữ liệu cổng nối tiếp chip 89C51 trong hệ phát
triển vi điều khiển ở chế độ 1, vì vậy ta chỉ khảo sát cổng nối tiếp làm việc ở chế
độ này. Dữ liệu 10 bit đợc truyền (qua TxD) hoặc đợc nhận (qua RxD). Khung tin
bao gồm: 1 bit khởi đầu (giá trị 0), 8 bit dữ liệu (LSB đầu tiên) và 1 bit dừng (giá
trị 1). Khi nhận tin, bit dừng chuyển vào RB8 trong thanh ghi SCON. Hình 1.12. là
sơ đồ chức năng của cổng nối tiếp ở chế độ 1 và hình 1.13 là đồ thị thời gian liên
quan tới quá trình truyền/ nhận tin của chế độ này.
Quá trình truyền đợc khởi đầu bởi lệnh bất kỳ có sử dụng SBUF nh một
thanh ghi đích. Tín hiệu "ghi vào SBUF" sẽ nạp giá trị 1 vào vị trí bit thứ 9 của

thanh ghi dịch truyền và báo cho khối điều khiển TX về yêu cầu cần truyền tin.
Quá trình truyền thực tế bắt đầu ở giai đoạn S1-P1 của chu kỳ máy theo sau chu kỳ
tiếp của bộ đếm 16. Do đó, các thời điểm của bit truyền đợc đồng bộ với nhịp bộ
đếm 16, chứ không phải với tín hiệu "ghi vào SBUF".
Quá trình truyền tin bắt đầu bằng sự kích hoạt tín hiệu send dùng để mở
cổng OR cho TxD (đặt bit khởi đầu tại TxD). Sau đó là đến tín hiệu DATA đợc
kích hoạt để mở cổng AND. Điều này cho phép mở thông đờng truyền thừ thanh
ghi dịch truyền đến đầu ra TxD. Xung nhịp để dịch các bit trong thanh ghi dịch
truyền sẽ xuất hiện ngay sau đó.
Timer 1 TB8 89C51 Internal BUS
Overflow Write
to SBUF
SMOD SMOD TxD
= 0 = 1
16
Load SBUF
Shift
S
D Q
CL
Zero Detector
Start Shift Data
TX Control
TX Clock Send
SBUF
+2
RX Clock R1 Load
SBUF
RX Control
Shift Start

+16
+16
1- to - 0
Transition
Detector
Bit Detector
In. Shift Register
SBUF
1FFH
Serial
Interrupt
Sample
RxD

Read SBUF
89C51 Internal BUS
H×nh 1.12. Cæng truyÒn tin nèi tiÕp Mode 1
TX
Clock
Write to SBUF
Send
Data Transmit S1 P1
Shift
TxD Start Bit
TI D0 D1 D2 D3 D4 D5 D6 D7
RX +16 Reset
Clock
RxD Start Bit
D0 D1 D2 D3 D4 D5 D6 D7
17

Stop Bit
Bit Detector
Sample Time
Receive
Shift
Stop Bit
RI
Hình 1.13. Đồ thị thời gian Mode 1
Khi các bit dữ liệu dịch sang phải, thì các giá trị 0 sẽ đợc đa vào từ bên
trái. Khi MSB của byte dữ liệu ở vị trí đầu ra của thanh ghi dịch, thì giá trị 1
(ban đầu đã đợc nạp vào vị trí thứ 9) sẽ đợc điền ngay vào bên trái của bit
MSB, còn các bit kể từ nó sang trái đều có giá trị 0. Điều kiện này sẽ là chỉ thị
để khối điều khiển TX thực hiện lần dịch cuối cùng và sau đó đa trả
_______
SEND
về
mức thụ động, đồng thời xác lập cờ ngắt TI. Thời điểm này rơi vào chu kỳ thứ
10 của bộ đếm 16, sau thời điểm "ghi vào SBUF".
Quá trình nhận tin đợc khởi đầu bằng việc phát hiện sự chuyển trạng
thái từ 1 đến 0 ở đờng thu nối tiếp RxD. Để phát hiện chỉnh xác, tín hiệu trên
đờng RxD đợc lấy mẫu ở tốc độ gấp 16 lần tốc độ baud của đờng truyền. Khi
một bit đợc phát hiện, thì bộ đếm 16 đợc xác lập ngay và giá trị 1FFH đợc ghi
vào thanh ghi dịch đầu vào. Việc tái thiết lập bộ đếm 16 sẽ đồng nhất thời
điểm tràn của bộ đếm, với biên thời gian của bit đang đi đến đầu thu.
Bằng cách đó, mỗi bit đợc chia thành 16 phần thời gian bằng nhau. Tại
các phần thời gian thứ 7, 8 và 9 của mỗi bit, bộ phát hiện sẽ trích mẫu của
RxD. Giá trị đợc chấp nhận là giá trị đã có ít nhất là 2 trong 3 mẫu. Phơng
pháp này đợc thực hiện nhằm để chống nhiễu đờng truyền. Nếu giá trị đợc
chấp nhận đối với bit đầu tiên không phải là 0 (không phải bit START), thì các
mạch thu đợc tái xác lập để quay trở lại chờ một đột biến từ 1 đến 0 khác.

Khi các bit dữ liệu đi vào từ phái bên phải của thanh ghi dịch, thì các
giá trị từ 1 đợc dịch sang trái nó. Khi bit khởi đầu đến vị trí trái cuối cùng của
thanh ghi dịch (ở chế độ 1 nó là thanh ghi 9 bit), thì nó chỉ thị cho khối điều
khiển RX thực hiện phép dịch chuyển cuối cùng rồi nạp SBUF và RB8 và xác
lập RI. Tín hiệu để nạp SBUF và RB8, và để xác lập RI sẽ đợc tạo ra khi và chỉ
khi các điều kiện sau đợc thoả mãn ở thời điểm xung nhịp cuối cùng đợc tạo
ra:
- RI = 0 và
- Hoặc SM2 = 0 hoặc bit STOP nhận đợc bằng 1.
Nếu một trong hai điều kiện này không đợc thoả mãn, thì byte dữ liệu
nhận đợc sẽ bị mất. Nếu cả hai điều kiện đợc thoả mãn, thì bit dừng chuyển
vào RB8, 8 bit dữ liệu chuyển vào SBUF và RI đợc kích hoạt. Tại thời điểm
này, bất kể các điều kiện trên đợc thoả mãn hay không, thì khối điều khiển sẽ
vẫn quay trở lại tiếp tục chức năng phát hiện một đột biến mới từ 1 đến 0 trên
đờng thu tin RxD.
1.2.5. Nguyên lý thực hiện lệnh
18
1. Cấu trúc lệnh của 89C51
Hoạt động của chip 89C51 là thực hiện các lệnh theo thứ tự của tập lệnh đã
cài đặt trong bộ nhớ ROM hoặc thực hiện lệnh theo điều khiển của cơ chế ngắt.
Mỗi lệnh của chip 89C51 đợc xử lý theo chu kỳ lệnh gồm hai giai đoạn:
giai đoạn gọi lệnh và giai đoạn thực hiện lệnh. Mỗi lệnh gồm hai phần: Mã
lệnh (opcode) và toán hạng (operand). Mã lệnh là phần đầu tiên của lệnh, nó
cho biết ý nghĩa của lệnh và độ dài của câu lệnh. Toán hạng là phần thứ hai
của lệnh. Độ dài của câu lệnh tuỳ thuộc vào từng lệnh. Trong tập lệnh của chip
89C51 có các lệnh dài một byte, hai byte hoặc ba byte. Những lệnh có độ dài
hai hoặc ba byte thì byte đầu tiên luôn luôn là byte mã lệnh, các byte tiếp theo
là byte toán hạng. Các lệnh dài một byte thì cả mã lệnh và toán hạng cùng
nằm trong một byte lệnh.
Mỗi chu kỳ lệnh của chip 89C51 phải thực hiện trong nhiều chu kỳ máy.

Số chu kỳ máy trong chu kỳ lệnh tuỳ thuộc vào mỗi lệnh. Các lệnh dài một
byte thì thực hiện trong một chu kỳ máy, các lệnh dài hai hoặc ba byte thì thực
hiện trong hai chu kỳ máy. Tuy nhiên có lệnh dài một byte lại thực hiện trong
hai, ba đến bốn chu kỳ máy trong khi có lệnh dài hai hoặc ba byte thì chỉ thực
hiện trong có một chu kỳ máy.
2. Xử lý lệnh của chip 89C51
a. Giai đoạn gọi lệnh
Giai đoạn đầu tiên của quá trình xử lý lệnh là giai đoạn gọi lệnh từ bộ
nhớ chơng trình. Từ bộ nhớ chơng trình, địa chỉ của lệnh cần xử lý đợc xuất
theo BUS địa chỉ qua thanh ghi địa chỉ chơng trình để xác định ngăn chứa byte
mã lệnh cần xử lý. Tuỳ theo bộ nhớ chơng trình là nội trú hay ngoại trú mà
chip 89C51 thực hiện truy xuất khác nhau. Nếu truy xuất bộ nhớ chơng trình
nội trú, byte mã lệnh sẽ trực tiếp đợc xuất ra theo BUS dữ liệu để chuyển tới
thanh ghi lệnh. Nếu truy xuất bộ nhớ chơng trình ngoại trú, địa chỉ lệnh cần
xử lý đợc chuyển qua cổng P0 và cổng P2 ra ngoài, đồng thời khối điều khiển
và đồng bộ phát tín hiệu
_______
PSEN
, ngay ở chu kỳ đầu gọi lệnh để chọn bộ nhớ
chơng trình ngoài. Tiếp theo, tín hiệu ALE cũng đợc phát ra trong thời gian
chu kỳ dao động thứ 2 và thứ 3 của chu kỳ máy thứ nhất để chốt byte thấp của
địa chỉ. Khi đợc truy cập, byte mã lệnh từ bộ nhớ chơng trình đợc xuất ra theo
BUS dữ liệu, qua cổng P0 và qua chốt cổng P0 để chuyển vào thanh ghi lệnh.
Byte mã lệnh từ thanh ghi lệnh đợc chuyển sang bộ giải mã lệnh để xác định ý
nghĩa của lệnh và độ dài cầu lệnh. Nhờ đó, khối điều khiển và đồng bộ với quá
trình giải mã lệnh, bộ đếm chơng trình tự động tăng thêm một đơn vị để xác
định địa chỉ của lệnh cần xử lý tiếp theo trong máy tính PC, nếu lệnh vừa xử lý
dài một byte; hoặc xác định địa chỉ của các toán hạng, nếu lệnh đang xử lý dài
hai hoặc ba byte và quá trình gọi các byte tiếp theo của lệnh cũng giống nh
quá trình gọi byte mã lệnh.

b. Giai đoạn thực hiện lệnh
19
Giai đoạn thứ hai của quá trình xử lý một lệnh là giai đoạn thực hiện
lệnh. Các lệnh khác nhau sẽ có nguyên lý thực hiện các lệnh khác nhau. Ph-
ơng thức thực hiện lệnh, thời điểm và khoảng thời gian thực hiện lệnh tuỳ
thuộc vào ý nghĩa và chức năng của từng lệnh (lệnh dài một byte một chu kỳ
máy; lệnh dài hai byte hai chu kỳ máy; hoặc dạng lệnh có địa chỉ trực tiếp, địa
chỉ gián tiếp; lệnh làm thay đổi nội dung các thanh ghi chức năng; lệnh truy
cập bộ nhớ dữ liệu).
- Thực hiện với lệnh dài một byte một chu kỳ máy: Với loại lệnh này, giai
đoạn gọi lệnh và giai đoạn thực hiện lệnh đều thực hiện trong một chu kỳ máy.
Thời gian gọi lệnh bắt đầu từ trạng thái S1 đến cuối trạng thái S3 và thời gian
thực hiện lệnh bắt đầu từ trạng thái S4 đến cuối trạng thái S6 của chu kỳ máy.
- Thực hiện với lệnh dài một byte, hai hoặc bốn chu kỳ máy: Là các
lệnh truy cập bộ nhớ dữ liệu ngoại trú, lệnh tăng con trỏ dữ liệu DPTR hay là
lệnh xử lý dữ liệu 16 bit. Sau thời gian gọi lệnh, từ đầu trạng thái S4 của chu
kỳ lệnh đầu tiên (có một số lệnh phải từ đầu trạng thái S4 của chu kỳ lệnh thứ
2) cho đến hết chu kỳ lệnh cuối sẽ diễn ra quá trình thực hiện lệnh. Đối với
các lệnh truy cập bộ nhớ dữ liệu ngoại trú, khi thực hiện lệnh thì khối điều
khiển và đồng bộ sẽ phát ra tín hiệu chốt địa chỉ ALE trong khoảng thời gian
từ P2-S4 đến P2-S5 của chu kỳ máy, phát tín hiệu
___
RD
hoặc
___
WR
trong khoảng
thời gian từ P1-S1 đến P2-S3 của chu kỳ máy thứ 2 hay các chu kỳ máy tiếp theo
trong chu kỳ lệnh, để điều khiển đọc bộ nhớ hoặc ghi vào bộ dữ liệu.
- Thực hiện với lệnh dài hai byte, một chu kỳ máy: Chip 89C51 có các

lệnh trong các nhóm lệnh chuyển dữ liệu, thực hiện tính toán logic và số học,
điều khiển biến mà toán hạng đích là thanh ghi tích luỹ, toán hạng nguồn là
địa chỉ ô nhớ dữ liệu 8 bit của RAM nội trú hoặc địa chỉ các thanh ghi 8 bit
trong SFR. Lệnh có byte đầu lã mã lệnh byte thứ 2 là toán hạng. Khi byte mã
lệnh đợc gọi, nó đợc chuyển vào thanh ghi lệnh và bộ đếm chơng trình tự
động tăng thêm một đơn vị để xác định địa chỉ của byte thứ 2. Khi byte thứ 2
đợc gọi, nó đợc chuyển vào thanh ghi cơ sở và từ đây các ô nhớ dữ liệu 8 but
của RAM hoặc địa chỉ các thanh ghi 8 bit trong SFR đợc địa chỉ hoá. Thời
gian gọi lệnh bắt đầu từ trạng thái S1 đến cuối trạng thái S3 và thời gian thực
hiện lệnh bắt đầu từ trạng thái S4 đến cuối trạng thái S6 của chu kỳ máy.
- Thực hiện với lệnh dài hai byte hoặc ba byte, hai chu kỳ máy: Lệnh này th-
ờng là các lệnh chuyển dữ liệu giữa các ô nhớ của bộ nhớ nội trú với nhau
hoặc chuyển dữ liệu là hằng số có trong câu lệnh vào các ô nhớ của bộ nhớ
nội trú hay các lệnh nhảy. Các lệnh này có byte thứ 2 hoặc byte thứ 2 và thứ 3
là các byte toán hạng sẽ đợc thực hiện ở cuối chu kỳ máy thứ nhất và cả chu
kỳ máy thứ 2.
20

×