You are on page 1of 18

Hiu nh t slide ca thy H Trung M B mn in t - DH BK TPHCM

CHNG 3 H VI IU KHIN 8051

3.4 Timer (Mch nh thi)

Gii thiu v timer


Timer l mt chui cc flip-flop chia i tn s mc ni tip vi nhau, chng nhn tn hiu vo lm ngun xung nhp. Xung nhp c a vo flip-flop th nht chia i tn s xung nhp. Ng ra ca flip-flop th nht lm xung nhp cho flip-flop th hai (cng lm vic chia i tns), v v.v... V mi tng k tip chia i cho nn timer c n tng s cho xung ra c tn s l tn s xung nhp chia cho 2n. Ng ra ca tng cui lm xung nhp cho flip-flop bo trn ca timer (cn gi l c timer TF [Timer Flag]). Gi tr nh phn trong cc flip-flop ca timer c th xem nh s m s xung nhp (hoc cc s kin) t khi timer bt u chy. Th d timer 16 bit s m ln t 0000H n FFFFH. C bo trn s ln 1 khi s m trn t FFFFH 3 n 0000H.

TD: Timer 3 bit

8051/8031 c hai timer 16 bit (T0 v T1), mi timer c bn ch hot ng. Ngi ta s dng cc timer :
a) nh khong thi gian, b) m s kin hoc c) to tc baud cho cng ni tip c sn trong 8051/8031.

Timer trong 8051

Mi timer 16 bit c 16 tng hay tng cui cng chia tn s xung nhp cho 216=65536. Ngun xung nhp cho cc timer l xung vung c tn s bng 1/12 tn s xung nhp cung cp cho 8051. Trong cc ng dng nh khong thi gian, ngi ta lp trnh cho timer trn mt khong u n v t c trn timer ln 1. C c dng ng b ha hoc o thi gian tri qua gia hai s kin (v d: o rng xung). m s kin c dng xc nh s ln xy ra ca mt s kin hn l o khong thi gian tri qua gia cc s kin. Mt s kin l bt c tc ng bn ngoi no c th cung cp mt chuyn tip 1 sang 0 t chn T0, T1( P3) ca 8051/8031. Cc timer cng c th cung cp xung nhp tc baud cho 5 cng ni tip c sn trong 8051/8031.

Cc thanh ghi timer


Timer (T0/T1) ca 8051 c to bi 2 thanh ghi 8 bit. Timer 0 (T0) c to bi
TL0 vTH0 (L=Low v H=High) Truy cp chng nh cc thanh ghi khc, TD:

MOV TL0, #55H MOV R1, TH0 Timer 1 (T1) c to bi TL1 and TH1
6

Cc SFR ca timer

Thanh ghi iu khin timer (TCON)

Thanh ghi ch timer (TMOD)

Cc ch hot ng ca timer

10

Cc ch timer v c bo trn

11

Ch timer 13 bit (Ch 0)

Ch 0 l ch timer 13 bit tng thch vi b x l trc 8051 l 8048 Vi cc thit k mi ngi ta t dng ch hot ng ny Byte cao ca timer (THx) ni tip vi 5 bit thp ca byte thp ca timer (TLx) to thnh timer 13 bit Ba bit cao ca TLx khng c s dng
12

Ch timer 16 bit (ch 1)

Ch 1 l ch timer 16 bit ging nh ch 0, ngoi tr lc ny timer hot ng nh timer 16 bit y . Trn xy ra khi c chuyn tip t FFFFH sang 0000H trong s m v n t c bo trn timer ln 1. Timer tip tc m tip. C bo trn l bit TFx trong TCON m ngi ta c th c ra hoc ghi vo bng phn mm

13

Ch timer 8 bit t np li tr u (ch 2)

Ch 2 l ch t ng np gi tr u. Byte thp ca timer TLx lm vic nh timer 8 bit trong khi byte cao ca timer THx gi gi tr cn np li. Khi b m trn t FFH sang 00H th khng nhng c timer c t ln 1 m gi tr trong THx cn c np vo TLx, vic m tip tc t gi tr ny n chuyn tip t FFH sang 00H k, v c tip tc nh vy. Ch ny tin li v trn timer xy ra theo nhng khong thi gian c chu k mt khi TMOD v THx c khi to tr 14

Ch tch timer (ch 3)

Ch 3 l ch tch timer th khc nhau vi mi timer. Timer 0 ch 3 c tch thnh 2 timer 8 bit. TL0 v TH0 lm vic nh 2 timer c lp vi cc bo trn t cc c TF0 v TF1 tng ng 15

