Download as pdf or txt
Download as pdf or txt
You are on page 1of 53

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

D RESET
RES
Q tới 8088
CK OSC
510 
14,3181 X1 14,3818 Mhz
XTAL
8 510  OSC đến khe cắm
X2
Mhz mở rộng
Chia 3 Chia 2 PCLK
2,38683 Mhz
F/C SYNC
NC SYNC tới 8253
EFI
CSYNC CLK
RDY1 4,772776
DMAWAIT RDY2 Mhz
AEN1 tới 8088
CK
AEN2 CK READY
D Q
D Q FF2 tới 8088
/WAIT
RDY FF2

ASYNC

Hình 1.8. Mạch tạo xung đồng hồ 8284A


 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
BUS dữ liệu và điều khiển nội bộ
* TỔ CHỨC KHỐI
D0-D7
Data Đệm dữ Bộ đếm 0 CLK0
liệu Gate0
Out0

RD CLK1
WR Đọc ghi Bộ đếm 1 Gate1
A0 lôgich Out1
A1

CS

Thanh ghi Bộ đếm 2 CLK2


từ đ/k Gate2
Out2

Hình 9.1 Sơ đồ khối bộ định thời 8253A


D7 1 24 Vcc
D6 2 23 WR
D5 3 22 RD
D4 4 8 21 CS
D3 5 20 A1
D2 6
2
19 A0
D1 7 5 18 CLK2
D0 8 3 17 OUT2
CLK0 9 16 GATE2
OUT0 10 15 CLK1
GATE 0 11 14 GATE1
GND 12 13 OUT1

CLK0
D7-D0 GATE
0
OUT0
WR
8253 CLK1
RD
GATE
1
A0 OUT1
A1
CLK2
GATE
CS 2
OUT2

Bố trí chân 8253


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
3. TỪ ĐIỀU KHIỂN VÀ KHỞI TẠO
8253
D7 D6 D5 D4 D3 D2 D1 D0

SC1 SC0 RL1 RL0 M2 M1 M0 BCD

0 Bộ đếm nhị phân


1 BCD (4 decades)

Chọn chế độ
00 Chốt bộ đếm 000 Mode 0
01 Nạp LSB 001 Mode 1
00 Chọn bộ đếm 0
10 Nạp MSB x10 Mode 2
01 Chọn bộ đếm 1
11 Nạp LSB trước x11 Mode 3
10 Chọn bộ đếm 2
MSB sau 100 Mode 4
11 Không hợp lệ
101 Mode 5

Hình 13.3. Từ điều khiển 8253/54


D0: chọn hệ đếm
 Nhị phân (0-FFFFH) hay
 BCD (0- 9999H).
 Số chia lớn nhất là:
 216 với đếm Nhị phân và
 104 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.
TỪ ĐIỀU KHIỂN VÀ KHỞI TẠO 8253

D7 D6 D5 D4 D3 D2 D1 D0

SC1 SC0 RL1 RL0 M2 M1 M0 BCD

0 Bộ đếm nhị phân


1 BCD (4 decades)

Chọn chế độ
00 Chốt bộ đếm 000 Mode 0
01 Nạp LSB 001 Mode 1
00 Chọn bộ đếm 0
10 Nạp MSB x10 Mode 2
01 Chọn bộ đếm 1
11 Nạp LSB trước x11 Mode 3
10 Chọn bộ đếm 2
MSB sau 100 Mode 4
11 Không hợp lệ
101 Mode 5

Hình 13.3. Từ điều khiển 8253/54


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
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ụ: Mode 0
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

1000x1 s=1ms
OUT1

W
R
Mode 1: Tạo 1 xung kích phát bằng phần
cứng
 Khi chân GATE có 1 sườn xung dương từ
0 lên 1, ở đầu ra OUT từ cao xuống thấp
 Sau khi đếm hết thì OUT chuyển lên cao,
tạo độ rộng xung NxT.
 Sườn GATE là kích phát phần cứng.
