You are on page 1of 40

Chng 6 : Hot ng ngt

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.

ib) Program execution with interrupts

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

Chng 6 : Hot ng ngt

107 (S)

ngt khc dang dc phc v, ta c 2 s d x l cc ngt : s d chui vng v s


d hai mc lu tin. S d chui vng l s d c nh cn s d u tin ngt dc
lp trnh bi ngi s dng.
Ta s bt u kho st cch thc cho php v khng cho php ngt.
6.2.1 Cho php v khng cho php ngt
Mi mt nguyn nhn ngt c cho php hoc khng cho php ring r thng
qua thanh ghi chc nng c bit nh a ch bit, thanh ghi cho php ngt IE
( interrrupt enable ) c a ch byte l 0A8H. Mi mt bit ca thanh ghi ny cho
php hoc khng cho php tng nguyn nhn ngt ring r, thanh ghi IE dng thi
cn c mt bit ton cc ( global ) cho php hoc khng cho php tt c cc ngt
( khng cho php khi b xa v cho php khi dc set bng 1 ) ( xem bng 6.1 ).
Bit

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

Cho php ngt do b nh thi 2

IE.4

ES

ACH

IE.3
IE.2

ET1
EX1

ABH
AAH

Cho php ngt do port ni tip


Cho php ngt do b nh thi 1
Cho php ngt t bn ngoi ( ngt ngoi 1 )

IE.O

EXO

A8H

Cho php ngt t bn ngoi ( ngt ngoi 0 )

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

hoc bng cch dng lnh sau :


MOV IE, #10001000B

Mc d c hai cch nu trn u cho ta cng mt kt qu sau khi h thng c


thit lp li trng thi ban u ( reset h thng ), nh hng ca 2 cch ny c khc
nhau v cch th hai ghi ln thanh ghi IE trong khi chng trnh ang hot ng.
Cch th nh't khng gy nh hng n 5 bit cn li ca thanh ghi IE trong khi
cch th hai s xa cc bit khc. Tt nht ta nn khi ng thanh ghi IE bng lnh
di chuyn byte u chng trnh ngay sau khi h thng c thit lp li. Vic cho
php v khng cho php cc ngt trong chng trnh nn s dng cc lnh set bit v
xa bit trnh nh hng n cc bit khc trong thanh ghi IE.
6.2.2 u tin ngt
Mi mt nguyn nhn ngt c lp trnh ring r c mt trong hai mc u
tin thng qua thanh ghi chc nng c bit c nh a cHTBt7 thanh ghi u
tin ngt IP ( interrupt priority ), thanh ghi ny c a ch byte l 0B8H ( xem bng
6.2 ).
Bt

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

u tin cho ngt do b nh thi 2

IP.4

PS

OBCH

u tin cho ngt do port ni tip

IP.3

PT1

OBBH

u tin cho ngt do b nh thi 1

IP.2

PX1

OBAH

u tin cho ngt do bn ngoi (ngt ngoi 1)

IP.l

PTO

0B9H

u tin cho ngt do b nh thi 0

IP.O

PXO

0B8H

u tin cho ngt do bn ngoi (ngt ngoi 0)

Bng 6.2 : Thanh ghi uu tin ngt IP

Khi h thng c thit lp li trng thi ban/u, thanh ghi IP s mc inh t


tt c cc ngt mc u tin thp./ tng cc mc u tin cho php mt trnh
phc v ngt c tm dng bi mt ngt khc nu ngt mi ny c mc u tin

Chng 6 : Hot ng ngt

109 (S)

cao hn mc u tin ca ngt hin ang c phc v. iu ny hon ton hp l


