You are on page 1of 9

Chng 7: Hoat ong ngat

Chng 7:

I. Gii thieu.
II. To chc ngat.
III. X ly ngat.

I. GII THIEU :
Ngat s dung trong vi x ly hay vi ieu khien hoat ong nh sau:
vi x ly hay vi ieu khien luon thc hien mot chng trnh ma ta
thng goi la chng trnh chnh, khi co mot s tac ong t ben ngoai
Ly thuyet & thc hanh.

109

Chng 7: Hoat ong ngat

bang phan cng hay s tac ong ben trong lam cho vi x ly ngng
thc hien chng trnh chnh e thc hien mot chng trnh khac (con
goi la chng trnh phuc vu ngat ISR) va sau khi thc hien xong vi x ly
tr lai thc hien tiep chng trnh chnh. Qua trnh lam gian oan vi x
ly thc hien chng trnh chnh xem nh la ngat.
Co nhieu s tac ong lam ngng chng trnh chnh goi la cac
nguon ngat, trong vi ieu khien khi timer/counter em tran se tao ra
ngat. Ngat ong mot vai tro quan trong trong lap trnh ieu khien.
Khi s dung ngat se cho phep vi x ly hay vi ieu khien ap ng
nhieu s kien quan trong va giai quyet s kien o trong khi chng
trnh khac ang thc thi. V du: vi ieu khien ang thc hien chng trnh
chnh th co d lieu t he thong khac gi en th vi ieu khien
ngng chng trnh chnh e thc hien chng trnh phuc vu ngat nhan
d lieu xong roi tr lai tiep tuc thc hien chng trnh chnh, hoac co
mot tn hieu bao ngat t ben ngoai th vi ieu khien se ngng thc
hien chng trnh chnh e thc hien chng trnh ngat roi tiep tuc thc
hien chng trnh chnh.
Ta co the s dung ngat e yeu cau vi ieu khien thc hien
nhieu chng trnh cung mot luc co ngha la cac chng trnh c thc
hien xoay vong.
Ta co the minh hoa qua trnh thc hien 1 chng trnh trong trng
hp co ngat va khong co ngat nh hnh 7-1.

Hnh 7-1. Vi ieu khien thc hien chng trnh chnh trong 2 trng hp
khong va co ngat.
Trong o : Ky hieu * cho biet vi ieu khien ngng chng trnh chnh
e thc thi chng trnh con phuc vu ngat ISR. Con ky hieu ** cho biet vi
ieu khien quay tr lai thc hien tiep chng trnh chnh sau khi thc
hien xong chng trinh con phuc vu ngat ISR.
II. TO CHC NGAT (INTERRUPT ORGANIZATION) :
Vi ieu khien 89C51 co 5 nguon ngat: 2 ngat ngoai, 2 ngat Timer
va mot ngat Port noi tiep. Vi ieu khien 89C52 co them mot nguon
ngat la cua timer T2 nh hnh 7-2. Mac nhien khi vi ieu khien b reset

Ly thuyet & thc hanh.

110

Chng 7: Hoat ong ngat

th tat ca cac ngat se mat tac dung va c cho phep bi phan


mem.
Trong trng hp co hai hoac nhieu nguon ngat tac ong ong
thi hoac vi ieu khien ang phuc vu ngat th xuat hien mot ngat
khac, th se co hai cach giai quyet la kiem tra lien tiep va s dung
che o u tien.

Hnh 7-2. Vi ieu khien 89C52 co 6 nguon ngat.


1. Cho phep / cam ngat (Enable and disabling Interrupt)
Trc tien chung ta phai hieu cho phep va khong cho phep ngat
la nh the nao ? Khi ta cho phep ngat va khi ngat tac ong th vi ieu
khien se ngng chng trnh chnh e thc hien chng trnh con phuc vu
ngat, con khi khong cho phep th du co s tac ong en ngat vi ieu
khien van tiep tuc thc hien chng trnh chnh khong thc hien
chng trnh phuc vu ngat.
Trong vi ieu khien co 1 thanh ghi IE (Interrupt Enable) tai a ch
0A8H co chc nang cho phep / cam ngat. Ta s dung thanh ghi nay e
cho phep hay khong cho phep oi vi tng nguon ngat va cho toan
bo cac nguon ngat.
Hoat ong cua tng bit trong thanh ghi cho phep ngat IE c tom
tat trong bang 7-1:
Bit
IE.7

K
hieu
EA

a ch
bit
AFH

IE.6
IE.5

ET2

AEH
ADH

Ly thuyet & thc hanh.

Chc nang (Enable = 1; Dissble = 0)


Cho phep toan bo hoac cam toan
bo cac nguon ngat.
Cha dung en
Cho phep ngat Timer 2 (8052).
111