c im ca ch 3
Timer 1 b dng ch 3, nhng c th cho n chy bng cch chuyn sang 1 trong cc ch khc. Gii hn duy nht l c bo trn thng thng ca Timer 1 (TF1) khng b nh hng bi s bo trn trong Timer1 v TF1 c ni vo TH0. Ch 3 ch yu cho thm 1 timer 8 bit (8051 ging nh c thm timer th ba). Khi Timer 0 ch 3, ta c th bt hay tt Timer 1 bng cch chuyn n ra khi hay i vo chnh ch 3 ca n. N vn c th c cng ni tip s dng lm b to tc baud hoc c th c s dng theo bt c cch no m khng cn ngt (v n khng cn tc ng c vi TF1)
16

Cc ngun to xung nhp

C 2 ngun xung nhp, m ta c th chn bng cch ghi vo bit chn b m/timer trong TMOD khi to cc tr khi ng timer. Mt ngun xung nhp c dng nh th khong thi gian, cn ngun kia m s kin.
17

nh th khong thi gian


Nu C/T = 0, hot ng timer lin tc c chn v timer c cp xung nhp t mch dao ng trn chip. Mt tng chia 12 c thm vo gim tn s xung nhp xung gi tr thch hp cho phn ln cc ng dng trong iu khin. Khi chn hot ng timer lin tc th timer c s dng nh th khong thi gian (interval timing). Cc thanh ghi timer (TLx/THx) tng ni dung thm 1 c theo tn s l 1/12 tn s dao ng trn chip; nh vy vi thch anh 12 MHz th xung nhp ca timer l 1 MHz. Trn timer xy ra c sau mt s cc xung nhp c nh m ty theo gi tr u c np vo cc thanh ghi TLx/THx
18

m s kin
Nu C/T = 1, timer c cp xung nhp t ngun bn ngoi. Trong phn ln cc ng dng, ngun bn ngoi ny cung cp timer mt xung khi xy ra s kintimer c s dng m s kin (event counting). S s kin c xc nh trong phn mm bng cch c cc thanh ghi TLx/THx, t gi tr 16 bit trong cc thanh ghi ny tng thm 1 cho mi s kin. Ngun xung nhp bn ngoi c cung cp bng cch a vo cc chn c chc nng thay th Port 3:ng vo xung nhp cho Timer 0 l T0 (chn P3.4). hay cho timer l T1 (chn P3.5) Trong cc ng dng b m, cc thanh ghi timer c tng thm 1 khi c chuyn tip 1 sang 0 ng vo bn ngoi Tx. Ng vo bn ngoi ny c ly mu trong S5P2 ca mi chu k my; nh vy khi ng vo mc 1 trong 1 chu k v mc 0 trong chu k k th s m c tng thm 1. Gi tr mi xut hin trong cc thanh ghi timer trong S3P1 ca chu k theo sau chu k m chuyn tip c pht hin. T n mt 2 chu k my (2 s) ghi nhn chuyn tip 1 sang 0, do tn s bn ngoi ti a l 500 KHz (gi s hot ng 12 MHz)
19

Khi to tr v truy cp cc thanh ghi timer


Cc tc v:
t ch lm vic Cho timer chy Dng timer Kim tra c trn Xa c bo trn c v cp nht cc thanh ghi timer
20

t ch lm vic Cho timer chy Dng timer


TD:
t ch lm vic MOV TMOD, #00010000B timer 1: Gate=0, C/T=0, M1M0=01 (mode 1) timer 0: Gate=0, C/T=0, M1M0=00 (mode 0) Cho timer chy SETB TR1 Dng timer CLR TR1
21

Ch khi c xi ngt ngoi (TD: ch 1)

22

Kim tra c v truy cp cc thanh ghi timer


TD: Kim tra c v xa c WAIT: JNB TF1, WAIT CLR TR1 ; dng timer T1 CLR TF1 ; xa c bo trn Cp nht cc thanh ghi timer MOV TL1, #9CH MOV TH1, #0FFH
23

c gi tr m ca timer ang chy


R7 TH1, R6 TL1 Trc ht c byte cao Vn c th xy ra: khi trn byte thp c li ln na AGAIN: MOV MOV CJNE MOV A, TH1 R6, TL1 A, TH1, AGAIN R7, A
24

Cc bc lp trnh Timer mode 0 hay 1


Np tr cho TMOD Np tr s cho cc thanh ghi TL v TH Cho timer chy (SETB TR0 hay SETB TR1) Kim tra/theo di c bo trn timer (TF) i n khi c TF = 1 5. Dng timer (CLR TR0 hay CLR TR1) 6. Xa c TF 7. Quay v bc 2
25