i vi 8051 v ta ch c 2 mc u tin. Nu c ngt vi u tin cao xut hin, trnh
phuc v ngt cho ngt c mc u tin thp phi tam dng ( ngha l b ngt ). Ta
khng th tm dng mt chng trnh phc v ngt c mc u tin co.
Chng trnh chnh do c thc thi mc nn v khng c kt hp vi mt
ngt no nn lun lun b ngt bi cc ngt cho d cc ngt, ny c mc u tin
thp hy cao. Nu c 2 ngt vi mc u tin ngt khc nhau xut hin ng thi,
ngt c mc u tin cao s c phuc vu trc.
6.2.3 Chui vng
Nu c 2 ngt c cng mc u tin xut hin ng thi, chui vng c nh s
xc nh ngt no c phc v trc. Chui vng Iiy s l : ngt ngoi 0, ngt do
b nh thi 0, ngt ngoi 1, ngt do b nh thi
1, ngt do port ni tip, ngt do b nh thi 2.
Hnh 6.2 minh ha 5 nguyn nhn ngt, c ch cho php ring r v ton cc,
chui vng v cc mc u tin. Trng thi ca tt c cc nguyn nhn ngt c th
hin thng qua cc bit c tng ng trong cc thanh ghi chc nng c bit c lin
quan. D nhin nu mt ngt no khng c php, nguyn nhn ngt tng ng
khng th to ra mt ngt nhng phn mm vn c th kim tra c ngt. Ly th d
b nh thi v port ni tip trong 2 chng trc s dng cc c ngt mt cch
rng ri d khng c ngt tng ng xy ra, ngha l khng s dng cc ngt.
Ngt do port ni tip l kt qu OR ca c ngt khi thu RI ( c ngt thu ) vi c
ngt khi pht TI ( c ngt pht ). Ngt do b nh thi 2 c tao ra do c trn b
inh thi TF2 hoc do c t bn ngoi EXF2. Cc bit c to ra cc ngt c tm
tt bng 6.3.
6.3 X L NGT
Khi c mt ngt xut hin v c CPU chp nhn, chng trnh chnh b ngt.
Cc thao tc sau y xy ra :
- Hon tt vic thc thi lnh hin hnh.
- B m chng trnh PC c ct vo stack.
- Trng thi ca ngt hin hnh c lu gi li.
- Cc ngt c chn li mc ngt.
- B m chng trnh PC c nap a ch vector ca trnh phc v ngt

ISR.

"

- ISR c thc thi.

- -------------------------------------------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

Thanh ghi SFR


v v tr bit

Do bn ngoi ( ngt ngoi 0 )

IEO

TCON.l

Do bn ngoi ( ngt ngoi 1 )

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 )

Bng 6.3 : Cc c ngt

6.3.1 Cc vector ngt


Khi mt ngt c chp nhn, gi tr c np cho b m chng trnh PC
c gi l vector ngt. Vector ngt l ia ch bt u ca t r n h v
ngt ca nguyn nhn ngt tng ung. Cc vector ngt c ch~<jr bng 6.4.
Vector reset h thng ( RST a ch 0000H ) c cha trong bng ny v vy
cng c xem nh l 1 ngt : chng trnh chnh b ngt v b m chng trnh
PC c np gi tr mi.
Khi mt trnh phc v ngt c tr ti, c gy ra ngt s t ng b xa v 0
bi phn cng. Cc ngoi l bao gm cc c RI v TI i vi cc ngt do port ni
tip ; TF2 v EXF2 i vi cc ngt do b nh thi
2. Cc nguyn nhn ngt ttmc 2 ngoi l va nu trn do c 2 kh nng to ra ngt
nn trong thc t CPU khng xa c ngt.

Hnh 6.2 : Cu trc ngt ca 8051

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

TF2 hoc EXF2


B nh thi 2
Bng 6.4 : Cc vector ngt

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

hng iu khin. Thnh phn ch yu l ngt. Mc d cc th d ny khng nht


