bµi 7
Bé ®Þnh thêi
8253
1. Giới thiệu
2. Bộ định thời 8253
3. Từ điều khiển và khởi tạo
8253
4. Các chế độ tạo xung ra
5. Nối ghép 8253/8254 ở máy
tính XT
6. Một số lập trỡnh ứng dụng
bộ định thời 8253
1. Giíi thiÖu
RESET
tíi 8088
OSC
14,3818 Mhz
®Õn khe c¾m
më réng
PCLK
2,38683 Mhz
tíi 8253
CLK
4,772776 Mhz
tíi 8088
READY
tíi 8088
510 Ω
510 Ω
X
1
X
2
XTAL
OSC
14,31818
Mhz
D
Q
CK
Chia 2
SYNC
CK
D Q
FF2
Chia 3
SYNC
CK
D Q
FF2
F/
EFI
CSYNC
RDY1
RDY2
NC
/WAIT
H×nh 1.8. M¹ch t¹o xung ®ång hå
8284A
RES
C
DMAWAIT
RDY
ASYNC
AEN2
AEN1
Trong các hệ máy tính, ngư
ời ta dùng một bộ dao động
đồng hồ để đồng bộ hoạt
động của tất cả các chip vi
mạch nối tới CPU.
Tần số đồng hồ cao nhất
dùng cho bộ vi xử lý 80x86.
Các thiết bị ngoại vi làm
việc với tần số thấp hơn.
Bộ định thời 8253/54 dùng
để giảm tần số theo yêu
cầu của các ứng dụng.
Máy tính IBM PC/XT dùng
chip 8253.
Từ thế hệ IBM PC/AT dùng
chip 8254.
8253/54 Bố trí chân giống
nhau, 8254 tương thích với
8253
2. Bộ định thời
8253
* Tổ chức khối
Bộ đếm 0
Bộ đếm 1
Bộ đếm 2
D0-D7
Data
RD
WR
A0
A1
CS
BUS dữ liệu và điều khiển nội bộ
Đệm dữ
liệu
Đọc ghi
lôgich
Thanh ghi
từ đ/k
CLK0
Gate0
Out0
CLK1
Gate1
Out1
CLK2
Gate2
Out2
Hình 9.1 Sơ đồ khối bộ định thời
8253A
1
2
3
4
5
6
7
8
9
10
11
12
8
2
5
3
Vcc
A1
A0
CLK2
OUT2
GATE2
CLK1
GATE1
OUT1
D7
D6
D5
D4
D3
D2
D1
D0
CLK0
OUT0
GATE 0
GND
D7-D0
A0
A1
8253
CLK0
GATE0
OUT0
CLK1
GATE1
OUT1
CLK2
GATE2
OUT2
Bè trÝ ch©n
8253
WR
RD
CS
WR
RD
CS
24
23
22
21
20
19
18
17
16
15
14
13
B¶ng 9.1. §Þnh ®Þa chØ
cæng cña 8253/54
CS A1A0 Cæng
0 0 0 Bé ®Õm 0
0 0 1 Bé ®Õm 1
0 1 0 Bé ®Õm 2
0 1 1 Thanh ghi ®iÒu
khiÓn
1 x x Kh«ng chän
8253/54
H×nh 13.3. Tõ ®iÒu khiÓn 8253/54
D7 D6 D5 D4 D3 D2 D1 D0
SC1 SC0 RL1 RL0 M2 M1 M0 BCD
00 Chèt bé ®Õm
01 N¹p LSB
10 N¹p MSB
11 N¹p LSB tríc
MSB sau
00 Chän bé ®Õm 0
01 Chän bé ®Õm 1
10 Chän bé ®Õm 2
11 Kh«ng hîp lÖ
Chän chÕ ®é
000 Mode 0
001 Mode 1
x10 Mode 2
x11 Mode 3
100 Mode 4
101 Mode 5
0 Bé ®Õm nhÞ ph©n
1 BCD (4 decades)
3. tõ ®iÒu khiÓn vµ Khëi t¹o
8253
D0: chọn hệ đếm
Nhị phân (0-FFFFH) hay
BCD (0- 9999H).
Số chia lớn nhất là:
2
16
với đếm Nhị phân và
10
4
với đếm BCD.
Trường hợp số đếm lớn nhất là
65.536D hoặc 10000 BCD, bộ đếm
cần nạp giá trị 0.
D1, D2, D3: Chọn chế độ
Có 6 chế độ tạo xung ra
Mode 0 Tạo xung khi đếm hết
Mode 1 Tạo 1 xung bằng phần cứng
Mode 2 Tạo xung tỷ lệ
Mode 3 Tạo xung vuông
Mode 4 Tạo xung kích phát bằng
phần
mềm
Mode 5 Tạo xung kích phát bằng
phần
cứng
D4 và D5: chọn byte nạp số
đếm
Bus dữ liệu của 8253/54 là 1 byte,
nhưng số chia cần nạp có thể lên
đến 2 byte (FFFFH).
Dùng D4, D5 để chọn cách nạp số
chia.
1. Nạp byte trọng số cao (MSB).
2. Nạp byte trọng số thấp (LSB)
3. Nạp LSB trước và MSB sau.
Tất cả các bộ đếm 8253 đều đếm
lùi.
H×nh 13.3. Tõ ®iÒu khiÓn 8253/54
D7 D6 D5 D4 D3 D2 D1 D0
SC1 SC0 RL1 RL0 M2 M1 M0 BCD
00 Chèt bé ®Õm
01 N¹p LSB
10 N¹p MSB
11 N¹p LSB tríc
MSB sau
00 Chän bé ®Õm 0
01 Chän bé ®Õm 1
10 Chän bé ®Õm 2
11 Kh«ng hîp lÖ
Chän chÕ ®é
000 Mode 0
001 Mode 1
x10 Mode 2
x11 Mode 3
100 Mode 4
101 Mode 5
0 Bé ®Õm nhÞ ph©n
1 BCD (4 decades)
tõ ®iÒu khiÓn vµ Khëi t¹o 8253
Ví dụ
Chân CS của 8253/54 được kích
hoạt bởi địa chỉ A7-A2 =100101.
a) Tìm địa chỉ cổng gán cho
8253/54
b) Lập trình cho Bộ đếm 0 để tạo
xung vuông tần số ra 10KHz nếu
CLK0=1,2MHz
c) Lập trình bộ đếm 2 để có tần số
ra bằng 1KHz nếu tần số vào là
2MHz
Giải:
a) Tìm địa chỉ cổng:
CS A1A0 Cổng ĐC
cổng (hex)
1001. 01 00 Bộ đếm 0
94
1001. 01 01 Bộ đếm 1 95
1001. 01 10 Bộ đếm 2 96
1001. 01 11 Thanh ghi ĐK 97
b) Lập trình bộ đếm 0
+ Hệ số chia: K=Fvào/Fra =
1,2MHz/10KHz=1200/10=120
K=120<256 sử dụng LSB.
+ TGĐK=0001.0110=13H
Ch¬ng tr×nh
MOV AL,13H
OUT 97H,AL
MOV AL,120
OUT 94H,AL
c) LËp tr×nh bé ®Õm 2
Sè chia: K= 1,2MHz/500 Hz=
1200/0.5=2400
Tõ ®iÒu khiÓn: 1011.0110=B6H
Ch¬ng tr×nh nh sau:
MOV AL,B6H
OUT 97H,AL
MOV AX,2400
OUT 96H,AL
MOV AL,AH
OUT 96H,AL
4. C¸c chÕ ®é t¹o xung ra
cña 8253
Cã 6 chÕ ®é t¹o xung ra
Mode 0 T¹o xung khi ®Õm hÕt
Mode 1 T¹o 1 xung b»ng phÇn cøng
Mode 2 T¹o xung tû lÖ
Mode 3 T¹o xung vu«ng
Mode 4 T¹o xung kÝch ph¸t b»ng
phÇn
mÒm
Mode 5 T¹o xung kÝch ph¸t b»ng
phÇn
cøng
Mode 0: T¹o xung khi ®Õm hÕt.
Víi GATE=1, ®Çu tiªn bé ®Õm t¹o
tÝn hiÖu ra ë møc thÊp vµ duy tr×
møc nµy trong khi ®Õm.
Khi ®Õm hÕt, lèi ra chuyÓn lªn
møc cao vµ ë møc nµy cho ®Õn khi
sè ®Õm míi ®îc n¹p.
§é réng cña xung thÊp ®îc tÝnh:
t= N x T
Trong ®ã, N lµ sè ®Õm. T lµ chu kú
CLK.
Ví dụ: Mode0
Cho GATE1=1, CLK1=1 MHz và số đếm
N =1000. Xác định tín hiệu ra OUT1
nếu bộ đếm ở Mode0.
Giải:
Tclk1=1/F=1/1MHz=1às.
Tín hiệu OUT1 thấp trong khoảng
thời gian 1000 x 1 às = 1 ms.
GATE1=
1
OUT1
1000x1 às=1ms
W
R