Chng 7: Hoat ong ngat

IE.4
IE.3
IE.2
IE.1
IE.0

ES
ET1
EX1
ET0
EX0

ACH
ABH
AAH
A9H
A8H

Cho
Cho
Cho
Cho
Cho

phep
phep
phep
phep
phep

ngat
ngat
ngat
ngat
ngat

Port noi tiep.


Timer 1.
ngoai External 1 (INT1).
Timer 0.
ngoai External 0 (INT0).

Bang 7-1. Tom tat chc nang cac bit cua thanh ghi IE.
Trong thanh ghi IE co bit IE.6 cha dung en, bit IE.7 la bit cho
phep/cam ngat toan bo cac nguon ngat. Khi bit IE.7= 0 th cam het
tat ca cac nguon ngat, khi bit IE.7=1 th cho phep tat ca cac nguon
ngat nhng con phu thuoc vao tng bit ieu khien ngat cua tng
nguon ngat.
V du e cho phep Timer 1 ngat ta co the thc hien tren bit:
SETB EA
;cho phep ngat toan bo
SETB ET1
;cho phep timer 1 ngat
Hoac co the dung lenh sau:
MOV IE, #10001000B
oi vi yeu cau cua v du tren th 2 cach thc hien tren la xong
nhng ta hay so sanh 2 cach thc hien va chu y mot vai ieu trong
lap trnh:
Cac lenh cua cach 1 khong anh hng cac bit con lai trong thanh
ghi IE.
Cach th hai se xoa cac bit con lai trong thanh ghi IE.
au chng trnh ta nen khi gan IE vi lenh MOV BYTE, nhng khi
ieu khien cho phep hay cam trong chng trnh th ta se dung cac lenh
SET BIT va CLR BIT e tranh tac ong en cac bit khac trong thanh ghi
IE.
2. u tien ngat (Interrupt Priority) :
Khi co nhieu nguon ngat tac ong cung luc th ngat nao quan
trong can thc hien trc va ngat nao khong quan trong th thc hien
sau giong nh cac cong viec ma ta giai quyet hang ngay. Ngat cung
c thiet ke co s sap xep th t u tien t thap en cao e
ngi lap trnh sap xep cac nguon ngat theo yeu cau cong viec ma
mnh x ly.
Thanh ghi co chc nang thiet lap che o u tien trong vi ieu
khien la thanh ghi IP (Interrupt Priority) tai a ch 0B8H. Hoat ong cua
tng bit trong thanh ghi IP c tom tat trong bang 7-2.
Bit
IP.7
IP.6
IP.5
IP.4
IP.3
IP.2
IP.1
IP.0

K
hieu
PT2
PS
PT1
PX1
PT0
PX0

a ch
bit
BDH
BCH
BBH
BAH
B9H
B8H

Chc nang
Cha s dung
Cha s dung
u tien cho s
u tien cho s
u tien cho s
u tien cho s
u tien cho s
u tien cho s

ngat Timer 2 (8052).


ngat Port noi tiep.
ngat Timer 1.
ngat ngoai External 1.
ngat Timer 0.
ngat ngoai External 0.

Bang 7-2. Tom tat chc nang cac bit cua thanh ghi IP.
Ly thuyet & thc hanh.

112

Chng 7: Hoat ong ngat

Khi reset he thong th thanh ghi u tien ngat IP b xoa va tat ca