thit phi ln hn nhng chng s phc tp hn v nhn ra iu ny, chng ta s tin
hnh tng bc tng thi im mt. Phng php tt nht c khuyn co l nn
theo di t t cc th d ny v nn kho st phn mm mt cch t m.
Cc li thng xy ra trong cc thit k h thng thng lin quan n cc ngt. V
chng ta ang s dng cc ngt, cc th d s hon chnh v c thc thi c lp. Mi
mt chng trnh bt u a ch 0000H vi gi thit l chng trnh bt u c
thc thi sau khi h thong"c reset. tng cui cng l cc chng trnh ny pht
trin cho cc ng dng chnh thc, chng c thng tr trong ROM hoc EPROM.
Khun mu ngh cho mt
chng trnh c thc thi c
c s dng ngt nh sau :

lp
; im nhp sau khi reset ;

ORG 0000H LJMP MAIN


cc im nhp ca ISR

ORG 0030H
MAIN :

; im nhp ca chng trnh chnh ;


chng trnh chnh bt u

Lnh u tin nhy n a ch 0030H ngay trn cc vector ngt ni cc ISR bt


u, nh c cho bng 6.4.
Hnh 6.3 cho ta thy chng trnh chnh bt u a ch 0030H.
6.4.1 Cc trnh phc v ngt kch thc nh
Cc trnh phc v ngt phi c bt u gn y ca b nh chng trnh ti
cc a ch cho bng 6.4. Mc d ch c 8 byte gia cc im nhp ca cc trnh phc
v ngt, dung lng ny thng hc hin cc cng vic c yu caTva~quay
tr v chng trnh chnh t TnTrnh pKc v ngt. iu ny c ngha l trnh phc
v ngt cho ac^ngt tng ng thng~khng di qu 8 byte.

Chng 6 : Hot ng ngt

113

g)

Nu ch c mt nguyn nhn ngt c dng, th d ngt do b nh thi 0, th


khun mu trnh by di y c th c s dng :
ORG

0000H

LJMP

MAIN

; reset

ORG OOOBH

; im nhp ca ngt do b nh thi 0 ; Bt


TOISR :

RETI
MAIN :

u ISR cho b nh thi 0

; tr v chng trnh chnh ;


chng trnh chnh

Nu c nhiu ngt c s dng, ta phi cn thn m bo cc ISR c bt


u ng v tr v khng trn sang ISR k. V ch c mt ngt c s dng trong
th d trn, chng trnh chnh c th bt u ngay sau lnh RETI.
Externa code
memorv

Main program

Resrt and
interrupt
entry points

Hnh 6.3 : T chc b nh khi s dng ngt


External code memory : b nh chng trnh ngoi Main program:
chng trnh chnh
Reset and interrupt entry points : cc im nhp ca reset h thng v cc ngt

6.4.2. Cc trnh phc v ngt kch thc ln


Nu mt trnh phc v ngt di hn 8 byte c cn n, ta phi di chuyn chng
trnh ny n mt ni khc trong b nh chng trnh

HI 114

H vi iu khin 8051

hoc ta c th cho ln qua im nhp ca ISR k. in hnh l ISR bt u vi mt


lnh nhy n mt vng khc ca b nh chng trnh, ISR c tri rng nu
cn. Nu ch kho st b nh thi 0, khun mu sau y c th c s dng :
; im nhp reset
ORG
0000H

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

n gin, cc chng trnh ca chng ta s ch lm mt vic thi im bt


u. Chng trnh chnh khi ng b nh thi, port ni tip v cc thanh ghi ngt
sao cho thch hp v ri khng lm g c. Cng vic hon ton c thc hin bn
trong ISR. Sau cc lnh khi ng, chng trnh chnh cha lnh sau :
HERE : SJMP HERE

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

theo khun mu ca cc chng


trinh c s dng ngt. Di y l
chng trnh cho th d 6.1
; dim nhp reset ; nhy qua khi cc

ORG 0 LJMP MAIN ORG 000BH


TOISR:

CPL Pl.o

vector ngt ; vector ngt ca b dnh


thi 0 ; ly b

RETI
ORG 0030H MAIN:

MOV

; dim nhp ca chng trnh chnh ; ch

TMOD, #02H

2 ca b dinh thi 0 ; tr hon 50 ns ; b

MOV THO, #-50 SETB TRO MOV