Ví dụ: Mode1
a) Vẽ tín hiệu ra OUT1 nếu CLK1=1
MHz, N=500 và ở Mode1.
b) Vẽ dạng sóng ra OUT1 nếu sau 150
xung đồng hồ, GATE1 được kích phát
lại.
Giải:
a) OUT1 xuống thấp chỉ khi GATE1 từ 0 lên
1

GATE1
OUT1 500 s

WR
b) Nếu GATE1 được kích phát sau 150 xung
đồng hồ, COUNT1 được nạp lại giá trị
N=500 và đếm lại từ đầu sẽ tạo xung ra 650
s:

GATE1
OUT1 150s 500s

WR 6500 s
Phân biệt:
 Mode 0: Bộ đếm tạo xung ra ngay sau khi
bộ đếm được nạp, với điều kiện GATE=1.
 Mode1: Có sườn dương GATE, đầu ra
OUT xuống thấp trong thời gian NxT rồi
chuyển lên mức cao cho đến khi GATE được
kích phát trở lại.
 Mode1 Có tên gọi Kích phát cứng.
 Mode 2: Tạo sóng tỷ lệ hay bộ chia
N.
Khi GATE=1 thì đầu ra OUT sẽ ở
mức cao trong khoảng thời gian NxT,
rồi chuyển xuống thấp trong một xung
nhịp, sau đó việc đếm được nạp lại tự
động và quá trình lặp lại.
Ví dụ: Mode 2
Cho CLK2=1 MHz, GATE2=1 và
N=750, vẽ tín hiệu ra OUT2 nếu
COUNT2 được lập trình ở chế độ 2.
Giải:
Mode 2 số đếm được nạp lại tự động và bộ
đếm tiếp tục tạo ra OUT2

GATE2=1
1s 1s 1s
OUT2

W N N N
R 750s
Mode 3: Tạo xung vuông.
 Khi GATE=1, N chẵn thì đầu ra OUT tạo
xung vuông với độ rộng xung cao bằng độ
rộng xung thấp và =(TxN)/2.
 Nếu N lẻ, độ rộng xung cao có nhiều hơn
1 nhịp đồng hồ Tx(N+1)/2 so với độ rộng
xung thấp là Tx(N-1)/2.
 ở chế độ này, số đếm được tự động nạp
lại khi đếm hết nên tạo ra dãy xung vuông
liên tục có tần số là 1/N so với tần số CLK.
Ví dụ: Mode 3
Nếu CLK1=1 MHz, GATE1=1 và
N=1000, vẽ tín hiệu ra OUT1 nếu
COUNT1 được lập trình ở Mode3.
GATE=
1
OUT1

500s 500s 500s 500s 500s 500s

1000s 1000s
 Mode 4: Xung được kích phát bằng phần
mềm.
 ở chế độ này, GATE=1 thì đầu ra có mức
cao trong khi nạp số đếm.
 Thời gian ở mức cao là NxT.
 Khi đếm hết, đầu ra về thấp trong một
xung đồng hồ, sau đó trở lại mức cao và
chờ đến khi nạp số đếm mới.
 Chế độ này giống chế độ 2, với điểm khác
là bộ đếm không tự động nạp lại.
Ví dụ:
Cho CLK0=1 MHz, GATE0=1 và N=600, xác
định OUT0 nếu COUNT0 được lập trình ở
chế độ 4.
Giải:
Sau khi nạp số đếm, OUT0 ở mức cao trong
600s và xuống thấp 1s, sau đó lên mức cao
và chờ đến khi bộ đếm được nạp lại.

Gate0=1
Out0

WR 600S 1S
 Mode 5: Xung được kích phát
bằng phần cứng.
 Giống mode 4 nhưng kích
phát bằng sườn dương chân
GATE.
Ví dụ:
Cho CLK1=1 MHz và N=400, vẽ tín hiệu ra
OUT1 nếu nó được lập trình ở chế độ 5.
Giải:
Việc đếm chỉ được bắt đầu khi sườn xung GATE1
từ 0-lên-1.

Gate1=1

Out1