1. 2. 3. 4.

Cc bc lp trnh Timer mode 2


1. 2. 3. 4. Np tr cho TMOD Np tr s cho cc thanh ghi TH Cho timer chy (SETB TR0 hay SETB TR1) Kim tra/theo di c bo trn timer (TF) i n khi c TF = 1 5. Dng timer (CLR TR0 hay CLR TR1) 6. Xa c TF 7. Quay v bc 3
26

nh th khong thi gian ngn v khong thi gian di

27

Th d: To dng xung trn chn P1.0


Vit mt chng trnh to ra dng sng c chu k trn P1.0 vi tn s cao nht c th c. Tn s v chu k nhim v ca dng sng ny l bao nhiu? (gi s ta dng XTAL = 12MHz 1 MC = 1us) Vi dng sng rt ngn: khng cn timer ORG 8000H LOOP: SETB P1.0 ; 1 MC CLR P1.0 ; 1 MC SJMP LOOP ; 2 MC

SETB P1.0

CLR

SJMP

SETB

1 us (1 MC)
Tn s = 250 Khz (1/ 4 us) duty cycle = TON/(TON+TOFF)= 25% (1/4) TON = 1 us, TOFF= 3us
28

Th d: To sng vung trn chn P1.0


ORG LOOP: SETB NOP NOP CLR SJMP 8000H P1.0 ; 1 MC ; 1 MC ; 1 MC P1.0 ; 1 MC LOOP ; 2 MC

SETB P1.0

NOP

NOP

CLR

SJMP

SETB

1 us (One machine cycle)


Tn s = 166.7 Khz ( 1/ 6 us ) duty cycle = TON/(TON+TOFF)= 50% (3/6) TON = 3 us, TOFF= 3us
29

To sng vung 10 KHz chn P1.0


To sng vung 10 KHz Tn s = 10KHz chu k T =1/10000 = 100 us TON = 50 us, TOFF= 50us Dng mode 2 ( 8 bit mode ), v khong thi gian < 256 us. ORG MOV MOV SETB JNB CLR CPL SJMP END 8000H TMOD, #02H TH0, #-50 TR0 TF0, LOOP TF0 P1.0 LOOP

LOOP:

; ch t np li 8 bit ; 256 50 = 206 ; cho timer T0 chy ; i timer T0 trn ; xa c bo trn ; o bit cng ; lp li
30

To sng vung 1 KHz trn chn P1.0


To sng vung 1 KHz Tn s = 1KHz chu k T =1/1000 = 1000 us TON = 500 us, TOFF= 500us Dng mode 1 ( 16 bit mode ), v khong thi gian > 256 us. ORG MOV MOV MOV SETB JNB CLR CLR CPL SJMP END 8000H TMOD, #01H TH0, #0FEH TL0, #0CH TR0 TF0, WAIT TR0 TF0 P1.0 LOOP

; ch 1 (16 bit) ; -500 (-01F4H) ; cho timer T0 chy ; i timer trn ; dng timer 0 ; xa c bo trn ; o bit cng ; lp li

LOOP:

WAIT:

Ch :

MOV TH0, #0FEH MOV TH0, #HIGH(-500) MOV TL0, #0CH MOV TL0, #LOW(-500)

31

Mt buzzer c ni vo chn P1.7 v mt cng tc khng ny (debounce switch) c ni vo chn P1.6 (xem hnh 3.28). Vit chng trnh c mc logic do cng tc cp v to ra m thanh buzzer trong 1 giy sau mi ln pht hin chuyn trng thi t 1 xung 0.

TD: Giao tip buzzer (1/2)

32

TD: Giao tip buzzer (2/2)

33

Lp trnh counter
ch counter: TMOD, TH, TL ging nh vi timer Cc ch timer cng ging Tuy nhin thay v dng tn s thch anh, counter m xung t bn ngoi a vo 8051. Bit C/T trong TMOD quyt nh ngun xung nhp. Khi C/T = 1, counter m ln khi c xung a vo cc chn T1 v T0 ( P3)

34

TD: lp trnh counter ch 2


Gi s c xung nhp a vo chn T1, vit chng trnh dng counter 1 ch 2 v xut s xung m c ra P2. Bi gii MOV TMOD, #01100000B ; counter 1 ch 2 MOV TH1, #0 MOV TL1, #0 SETB P3.5 ; lm cho T1 l chn nhp AGAIN: SETB TR1 ; cho counter 1 chy BACK: MOV A, TL1 ; ly s xung m c MOV P2, A ; xut ra P2 JNB TF1, BACK CLR TR1 35 CLR TF1 SJMP AGAIN

You might also like