dnh thi hot dng ; cho php ngt do b

#82H SJMP $

dnh thi 0 ; khng lm g

IE,

END

y l mt chng trinh hon


chinh v ta c th np cho EPROM sau khi dch sang m my. Ngay sau khi reset h
thng, b m chng trnh PC c np 0000H. Lnh u tin c thc thi l
LJMP MAIN, lnh ny r nhnh n chng trinh chnh a ch 0030H trong b
nh chng trnh. Ba lnh u tin ca chng trnh chnh khi ng b nh thi 0
ch t np li 8-bit sao cho s trn sau mi 50 fis. Lnh MOV IE, #82H cho
php cc ngt do b nh thi 0 to ra. Mi mt ln trn, b nh thi s to ra mt
ngt. D nhin ln trn u tin s khng xu't hin sau 50 fis do chng trnh chnh
ang trong vng lp khng lm g Khi ngt xut hin sau mi 50 fis, chng
trnh chnh b ngt v trnh phc v ngt cho b nh thi 0 c thc thi. th d
trn trnh ny ch n gin ly b bit ca port v quay tr v chng trnh chnh ni
vng lp khng lm g c thc thi ch mt ngt mi sau 50 ns.
Lu l c trn ca b nh thi TF0 khng cn c xa bi phn mm do
khi cc ngt c cho php, c ny t ng c xa bi phn cng khi CPU tr ti
trnh phc v ngt.
Hin nhin a ch quay v trong chng trinh l a ch ca lnh SJMP. a ch
ny c ct vo vng stock ni ca 8051 trc khi CPU tr ti trinh phc v ngt
v c ly li t stack khi lnh RETI cui

Chng 6 : Hot ng ngt

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 -

Hnh 6.4 : Cc dng sng ca th d 6.2

T hp cc ng ra ny rt kh to ra c trn mt h thng khng c iu


khin ngt. B nh thi 0 hot ng ch 2 c s dng to ra dng sng 7
KHz trn chn P1.7, cn b nh thi 1 hot, ng ch 1, ch nh thi 16bit, to ra dng sng 500 Hz trn chn P1.6. V dng sng 500Hz yu cu thi gian
mc cao l 1 ms v thi gian mc thp l 1 ms, ch 2 khng s dung c (
nhc li l 256 .IS l khong thi gian ln nht nh thi c ch 2 khi 8051
hot, ng tn s 12 MHz ). Chng trnh ca th d 6.2 nh sau :
ORG 0
LJMP MAIN
ORG

000BH

; da ch vector ca b dnh thi 0

LJMP T0ISR
ORG

001BH

; da ch vector ca. b dnh thi 1

LJMP TlISR
ORG
MAIN

0030H

MOV TMOD,
#12H

b nh thi 1 : ch 1

H vi iu khin 8051

MOV THO, #-71

; b nh thi 0 : ch 2 ; 7 KHz
s dng b nh thi 0

SETB TRO

TOISR :
RETI

; buc ngt do b nh thi 1 ; cho php

SETB TF1 MOV IE,

cc b nh thi

#8AH SJMP $

CPL

ngt do

P1.7

MOV THl, #HIGH(-1000)

; thi gian mc cao 1 ms

MOV TL1, #LOW(1000)

; thi gian mc thp 1 ms

SETB

TRI

CPL

Pl.6

RETI

Chng trnh cho th d 6.2 cng l mt chng trnh hon chnh c th c


ci t trong ROM hoc EPROM trn sn phm s dng 8051. Chng trnh chnh
v cc trnh phc v ngt c t bn trn cc vector ngt ca reset h thng v
ca cc ngt khc. C hai dng sng c to ra bi cc lnh CPL bit , tuy nhin
cc khong thi gian c nh thi cn phi c cc phng php gii quyt hi
khc nhau mt. cht.
Do bi cc thanh ghi TLl/THl phi c np li sau mi ln trn ( ngha l sau
mi mt ngt ), trnh phc v ngt cho b nh thi 1 :
a) dng b nh thi.
b) np li cho TL1/TH1.
c) bt u b nh thi.
d) ly b bit ca port.
Cng cn ch l cc thanh ghi TL1/TH1 khng c khdi dng u
chng trnh chnh, khc vi THO. Do TL1/TH1 phi c np li sau mi ln trn
b nh thi, TF1 c set bng 1 trong chng trnh chnh bi phn mm buc
phi c mt ngt ban u ngay trc khi