WR 400S 1S
Ví dụ:
ở ví dụ trên, giả sử GATE1 được kích
phát lại sau 150 xung. Vẽ tín hiệu ra
OUT1.
Giải:
GATE1 được kích phát lại sau 150 CLK thì quá
trình đếm lại từ đầu, làm xung ra dài thêm 150
s. Tổng cộng là 550 s.

150S

Gate1=1

Out1
150S 400S
WR 550S 1S
5. NỐI GHÉP 8253/54 Ở MÁY TÍNH
IBM PC XT

LS138
8253
A5 A
A6 B
A7 C Y2 CS
A8 G2B A0 A0
A9 G2A A1 A1
AEN G1

Hình 13.4. Chọn cổng 8253 ở máy tính PC/XT


Địa chỉ cổng của 8253/54 ở máy tính PC
Địa chỉ nhị phân (Binary) Địa chỉ
Hex Chức năng
CS A9 A8 A7 A6 A5 A4 A3 A2 A1 A0

1 0 0 0 1 0 x x x 0 0 40 Bộ đếm 0

1 0 0 0 1 0 x x x 0 1 41 Bộ đếm 1

1 0 0 0 1 0 x x x 1 0 42 Bộ đếm 2

1 0 0 0 1 0 x x x 1 1 43 Thanh ghi điều khiển


OUT0 18.2 Hz
CLK0 đến IRQ0
GATE0 của 8259
+5v
+5v
8253
OUT1 74LS74 DREQ
CLK1
D của DMA
CIK 8237
GATE1 Pr 66,278 KHz
DACKBRD CLR
+5v
Mở PB0 CLK2
loa 8255 Port 61 đến cassette
GATE2 OUT2
(Chia 2) đến PC5
74LS175 của 8255
D Q đến mạch
ĐK loa
74LS38
1.19 M Hz
CI Dữ liệu
+5v
ra loa
PB1 của 8255
2.383MHz Port 61
PCLK của 8284

Hình 13.5. Ghép nối chip 8253


Cho phép NMI
sử dụng cổng A0H
NMI
Yêu cầu ngắt 8087
Kiểm tra bit bậc của RAM 8088
Kiểm tra kênh I/0 S0
8288
S1
INTA INTA S2
Bộ định thời
kênh 0 của 8253 IR0 INTR
INTR
Bàn phím Cho phép IR1
Com2 IR2
Cho phép mở Com1 IR3 8259
IRQ2-IRQ7 Cổng Lpt2 8259
IR4
qua khe cắm Đĩa mềm IR5
mở rộng Cổng Lpt1 IR6
IR7

Hình 6.9. Nguồn tạo ngắt cứng của máy tính PC/XT
Sử dụng bộ đếm 0
 OUT0 của bộ đếm 0 tạo tần số 18,2
Hz, được nối đến IR0 của 8259 để tạo
thời gian ngày tháng năm cùng 1 số
dịch vụ khác.
 IR0 có thể giúp lập trình viên viết các
chương trình ứng dụng hoặc hỗ trợ
BIOS trong 1 số trình điều khiển.
 INT 1CH là ngắt kiểm soát bộ định
thời.
 Người dùng có thể định nghĩa CS:IP
của trình ứng dụng để trỏ tới INT 1CH.
 OUT0 tạo ra tần số 18,2 Hz. Hệ số
chia của Bộ đếm 0
N=1,193MHz/18,2Hz=65.536.
Sử dụng bộ đếm 1
 Đầu ra OUT1 tạo ra xung tuần
hoàn độ rộng 15 s (tần số 66.278
Hz) cần cho làm tươi bộ nhớ
DRAM.
 OUT1 được đưa đến DMA 8237
có nhiệm vụ làm tươi DRAM.
 Hệ số chia nạp cho Bộ đếm 1:
N=(1,19318 MHz : 66.278 Hz=18).
Sử dụng bộ đếm 2.
 Bộ định thời 2 được dùng cho loa
 BIOS dùng bộ định thời 2 để tạo tiếng
bíp.
 Tiếng bíp có tần số 896 Hz của chế độ
3 (xung vuông).
 Hệ số chia tiếng bip: N= 1,19318
