Professional Documents
Culture Documents
6 Hoạt Động Ngắt
6 Hoạt Động Ngắt
105 (S)
6 HOT NG NGT
6.1 M U
Ngt ( interrupt ) l s xy ra ca mt iu kin - mt s kin - lm cho chng
trnh hin hnh b tm ngng trong khi diu kin dc phc v bi mt chng
trnh khc. Cc ngt dng vai tr quan trng trong vic thit k v hin thc cc ng
dng ca b vi iu khin. Cc ngt cho php h thng p ng mt s kin theo
cch khng ng b v x l s kin trong khi mt chng trnh khc ang thc thi.
Mt h thng c iu khin bi ngt cho ta o tng ang lm nhiu cng vic
dng thi.
CPU d nhin khng th thc thi nhiu hn mt lnh mt thi im nhng
CPU c th ngng tm thi vic thc thi mt chng trnh thc thi mt chng
trnh khc ri sau quay tr v thc thi tip chng trnh ang b tm ngimg, iu
ny ging nh CPU ri khi chng trnh gi thc thi chng trnh con b gi
ri sau quay tr v chng trnh gi. S khc nhau ca hai vn va nu l
trong mt h thng c iu khin bi ngt, vic ngt nhm p ng mt s kin
m s kin ny xut hin khng ng b vi chng trnh chnh ang c thc thi
v chng trnh chnh ( hay ni cch khc l CPU ) khng bit trc l s b ngt
khi no.
Chng trnh x l mt ngt c goi l trnh phuc vu ngt ISR ( in- terrupt
Service routine ) hay qun l ngt ( interrupt handler ). ISR c thc thi nhm p
ng mt ngt v trong trng hp tng qut thc hin vic xut nhp i vi mt
thit b. Khi mt ngt xut hin, vic thc thi chng trnh chnh tm thi b dng
v CPU thc hin vic r nhnh n trnh phc v ngt ISR. CPU thc thi ISR
thc hin mt cng vic v kt thc vic thc thi ny khi gp lnh quay v t mt
trnh phc v ngt chng trnh chnh c tip tc ti ni b tm dng. Ta c th
ni chng trnh chnh dc thc thi mc nn ( base level) cn ISR dc thc thi
mc ngt ( interrupt level ).
Cch nhn ngn gn ny c m t hnh 6.1, hnh ny trnh by :
a- Vic thc thi mt chng trnh khng c ngt.
b- Vic thc thi mc nn c ngt v cc ISR c thc thi mc ngt..
Time
IS 106
Main pi og Hin (a) Program withoul
Imonupt-U-vo!
ISK
execution
H vi iu khin 8051
intevmpts
ISK
Base-level n.
Mam
execution
Time
** Return from interrupt instruction
Main
*
ISP
Main
Interrupt.
Hnh 6.1 : Thc thi chng trnh c v khng c ngt (a) khng c ngt (b) c
ngt
Time : thi gian
Main program : chng trnh chnh
Program execution without interrupts : thc thi chng trnh khng c ngt
Program execution with interrupts : thc thi chng trnh c ngt Interrupt level
execution : thc thi ' mc ngt Base level execution : thc thi mc lin
Interrupt : ngt
Return from interrupt instruction : tr' v t lnh ngt
Mt th d v ngt in hnh l nhp bng tay s dng bn phm. Ta hy kho
st mt ng dng ca l viba. Chng trnh chnh c th iu khin thnh phn
cng sut ca l thc hin vic nu nng ; tuy nhin trong khi ang nu, h
thng phi p ng vic nhp bng tay trn ca l, chng hn nh mt yu cu rt
ngn bt hay ko di thm thi gian nu. Khi ngi s dng bung phm nhn, mt
ngt c to ra ( chng hn mt tn hiu t mc cao chuyn xung mc thp ) v
chng trnh chnh b ngt. ISR c thc thi c m phm v thay i cc iu
kin nu tng ng, sau kt thc bng cch chuyn iu kliin tr v chng
trnh chnh.
Chng trnh chnh dc thc thi tip t ni tm dng. iu quan trng trong
th d trn l vic nhp bng tay xut hin khng ng b ngha l xut hin cc
khong thi gian khng bo trc hoc c diu khin bi phn mm dang dc
thc thi trong h thng. y l mt ngt.
6.2 T CHC NGT CA 8051
C 5 nguyn nhn to ra ngt ( gi tt l nguyn nhn ngt ) di vi 8051 : hai
ngt do bn ngoi, hai ngt do b dnh thi v mt ngt do port ni tip. 8052 c
thm nguyn nhn ngt th 6 : do b nh thi c thm vo, b nh thi th ba.
Khi ta thit lp trng thi ban du cho h thng ( gi tt l reset h thng ), tt c
cc ngt du b v hiu lia ( cm ) v sau chng c cho php ring r bng
phn mm.
Khi xy ra hai hay nhiu ngt dng thi hoc xy ra mt ngt trong khi mt
107 (S)
K hiu
a ch Bit
IE.7
EA .
AFH
M t
( 0 : khng cho php ; 1 : cho php )
Cho php / khng cho php ton cc
IE.6
AEH
Khng s dng
IE.5
ET2
ADH
IE.4
ES
ACH
IE.3
IE.2
ET1
EX1
ABH
AAH
IE.O
EXO
A8H
IE.l
ETO
A9H
Cho php ngt do b nh thi 0
Bng 6.1 : Thanh ghi cho php ngt IE
H108
H vi iu khin 8051
Hai bit sau y phi c set bng 1 cho php mt ngt no : bit cho php
ngt ring r v bit cho php ngt ton cc. Th d ngt do b nh thi 1 c cho
php bng cch dng 2 lnh :
SETB ET1 ; Cho php ngt do b nh thi 1
SETB EA ; set bit EA bng 1 cho php ngt ton cc
Ky
hiu
a ch bit
M t
(1 : mc cao ; 0 : mc thp)
IP.7
Khng s dng
IP.6
Khng s dng
IP.5
PT2
OBDH
IP.4
PS
OBCH
IP.3
PT1
OBBH
IP.2
PX1
OBAH
IP.l
PTO
0B9H
IP.O
PXO
0B8H
109 (S)
ISR.
"
- -------------------------------------------5-----------
ISR c thc thi p ng cng vic ca ngt. Vic thc thi ISR kt thc khi
gp lnh RETI ( tr v t mt trnh phc v ngt ). T.pnh ny ly li gi tr c ca
b m chng trnh PC t stack v phc hi trng Hacua ngt c. Vic thc thi
chng trnh chnh c tip tc ni b tm ngtig.
SI 110
H vi iu khin 8051
Ngt
IEO
TCON.l
IE1
TCON.3
Do b nh thi 1
TF1
TCON.7
Do b nh thi 0
TF0
TCON.
Do port ni tip
TI
SCON.l
Do port ni tip
RI
SCON.O
Do b nh thi 2
TF2
T2CON.7 ( 8052 )
Do b nh thi 2
EXF2
T2CON.6 ( 8052 )
High
priority
interrupt
Low
priority
interrupt
Interrupt
polling
sequence
Accent
interrupt
IE
registe
r
thanh
ghi IE
IP
registe
r
thanh
ghi IP
High
priorit
y
interru
pt
ngt
u tin
cao
Low
priorit
y
interru
pt
ngt
u tin
th'p
Interru
pt
polling
sequen
ce
chui
vng
ngt
Interru
pt
enable
:
cho
php
ngt
Global
enable
:
cho
php
ton
cc
Ngt do
Reset h thng
C
RST
a chi vector
0000H
Ngt ngoi 0
IEO
0003H
B nh thi 0
TF0
000BH
Ngt ngoi 1
IE1
0013H
B nh thi 1
TF1
001BH
Port ni tip
RI hoc TI
0023H
C
c bit
c
ny
phi
c
002BH
kim
tra
trong
ISR
xc
nh
nguy
n
nhn
ngt
v sau
c
gy ra
ngt
c
xa
bi
phn
mm.
Thng
thn
g s
c
mt r
nhnh
chn
g
trnh
n
cng
vic
tng
ng
ty
thuc
vo
nguy
n
nhn
ngt.
V cc
vector
ngt
t
y
ca
b
nh
chn
g
trnh,
lnh
u
tin
ca
chn
g
trnh
chnh
thn
g l
mt
lnh
nhy
qua
khi
vng
nh
cha
cc
vector
ngt
chang
hn
nh
lnh
LJMP
(H530
6.4 T
HIT
K
CH
NG
TRN
H s
DN
G
CC
NGA
T
C
c th
d
trong
chn
g 4 v
chn
g
5
khng
s
dng
cc
ngt
m s
dng
rng
ri
cc
vng
lp
ch
kim
tra
cc c
trn
ca
b
nh
thi
( TF0,
TF1
v
TF2 )
hoc
cc c
pht,
c thu
ca
port
ni
tip
( TI
hoc
RI ).
Cch
ny
a
n
vn
l
thi
gian
thc
thi
chn
g
trnh
ca
CPU
hon
ton
tiu
ph
vo
vic
ch
cc c
va
nu
trn
c
set
bng
1.
iu
ny
khng
thch
hp
vi
cc
ng
dng
hng
iu
khin
trong
b
vi
iu
khin
phi
tc
ng
qua
li vi
nhiu
thit
b
xut
nhp
ng
thi.
T
rong
mc
ny,
cc
th d
c
pht
trin
minh
ha
cc
phn
g
php
thc
t
c
dng
nhm
hin
thc
phn
mm
cho
cc
ng
dng
112
H vi iu khin 8051
lp
; im nhp sau khi reset ;
ORG 0030H
MAIN :
113
g)
0000H
LJMP
MAIN
; reset
ORG OOOBH
RETI
MAIN :
Main program
Resrt and
interrupt
entry points
HI 114
H vi iu khin 8051
MAIN:
LJMP
MAIN
ORG
000BH
LJMP
TOISR
; im nhp ca b nh thi 0
; pha trn cc vector ngt
ORG 0030H
TOISR :
; ISR ca b nh thi 0
; quay v chng trnh chnh
RETI
Khi c 1 ngt xut hin, chng trnh chnh tm thi b ngt trong khi ISR c
thc thi. Lnh RETI cui ISR tr iu khin v chng trnh chnh v chng
trnh ny tip tc khng lm g c. iu ny khng c g l khng t nhin i vi
chng ta. Trong nhiu ng dng hng iu khin, phn ln cng vic c thc
hin trong trnh phc v ngt.
Th d 6.1 : To sng vung s dng cc ngt do b nh thi.
Vit mt chng trnh s dng b nh thi 0 v cc ngt to ra mt sng
vung tn s 10KHz trn chn Pl.o.
Cc ngt do b nh thi xut hin khi cc thanh ghi nh thi ( TLx / THx ) trn
v set c trn TFx bng 1. Th d ny c chng 4 nhng khng s dng cc
ngt. Phn ln chng trnh s ging nh chng trnh chng 4 ngoi tr by
gi chng trnh c t chc
28116
H vi iu khin 8051
CPL Pl.o
RETI
ORG 0030H MAIN:
MOV
TMOD, #02H
#82H SJMP $
IE,
END
117
g)
trnh phc v ngt c thc thi. V con tr st.rk. lSP khng r khfiri ng,
vng stack c mc inh ia chi 07H trong .RAM ni. Vic ct vo stack s ct
a ch quay v cc a ch 08H v 09H trong RAM ni.
Th d 6.2 : To 2 dng sng vung s dng cc ngt.
Vit mt chng trnh s dng cc ngt d to ng thi cc dng sng vung
c tn s l 7 KHz v 500 Hz trn cc chn P1.7 v P1.6.
Cu hnh phn cng cng cc gin thi gian cho cc dng sng yu cu c
trnh by hnh 6.4.
-1-1 ?MS
--------7 kHz
2ms500 Hz
lms -
000BH
LJMP T0ISR
ORG
001BH
LJMP TlISR
ORG
MAIN
0030H
MOV TMOD,
#12H
b nh thi 1 : ch 1
H vi iu khin 8051
; b nh thi 0 : ch 2 ; 7 KHz
s dng b nh thi 0
SETB TRO
TOISR :
RETI
cc b nh thi
#8AH SJMP $
CPL
ngt do
P1.7
SETB
TRI
CPL
Pl.6
RETI
119
g)
IM) 120
H vi iu khin 8051
ORG 0 LJMP
SKIP:MOV SBUF, A
INC A CLR TI
MAIN
- ORG 0023H LJMP
SPISR ORG 0030H MAIN :
RETI END
; im nhp ca ngt do port ni tip
b nh thi 1 : ch 2 gi tr np li :
1200 baud ' b nh thi hot dng ch
d 1, set TI bng 1 buc c ngt u
A,
#20H
MOV IE,
#90H
SJMP $
SPISR:CJNE A, #7FH, SKIP
MOV A, #20H
8,33 ms hay 8333 ^s. Thi gian thc thi t nht ca trnh phc v ngt SPISR l
tng ca s chu k cho mi mt lnh nhn vi 1 (J.S. S tinh c l 8 US. Do vy,
vi 8333 (J.S dng truyn 1 k t chi c 8 .IS dnh cho trnh phc v ngt.
Lnh SJMP $ thc thi trong khong ( 8325/8333 ) X 100 = 99,9% thi gian. Do
ngt c s dng, lnh SJMP $ c th c thay bi cc lnh khc thc hin
nhng cng vic khc theo yu cu ca ng dng. Cc ngt vn xut hin v cc k
t vn c pht t port ni ti
i mt 8,33 ms.
6.6 CC NGT NGO
Thng thng, mt cng vic c thc thi bn trong trnh phc v ngt lm
cho nguyn nhn ngt tr tn hiu yu cu ngt tr v trng thi khng tch cc.
Bl 122
H vi iu khin 8051
COLD--------------------- INT
EXOISR :
CLR
P1.7
g)
UHf ^ ^
ORG 0 K/ \\
LJMP MAIN j
123
6 <"
; vector ngt ngoi 0 0003H ; tt
l t
RETI
ORG
EXlISR
0013H ^
SETB P1.7
RE TI
MAIN
ORG
30H - J
MOV
IE, #85H
SETB ITO .
n/*
SKIP :
; m l "
SETB 1T1 r
L^A
SETB P1.7
; m l ; nu T >
P3.2, SKIP
21
CLR
P1.7
; tt l
SJMP $
; khng lm g.
END
Ba lnh u tin trong chng trnh chnh cho php cc ngt ngoi v xc nh
cc ngt thuc loai tc ng canh m. Do trng thi hin ti ca cc ng vo HOT
( P3.2 ) v COLD ( P3.3 ) cha c bit, 3 lnh k tip s iu khin m hoc tt
l ty trng thi nhit hin ti ca l. Trc tin l c m ( SETB P1.7 ) v
ng vo HOT c ly mu ( JB P.2, SKP I. Nu ng vo HOT mc cao, T <
21c nn lnh k c b qua v l vn tip tc c m.
Ngc li nu ng vo HOT mc thp, T > 21c. Trong trng hp ny lnh
k CLR P1.7 c thc thi tt l trc khi i vo vng lp khng lm g
Lu l pht biu ORG 0003H khng nht thit phi hin din ngay trc
nhn EXOISR. Do lnh LJMP MAIN di 3 byte, EXOISR chc chn c bt u
a ch 0003H, im nhp ca cc ngt ngoi \ 0.
124
Th d 6.5 : H thng bo ng
H vi iu khin 8051
Loudspeaker
opens
1 Second -
mmmm.
Pi.7
440 Hz
Pi.7
Hnh 6.6 : Giao tip vi loa s dng ngt (a) kt ni phn cng (b ) gin d
thi gian
MAIN:
ORG
LJMP
LJMP
ORG
LJMP
ORG
LJMP
ORG
SETB
0
MAIN
EXOISR
000BH
TOISR
001BH
T1ISR
0030H
ITO
; lnh 3 byte
; a ch vector EXT 0
; vector ca b nh thi 0
; vector ca b nh thi 1
; tc ng cnh m.
1250)
CPL P1.7 SETB TRI
RETI END
; ch nh thi 16 bit y
p
1
j
t
c
; tr hon 0,0jsec \
9 T (Vr
'ih'4-ch'.
Chng trnh trn c 5 phn phn bit : v tr cc vector ngt, chng trnh
chnh v ba trnh phc v ngt. Cc v tr vector ngt cha cc lnh LJMP
chuyn diu khin n cc trnh phc v ngt tng ng. Chng trnh chnh bt
u a ch 0030H chi cha 4 lnh. Lnh SETB ITO cho php ng vo ngt ghp
vi b cm bin ca dc kch khi cnh m.
Lnh MOV TMOD, #11H xc dinh ch hot dng ca c hai b nh thi l
ch nh thi 16-bit. Ch c ngt ngoi 0 dc php bt aT( lnh MOV IE,
#81H ) do diu kin ca m l iu kin cn phi c trc khi mt ngt no
c chp nhn. Cui cng lnh SJMP $ t chng trnh chnh vo vng lp
khng lm g Khi iu kin cng
25 126
H vi iu khin 8051
m c pht hin ( bng s chuyn trng thi t mc cao xung mc th'p chn
NTO ), ngt ngoi 0 c to ra.
Trnh phc v cho ngt ngoi 0 EXOISR bt u bng vic np hng s 20 cho
R7 ( xem bn di ) ri set c trn ca c 2 b nh thi bng 1 buc cc ngt do
b nh thi xut hin. Tuy nhin cc ngt do b nh thi s ch xut hin khi cc bit
tng ng trong thanh ghi IE c cho php. Hai lnh k tip SETB ETO v SETB
ET1 cho php cc ngt do b nh thi. Cui cng trnh phc v ngt ngoi 0
EXOISR kt thc bng lnh RETI tr v chng trnh chnh.
B nh thi 0 to ra khong thi gian nh thi 1 sec v b nh thi 1 to ra m
hiu 400 Hz. Sau khi trnh phc v ngt ngoi EXOISR kt thc, cc ngt do b nh
thi lp tc c to ra ( v c chp nhn sau khi thc thi 1 lnh SJMP $ ). Do
chui vng c nh ( xem hnh 6.2 ), ngt do b nh thi 0 c phc v trc tin.
Khong thi gian nh thi 1 sec c to ra bng cch lp trnh lp li 20 ln
khong thi gian nh thi 50000 fxs. Thanh ghi R7 hot ng nh 1 b m.
Trnh phc v ngt TOISR hot ng nh sau : trc tin b nh thi 0 c
iu khin ngng v R7 c gim bi 1. K n THO/TLO c np li bi gi tr
-50.000, b nh thi 0 c iu khin hot ng tr li v ngt c kt thc. ln
ngt th 20, R7 c gim xung 0 ( 1 sec tri qua ). Cc ngt do c 2 b nh thi
c v hiu ( CLR ETO, CLR ET1 ) v ngt kt thc. Khng cn ngt do b nh
thi c to ra na cho n khi iu kin ca m mt ln na c pht hin. m
hiu 400 Hz c lp trnh bng cch s dng cc ngt do b nh thi 1. Tn s'
400Hz yu cu chu k l 2500 ns vi 1250 |S mc cao v 1250 |J.S mc thp.
Trnh phc v ngt cho b nh thi 1 ch n gin np -1250 cho TH1/TL1, ly b
bit ca port d kch loa v ri kt thc.
127
g)
12 MHz uuumnjuuirLrLnn
S5
'----------------0.25 s--------------------I
S6
Interrupts
sampled
Cvelp 1
_.......y
Interrupts
polled
Interrupts
sampled
,T
Cycle 3
Cycle 4
Interrupt accepted
pushed on stack)
Cycle
5
SGP1
ISR
begin
(PC
SGP2
Thi gian t lc c mt iu kin ngt xut hin n khi trnh phc v ngt bt
du c gi l interrupt latency. Interrupt latency Tt quan trng trong mt s' cc
ng dng iu khin.
a 128
H vi iu khin 8051
Vi thch anh 12 MHz, interrupt latency c th ngn khong 3.25 |J.S trn 8051.
Mt h thng s dng 8051 dng ngt lu tin cao s c interrupt latency xu nat
khong 9.25 us ( gi s ngt lu tin cao lun lun c php )rE)ifa~xy ra nu
iu kin ngt xy ra ngay trc khi c lnh RETI ca trnh phc v ngt mc 0 c
theo sau bi mt lnh nhn ( xem hnh 6.9 ).
l^-l.rvp] I ISK!
Level
0 ISR Main program
RETI
Save PC on stack
__________
__________
MUL AB J_______I
__________L
Level 1 interrupt
occurs here (missed
last chance before
1KT1 instruction)