Chng 6 : Hot ng ngt

119

g)

cc ngt c cho php. iu ny c hiu qu cho vic bt u dng sng


500Hz.
Trnh phc v ngt cho b nh thi 0 cng nh trong th d trc, ch n gin
ly b bit ca port v quay tr v chng trnh chnh. SJMP $ c s dng trong
chng trnh chnh l dng vit tt ca HER rSJMP HERE; hai dng ny c cng
chc nng ( xem mc cc iv hi ca hp ngiTlrong chng 7 ).
6.5 CC NGT DO PORT N TIP
Cc ngt do port ni tip xut hin khi c ngt pht TI hoc c ngt thu RI
c set bng 1. Mt ngt pht xut hin khi vic pht mt k t ghi vo SBUF
hon tt. Mt ngt thu xut hin khi mt k t c thu nhn y va ang
trong SBUF d ch dc dc. Nh vy ngt. pht xy ra khi b m pht SBUF
rng cn ngt thu xv ra khi b m thu SBF y.
e---Cc ngt do port ni tip c khc vi cc ngt do b nh thi. C gy ra ngt
r port ni tip khng c xa bi phn cng khi CPU tr ti trnh phc v ngt.
L do l v y ta c 2 nguyn nhn to ra ngat port ni tip, c th l 2 ngt
to ra bi 2 c TI v RI ( c ngt pht v c ngt thu ). Nguyn nhn ngt phi
dc xc dnh trong trnh phc v ngt v c tao ra ngt c xa bi phn mm.
cn nhc li vi cc ngt do b nh thi, c to ra ngat c xa bi phn cng
khi CPU tr ti trnh phc v ngt.
Th d 6.3 : Xut k t s dng ngt.
Vit 1 chng trnh s dng cc ngt lin tc pht i tp m ASCII ( bao
gm c cc m iu khin ) n 1 thit b u cui ni vi 8051 qua port ni tip.
C 128 m ASCII 7-bit trong bng m ASCII. Cc m ny bao gm 95 m
ha ( t 20H n 7EH ) v 33 m iu khin ( t 00H n 1FH v 7FH ). Chng
trnh di dy l 1 chng trnh hon chnh v c thc thi t ROM hoc
EPROM ngay sau khi reset h thng.
Sau khi nhy n nhn MAIN a ch 0030H, ba lnh u tin khi ng b
nh thi 1 d cung cp xung clock 1200 baud cho port ni tip, lnh MOV SCON,
#42H khi ng port ni tip ch 1 ( UART 8-bit ) v set c TI bng 1
buc to ra mt ngt trc khi cc ngt c cho php. Sau m ha ASCII
u tin ( 20H ) c np cho thanh ghi A v cc ngt do port ni tip c cho
php. Cui cng phn chnh ca chng trnh i vo vng lp khng lm g
(lnh SJMP $).

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

MOV TMOD, #20H


MOV THI, #-26
SETB TRI MOV
SCON, #42
MOV

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

tin ; gi k t th nht, gi k t trng


du tin, cho php ngt do port ni tip
khng lm g. nu kt thc tp m ASCII

reset n SPACE gi k t n port ni