cac ngat mc u tien thap nhat.
Trong 89C51 co 2 mc u tien thap va 2 mc u tien cao. Neu vi
ieu khien ang thc hien chng trnh con phuc vu ngat co mc u
tien thap va co mot yeu cau ngat vi mc u tien cao hn xuat
hie th vi ieu khien phai ngng thc hien chng trnh con phuc vu
ngat co mc u tien thap e thc hien chng trnh con phuc vu ngat
mi co u tien cao hn.
Ngc lai neu vi ieu khien ang thc hien chng trnh con phuc vu
ngat co mc u tien cao hn va co yeu cau ngat vi mc u tien
thap hn xuat hien th vi ieu khien van tiep tuc thc hien cho en khi
thc hien xong chng trnh phuc vu ngat co u tien cao hn roi mi
thc hien chng trnh phuc vu ngat co u tien thap ang yeu cau.
Chng trnh chnh ma vi ieu khien luon thc hien trong mot he
thong th mc thap nhat, khong co lien ket vi yeu cau ngat
nao, luon luon b ngat bat chap ngat mc u tien cao hay thap.
Neu co 2 yeu cau ngat vi cac u tien khac nhau xuat hien ong
thi th yeu cau ngat co mc u tien cao hn se c phuc vu trc.
3. Kiem tra vong quet lien tiep.
Neu 2 yeu cau ngat co cung mc u tien xuat hien ong thi
th vong quet kiem tra lien tiep se xac nh yeu cau ngat nao se
c phuc vu trc tien. Vong quet kiem tra lien tiep theo th t u
tien t tren xuong la: ngat ngoai th 0 (INT0), ngat timer T0, ngat
ngoai th 1 (INT1), ngat Timer 1, ngat truyen d lieu noi tiep (serial
Port), ngat timer 2. Hnh 7-3 se minh hoa cho trnh t tren.
Quan sat trong hnh 7-3 chung ta thay co 6 nguon ngat cua 89C52
va tac dung cua cac thanh ghi IE hoat ong nh mot contact On/Off con
thanh ghi IP hoat ong nh mot contact chuyen mach gia 2 v tr e la
chon 1 trong 2.
Ta hay bat au t thanh ghi IE trc: bit cho phep ngat toan cuc
(global enable) neu c phep se ong toan bo cac contact va tuy
thuoc vao bit cho phep cua tng nguon ngat co c phep hay
khong va chung hoat ong cung giong nh mot contact: neu c
phep th ong mach va tn hieu yeu cau ngat se a vao ben trong
e x ly, neu khong c phep th contact h mach nen tn hieu yeu
cau ngat se khong a vao ben trong va khong c x ly.
Tiep theo la thanh ghi IP: tn hieu sau khi ra khoi thanh ghi IE th a
en thanh ghi IP e sap xep u tien cho cac nguon ngat. Co 2 mc
o u tien: mc u tien cao va mc u tien thap. Neu cac nguon
nao co u tien cao th contact chuyen mach se a tn hieu yeu cau
ngat o en vong kiem tra co u tien cao, neu cac nguon nao co
u tien thap th contact chuyen mach se a tn hieu yeu cau ngat o
en vong kiem tra co u tien thap.
Vong kiem tra ngat u tien cao se c thc hien trc va se
kiem tra theo th t t tren xuong va khi gap yeu cau ngat nao th
yeu cau ngat o se c thc hien. Sau o tiep tuc thc hien cho
vong kiem tra u tien ngat co mc u tien thap hn.
Trong hnh con cho chung ta thay yeu cau ngat truyen d lieu noi
tiep tao ra t to hp OR cua 2 c bao nhan RI va c bao phat TI. Khi
ngat truyen d lieu xay ra va ta muon biet la do c nhan hay c
Ly thuyet & thc hanh.

113

Chng 7: Hoat ong ngat

phat tao ra ngat e thc hien 2 cong viec khac nhau th ta phai kiem
tra c RI va TI e biet thc hien cong viec nao tng ng.
V du trong truyen d lieu: khi co bao ngat truyen d lieu th ta
phai kiem tra xem c RI = 1 hay khong? Neu ung th he thong khac
ang gi d lieu en va ta phai chuyen hng chng trnh phuc vu
ngat sang hng nhan d lieu, neu khong phai th chac chan la c
TI=1 bao cho chung ta biet rang d lieu a truyen i xong va san
sang truyen k t tiep theo va khi o ta phai chuyen hng chng trnh
phuc vu ngat sang phat d lieu tiep theo.
Tng t, cac yeu cau ngat cua Timer 2 tao ra t to hp OR cua
c tran TF2 va c nhap ngoai EXF2.

Ly thuyet & thc hanh.

114

Chng 7: Hoat ong ngat

Hnh 7-3. Cau truc ngat cua vi ieu khien.

Cac bit c cua cac nguon ngat c tom tat bang 7-3:
Interrup
t
External
0
External
1
Timer 1
Timer 0
Serial
Port
Serial
Port
Timer 2
Timer 2

Flag

SFR Register and Bit Position

IE 0

TCON 1

IE 1

TCON 3

TF 1
TF 0
TI

TCON 7
TCON 5
SCON 1

RI

SCON 0

TF 2
EXF 2

T2CON 7 (8052)
T2CON 6 (8052)

Bang 7-3. Tom tat cac bit c cua cac nguon ngat.
III. X LY NGAT:
Khi tn hieu yeu cau ngat xuat hien va c chap nhan bi CPU
th CPU thc hien cac cong viec sau:
Neu CPU ang thc hien lech th phai ch thc hien xong lenh
ang thc hien.
Gia tr cua bo em chng trnh PC c cat gi vao Stack
(chnh la a ch cua lenh tiep theo trong chng trnh chnh).
Trang thai ngat hien hanh c lu vao ben trong.
Cac yeu cau ngat se b ngan lai.
a ch cua chng trnh phuc vuc ngat tng ng se c
nap vao bo em chng trnh PC.
Bat au thc hien chng trnh phuc vu ngat ISR.
Trong chng trnh phuc vu ngat luon ket thuc bang lenh RETI. Khi
gap lenh RETI th CPU se lay lai a ch cua lenh tiep theo trong ngan
xep tra lai cho thanh ghi PC e tiep tuc thc hien cac cong viec tiep
theo cua chng trnh chnh.
Ly thuyet & thc hanh.