MHz/896 Hz =1331.
PA0
PA1
Cổng A PA2 Bàn phím hoặc
Địa chỉ 60H PA3 dữ liệu
với mọi lối vào PA4 từ thiết bị trỏ
PA5
PA6
PA7

PB0 Mở loa Timer2


PB1 Dữ liệu ra loa
Cổng B Không sử dụng
PB2
Địa chỉ 61H Không sử dụng
PB3
với mọi lối ra Cho phép kiểm tra chẵn lẻ
PB4
PB5 RAM
PB6 Cho phép kiểm tra kênh I/O
PB7 Không sử dụng
Không sử dụng
PC0
Cổng C Không sử dụng
PC1
Địa chỉ 62H =1 nếu có đồng xử lý toán
PC2
với mọi lối vào =0 nếu có đĩa
PC3
Không sử dụng
PC4
Không sử dụng
PC5
Lối ra kênh 2 timer
PC6
Kiểm tra kênh I/O
PC7
Kiểm tra chẵn lẻ RAM

Cổng 8255 trong các máy tính PC thế hệ sau


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
6. MỘT SỐ LẬP TRÌNH ỨNG DỤNG

a) Bật loa dùng PB0 và PB1 cổng 61H


IN AL,61H
MOV AH,AL
OR AL,03H
OUT 61H,AL
CALL DELAY
MOV AL,AH
OUT 61H,AL
OUT0 18.2 Hz
CLK0 đến IRQ0
GATE0 của 8259
+5v
+5v
8253
OUT1 74LS74 DREQ
CLK1
D của DMA
CIK 8237
GATE1 Pr 66,278 KHz
DACKBRD CLR
+5v
Mở PB0 CLK2
loa 8255 Port 61 đến cassette
GATE2 OUT2
(Chia 2) đến PC5
74LS175 của 8255
D Q đến mạch
ĐK loa
74LS38
1.19 M Hz
CI Dữ liệu
+5v
ra loa
PB1 của 8255
2.383MHz Port 61
PCLK của 8284

Hình 13.5. Ghép nối chip 8253


b) Tạo trễ ở máy XT
MOV CX,N
Lap: LOOP Lap

LOOP mất 17T


1T=210 ns
1 vòng LOOP=210nsx17=3,57s
Nếu N=1000 -> Tdelay=3,57 ms
c) Tạo trễ ở các máy tính từ AT
;(CX) = số lần 15,085 s
MOV CX, N
LAP:
IN AL,61H
AND AL,10H
CMP AL,AH
JE LAP
MOV AH,AL
LOOP LAP
Ví dụ
Viết chương trình con tạo trễ 1,5s
Giải:
Để có trễ 1,5 s:
Số đếm=1,5s/15,085s=99.436.
CXmax=65.536, nên 99.436=33144x3 ->
CX=33144
MOV BL,03
BACK:
MOV CX,33144 ;trễ 0,5s
CALL Delay
DEC BL
JNZ BACK
d) Tạo nốt nhạc ở máy tính IBM
Để tạo nhạc cần xác định:
 Tần số nốt nhạc (tần số ra)
 Độ ngân của nốt nhạc.
Tần số nốt nhạc
 Tần số nốt nhạc= Tần số vào/N
 Số đếm N=Tần số vào/Tần số ra.
 Tần số vào BĐ2 2=1,193MHz.
Ví dụ
Xác định các giá trị nạp vào bộ đếm 2 để tạo các nốt nhạc:
a) D3 (rê quãng 3), b) A3 (la quãng 3) và c) A4 (la quãng 4)
Giải:
Giá trị nạp vào bộ đếm 2
Nốt Tần số Thập phân Hex
D3 147 Hz 8116 1FB4 (rê quãng 3)
A3 220 Hz 5423 152F (La quãng 3)
A4 440 Hz 2711 09A7 (La quãng 4)
Biết trị nạp vào bộ đếm 2 vậy có thể viết chương trình tạo nốt
nhạc ra loa trong một khoảng thời gian xác định.

You might also like