^ *-(f i
tip k t k
xa c ngt pht

Trnh phc v ngt ca port ni tip lm tt c cng vic mt khi


K)/<r
chng trnh chnh thit lp cc iu kin ban u. Hai lnh u tin
kim tra thanh cha v nu m ASCII t n 7FH ( ngha l m va mi c tx
pht i l 7EH ), thanh cha c thit lp li vi ni dung l 20H. Sau m
ASCII c gi n b m ca port ni tip ( MOV SBUF, A ), tng thanh cha A
c m k, c ngt pht c xa ( CLR TI ) v trnh phc v ngt kt thc
( RETI ). iu khin tr v chng trnh chnh v lnh SJMP $ c thc thi cho
n khi TI li c set bng 1.
Nu ta so snh tc ca CPU vi tc truyn k t, ta thy rng lnh SJMP $
c thc thi vi phn trm t l thi gian rt ln trong chng trnh ny. Phn trm t
l ny bng bao nhiu ? tc 12QQ, _baud. mi mi bit, c truvn trong mt
khong thi gp l /19QQ-g- 0,833 ms. Nh vy 8 bit d liu cng vi 1 bit start
1
v 1 bit stop chim "

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

hoc INT\ ca 8051. y


port 3

Ngt ngoi xy ra kl c thp hoc c cnh m trn


chn /A7'()_-
l cc chn a hp vi 2 chn P3.2 v P3.3 ca

Thc t cc c to ra cc ngt ny l cc bit IEO v IE1 ca thanh ghi TCON.


Khi mt ngt ngoi c to ra, c to ra ngt c xa bi phn cng khi CPU
tr n trnh phuc v ngt, ch nn ngt, thuc loi

tfi_ng-xanh. Nu ngt thuc loi tc ng mc, nguyn n________________


ngoi s iu khin mc ca c thay v l phn cng trn chip.
r
Vic chn cc ngt loi tc ng cnh hay cc ngt loi tc ng mc c lp
trnh thng qua cc hit, TTO v T1 ca thanh ghi TCQN. Ly th d nu IT1 = 0,
ngt ngoi 1 dc kch khi bi vic pht hin mc thp chn INT1. Nu IT1 =
1, ngt ngoi 1 c kch khi cnh. ch d ny, neu"cac mu lin tip chn
/ATI cho thy chn ny mc cao trong mt chu k v mc thp trong chu k
k, c ngt IE1 trng thanh ghi~TCONlc set bng 1 ; k n IE1 yu cumt
ng:
V cc chn ngt ngoi c ly mu mt ln mi mt chu k m.y,_ cc ng
vo ny phi c duv tr ti thiu 12 chu k dao ng m bo rng vic ly
mu l ng. Nu ngt ngoi thuc loi tc ng cnh, nguvn nhn ngt ngoi
phi c duy tr ti chn yu cu mc cao ti thiTnt chu k v sau mc
thp ti thiu mt chu k na m bo rng s chuyn~trng thi c pht
hin. lEO v 1K1 t ng c xa khi CPU tr ti trnh phc v ngat tng ng.
Nu ngt ngoi thuc loi tc ng mc, nguyn nhn ngt ngoi phi c
duy tr trng thi tch cc cho n khi ngt theo yu cu thc s c tao ra. Sau
nguyn nhn ngt phi trng thi th ng trc khi trnh phc v ngt c
thc thi xong hoc trc khi c mt rt, khc c tao ra.

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

Th d 6.4 : iu khin l nung


S dng cc ngt thit k b iu khin l nung sao cho nhit c duy tr
20c Ioc.
8051
INTI
HOT
Pl.7

COLD--------------------- INT

Hnh 6.5 : Th d (a) kt ni phn cng (b) gin thi gian

Gi s ta dng mch giao tip sau y cho th d 6.4. Cun dy iu khin m / tt


l c ni vi chn P1.7 sao cho :
P1.7 = 1 : m l
P1.7 = 0 : tt
B cm bin nhit c ni vi INTO, INT 1 v cung c'p cc tn hiu HOT ,
COLD nh sau :
W = 0 nu T > 21c c 5' V 1
COLD = 0 nu T < 19c
Chng trnh s cho l hot ng ( m l ) khi T < 19c v cho l ngng hot
ng ( tt l ) khi T > 21c.

Cu hnh phn cng v gin thi gian c trnh by hnh 6.5.