115

Chng 7: Hoat ong ngat

Chu y: chng trnh con phuc vu ngat khong c lam mat


hoac lam sai a ch cua PC a lu trong ngan xep neu ieu
nay xay ra th khi tr lai chng trnh chnh CPU se khong thc hien tiep
cong viec cua chng trnh chnh va chung ta cung khong xac nh CPU
ang lam g va au. Khi o chung ta mat quyen kiem soat vi x
ly.
Giong nh ta ang oc mot cuon sach v mot cong viec khac ta
phai ngng lai va ta co lam dau tai trang ta tam ngng, sau khi lam
xong cong viec th ta tiep tuc quay lai e oc tiep cuon sach tai ni ta
a dng. Tat ca eu xay ra nh vay th rat la bnh thng nhng trong
khi ta thc hien cong viec th co mot ngi khac xem cuon sach cua
ta va vo tnh lam mat dau th khi ta quay lai ta se oc khong ung
trang chung ta ang dng lai. Nguyen tac lam viec cua vi x ly hoan
toan giong nh vay.
Trong vi ieu khien th bo nh ngan xep la bo nh RAM noi
nen chung san sang hoat ong cho viec lu tr tam, con oi vi vi
x ly th bo nh ngan xep s dung bo nh ngoai nen ban phai
khi tao bo nh ngan xep phai la vung nh RAM e co the ghi va
oc lai c, neu ban khi tao tai vung nh EPROM hoac khi tao tai
ni ma bo khong ghi vao c th se lam mat a ch d lieu lu
vao bo nh ngan xep dan en chng trnh se thc hien sai.
Mot ieu can phai chu y na la trong lap trnh chung ta khong
c nhay t chng trnh con sang chng trnh chnh e thc hien tiep
chng trnh v lam nh vay sau nhieu lan thc hien th bo nh ngan
xep se b tran va ghi e len cac d lieu khac lam sai chng trnh.
Trong trng hp nay chung ta se thay rang chng trnh chung ta thc
hien ung mot vai lan va sau o th sai.
Cac vect ngat (Interrupt Vectors) :
Nh a trnh bay tren, khi co mot yeu cau ngat xay ra th sau
khi cat gia tr a ch trong PC vao ngan xep th a ch cua chng
trnh con phuc vu ngat tng ng con goi bi vect a ch ngat se
c nap vao thanh ghi PC, a ch nay la co nh va do nha che tao
vi ieu khien qui nh. Cac chng trnh ngat phai bat au viet ung
tai a ch quy nh o. Cac vect a ch ngat c cho trong bang 74:
Interrupt
System Reset
External 0
Timer 0
External 1
Timer 1
Serial Port
Timer 2

Flag
RST
IE 0
TF 0
IE 1
TF1
RI or TI
TF 2 or EXF2

Vectors Address
0000H
0003H
000BH
0013H
001BH
0023H
002BH

Bang 7-4. Tom tat vector a ch ngat.


Vect reset he thong bat au tai a ch 0000H: khi reset vi ieu
khien th thanh ghi PC = 0000H va chng trnh chnh luon bat au tai a
ch nay.

Ly thuyet & thc hanh.

116

Chng 7: Hoat ong ngat

Khi ban s dung yeu cau ngat nao th chng trnh con phuc vu
ngat phai viet ung tai a ch tng ng. V du ban s dung ngat
timer T0 th chng trnh ngat ban phai viet tai a ch 000BH.
Do khoang vung nh gia cac vector a ch cua cac nguon ngat
ch co vai o nh v du nh vector a ch ngat cua ngat INT0 tai
0003H va vector a ch ngat cua ngat T0 tai 000BH ch cach nhau co
9 o nh. Neu chng trnh phuc vu ngat cua ngat INT0 co kch thc
ln hn 9 byte th no se ung en vung nh cua ngat T0. Cach giai
quyet tot nhat la ngay tai a ch 0003H ta viet lenh nhay en mot
vung nh khac rong hn. Con neu cac ngat T0 va cac ngat khac
khong s dung th ta co the viet chng trnh tai o cung c.
Chng trnh chnh luon bat au tai a ch 0000H sau khi reset he
thong, neu trong chng trnh co s dung ngat th ta phai dung lenh
nhay tai a ch 0000H e nhay en mot vung nh khac rong hn
khong b gii han e viet tiep.

Ly thuyet & thc hanh.

117

You might also like