Tài liu thc hành Vi điu khin
Phm Hùng Kim Khánh Trang 39
BÀI 6: INTERRUPT (NGT)
MC ĐÍCH
Giúp sinh viên kho sát các vn đề sau:
- S dng phn mm Proteus để mô phng mch đin.
- Tìm hiu cách s dng ngt trong 89C51.
THIT B S DNG
- Máy vi tính.
- Phn mm Proteus
1. Cơ s lý thuyết
Thanh ghi IE (Interrupt Enable Register)
Thanh ghi IE dùng để cho phép hay cm các ngt hot động. Mc định khi
khi động chương trình thì tt c các ngt đều b cm. Chc năng các bit trong
thanh ghi IE cho trong bng sau:
D7 D6 D5 D4 D3 D2 D1 D0
EA - - ES ET1 EX1 ET0 EX0
EA = 0: cm tt c các ngt
= 1: cho phép ngt tu theo trng thái các bit điu khin tương ng
ES = 0: cm ngt ti port ni tiếp
= 1: cho phép ngt ti port ni tiếp
ET1 = 0: cm ngt ti Timer 1
= 1: cho phép ngt ti Timer 1
EX1 = 0: cm ngt ti ngt ngoài 1 ( INT1: chân P3.3)
= 1: cho phép ngt ti ngt ngoài 1
ET0 = 0: cm ngt ti Timer 0
= 1: cho phép ngt ti Timer 0
EX0 = 0: cm ngt ti ngt ngoài 1 ( INT0 : chân P3.2)
= 1: cho phép ngt ti ngt ngoài 1
Để cho phép ngt ti Timer 0, ta phi có: EA = 1 và ET0 = 1. Ni dung
ca thanh ghi IE khi đó là:
Tài liu thc hành Vi điu khin
Phm Hùng Kim Khánh Trang 40
D7 D6 D5 D4 D3 D2 D1 D0
1 0 0 0 0 0 1 0 = 82h
Chương trình có th thc hin như sau:
SETB EA
SETB ET0
Hay có th viết:
MOV IE,#82h
Danh sách các ngt trong 89C51
- Ngt ngoài 0:
Địa ch vector ng
t
0003H
Khai báo s dng ngt - SETB EA
- SETB EX0
- SETB IT0 (ngt cnh)
S kin ngt: Xut hin cnh xung (hoc mc
thp) ti chân INT0
- Ngt timer0:
Địa ch vector ng
t
000BH
Khai báo s dng ngt - SETB EA
- SETB ET0
S kin ngt Tràn timer 0
- Ngt ngoài 1:
Địa ch vector ng
t
00013H
Khai báo s dng ngt - SETB EA
- SETB EX1
- SETB IT1 (ngt cnh)
S kin ngt: Xut hin cnh xung (hoc mc
thp) ti chân INT1
- Ngt timer1:
Địa ch vector ng
t
0001BH
Khai báo s dng ngt - SETB EA
- SETB ET1
S kin ngt Tràn timer 1
Tài liu thc hành Vi điu khin
Phm Hùng Kim Khánh Trang 41
- Ngt truyn thông (truyn/nhn UART):
Địa ch vector ngt 00023H
Khai báo s dng ngt - SETB EA
- SETB ES
S kin ngt Nhn được mt byte hoc truyn
xong mt byte trong SBUF
Tc độ truyn nhn MODE
autoreload (timer1)
- TH1 = -3 ; 9600bps
- TH1 = -6 ; 4800bps
- TH1 = -12 ; 2400bps
- TH1 = -24 ; 1200bps
SƠ ĐỒ CHƯƠNG TRÌNH KHI CÓ S DNG NGT:
Cu trúc chương trình s dng ngt
Chương trình s dng ngt bao gm 2 phn: phn chương trình chính và
phn x lý ngt. Mt đon chương trình ví d s dng ngt ngoài 0 như sau:
ORG 0 ; Địa ch bt đầu chương trình
LJMP main
ORG 0003h ; Địa ch chương trình phc v ngt cho INT0
LJMP int0_isr
Main:
; khai báo s dng ngt
SETB EA
SETB EX0 ; Có th thay 2 lnh này bng lnh MOV IE,#81h
; chương trình chính
Int0_isr:
; chương trình phc v ngt
RETI
END
KHAI BÁO NGT
S kin ngt
Vector ngt:
.
.
RETI
Tài liu thc hành Vi điu khin
Phm Hùng Kim Khánh Trang 42
VSM Oscilloscope
VSM Oscilloscope là thiết b cho phép hin th dng tín hiu tương t, bao
gm 2 kênh A và B. VSM có kh năng đo 2 tín hiu đồng thi.
V trí ca Oscilloscope trong ca s thiết kế như sau:
Hình nh ca Oscilloscope khi thiết kế và thc thi chương trình như sau:
Màn hình hin th
dng sóng tín hiu
Chn chế độ hin th cho kênh 1:
- DC: hin th AC và DC
- GND: chnh mc GND
- AC: ch hin th AC
Chnh h
s trc tung
Y ca kênh
2 (biên độ)
Chnh h s trc
hoành X (thi
gian)
Chn hin th kênh
1 hay kênh 2
Chn hin th đồng
thi 2 kênh hay v
kênh 2 theo kênh 1
Đồng b tín hiu
(cho phép dng tín
hiu)
Tài liu thc hành Vi điu khin
Phm Hùng Kim Khánh Trang 43
2. Tiến trình thc hin
Ngt Timer
To xung vuông
S dng mch như hình v:
- Thc hin chương trình dùng ngt Timer 0 to xung vuông tn s f = 5
KHz ti P2.0 như sau:
ORG 0000h
LJMP main
ORG 000Bh
LJMP timer0_isr
main:
MOV IE,#82h
MOV TMOD,#02h
MOV TH0,#(-100) ; f = 5KHz Æ T = 1/f = 0.2ms = 200 µs Æ thi gian
MOV TL0,#(-100) ; tr là 100 µs Æ giá tr đếm ca Timer là 100
SETB TR0
Here:
SJMP here
;-----------
Timer0_isr:
CPL P2.0