Chng 6 : Hot ng ngt

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 "

; cho php cc ngt ngoi ;|


kch
;|kchkhi
khicanh
canhm v''"

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

S dng cc ngt thit k mt h thng bo ng to ra m hiu 400 Hz trong 1


see ( s dng 1 oa ni vi chn P1.7 ) mi khi b cm bin t ca ( c ni vi
chn INI 0 ) to ra mt chuyn trng thi t mc cao xung mc thp.
Gii php cho th d 6.5 l s dng 3 ngt : ngt ngoi 0 ( b cm bin ca ), ngt
do b nh thi 0 ( m hiu 400 Hz ) v ngt do b nh thi 1 ( nh thi 1 see ). Cu
hnh phn cng v. gin thi gian c v hnh 6.6.

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.

MOV TMOD, #11H


MOV IE. #81H SJMP $
EXOISR :
MOV R7, #20
SETB TF0
SETB TF1
SETB ETO
SETB ET1
RETI
TOISR :
CLR TRO
DJNZ R7, SKIP CLR ETO CLR ET1
LJMP EXIT MOV THO, #HIGH(50000)
MOV TLO, #LOW(- 50000)
SETB TRO EXIT:
RETI
T1ISR: CLR
TRl
MOV THI, #HIGH(1250)
MOV TL1, #LOW(-

1250)
CPL P1.7 SETB TRI
RETI END
; ch nh thi 16 bit y

p
1
j

t
c

; ch cho php EX 0 v'


20x5000|xs = 1 sec buc ngt do b
nh thi 0 buc ngt do b nh thi
1 bt u m hiu trong 1 sec cho
php cc ngt do b dinh thi
; dng b nh thi. 'j ; nu cha
20 ln, thot ; nu kt thc m hiu

; 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.

6.7 GIN THI GIAN CA NGAT


Cc ngt c ly mu v c cht S5P2 ca mi chu k my ( xem hnh
6.7 ). Chng c xoay vng n chu k my k v nu c mt iu kin ngt tn ti,
ngt c chp nhn nu :
^ a) khng c ngt no khc c lu tin bng hay cao hn ang xy
ra.
4
b) chu k xoay vng l chu k cui ca mt lnh.
' c) lnh hin hnh khng phi l lnh RETI hoc lnh truy xut n thanh ghi IE
hoc IP. Trong sut 2 chu k k tip, CPU ct ni

Chng 6 : Hot ng ngt

127

g)

dung ca PC vo stock v np ho PC ia ch vector ngt. Trnh phc v~ ngt bt


u.
iu kin lnh hin hnh khng phi l lnh RETI nhm m bo rng c t nht
mt lnh c thc thi sau mi mt trnh phc v ngt.
Gin thi gian c cho hnh 6.8.

-<-----1 mafhine c ycle (lus)--------------

12 MHz uuumnjuuirLrLnn
S5

'----------------0.25 s--------------------I
S6

Interrupts
sampled

Hnh 6.7 : Ly mu cc ngt trong S5P2


Cycle 2r

Cvelp 1

_.......y

Interrupts
polled

Interrupts
sampled

,T

Cycle 3

Cycle 4

Interrupt accepted
pushed on stack)

Cycle
5
SGP1
ISR
begin

(PC

Must be last machine cvcle of instruction

Hnh 6.8 : Xoay vng cc ngt


Interrupts sampled : cc ngt c ly mu Machine

SGP2

cycle : chu k my Interrupts polled : cc ngt c xoay


vng
I
Interrupt accepted ( PC pushed on stack ) : ngt dc chp nhn ( PC dc ct vo
stack )

ISR begins : IRS bt u

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)

Hnh 6.9 : Interrupt latency


Level 0 IRR : ISR mc 0
Main program : chng trnh chnh
Save PC on stack : cat PC vo stack
Level 1 interrupt occurs here ( missed last chance before RETI instruction ) : ngt mc 1
xut hin y ( c hi sau cng b b qua trc khi c lnh RETI )

You might also like