Giáo trình Vi xử lý - Chương 4: Hoạt động của bộ định thời (Timer) - Phạm Quang Trí
Ứng dụng định thời gian (TIMER): bộ định thời được lập trình sao cho sẽ tràn sau một khoảng
thời gian đã qui định và khi đó cờ tràn của bộ định thời sẽ bằng 1.
• Ứng dụng đếm sự kiện (COUNTER): để xác định số lần xuất hiện của một kích thích từ bên
ngoài tới một chân của chip 8051 (kích thích là sự chuyển trạng thái từ 1 xuống 0).
• Ứng dụng tạo tốc độ baud cho port nối tiếp: xem thêm trong chương “Chương 5: Hoạt động
port nối tiếp.”
thời gian đã qui định và khi đó cờ tràn của bộ định thời sẽ bằng 1.
• Ứng dụng đếm sự kiện (COUNTER): để xác định số lần xuất hiện của một kích thích từ bên
ngoài tới một chân của chip 8051 (kích thích là sự chuyển trạng thái từ 1 xuống 0).
• Ứng dụng tạo tốc độ baud cho port nối tiếp: xem thêm trong chương “Chương 5: Hoạt động
port nối tiếp.”
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Vi xử lý - Chương 4: Hoạt động của bộ định thời (Timer) - Phạm Quang Trí", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.
File đính kèm:
- giao_trinh_vi_xu_ly_chuong_4_hoat_dong_cua_bo_dinh_thoi_time.pdf
Nội dung text: Giáo trình Vi xử lý - Chương 4: Hoạt động của bộ định thời (Timer) - Phạm Quang Trí
- Chương 4: Ho t ñ ng c a b ñ nh th i (Timer). Trư ng ðH Công nghi p Tp.HCM. Ki n trúc c a Timer 0 ch ñ 3 (Mode 3). V. NGU N XUNG CLOCK CHO B ð NH TH I: Ngu n xung cho b ñ nh th i ñư c t o ra t : • M ch dao ñ ng trên chip → dùng cho tính năng ñ nh th i gian. • Xung kích thích bên ngoài → dùng cho tính năng ñ m s ki n. 1. Trư ng h p ñ nh th i gian: N u C/T=0 thì: • B ñ nh th i ñư c dùng ñ ñ nh th i gian ( Timer ). • Ngu n xung clock ñ nh th i ñư c l y t m ch dao ñ ng trên chip. Lưu ý: o T n s xung clock cung c p cho b ñ nh th i b ng 1/12 t n s c a m ch dao ñ ng trên chip 8051. o Th i gian ñ nh th i là kho ng th i gian ñư c tính t lúc b ñ nh th i b t ñ u ñ m lên ( t giá tr ch a trong các thanh ghi THx/TLx ) cho ñ n lúc b ñ nh th i b t ñ u tràn ( th i gian này ph thu c vào giá tr ban ñ u ñư c n p cho các thanh ghi THx và TLx ). Giáo trình Vi x lý. 129 Biên so n: Ph m Quang Trí
- Chương 4: Ho t ñ ng c a b ñ nh th i (Timer). Trư ng ðH Công nghi p Tp.HCM. • Ví d : Tính t n s kích thích t i ña cho phép t i chân T0 và T1 ñ i v i trư ng h p các h th ng vi ñi u khi n xây d ng trên chip 8051 v i t n s th ch anh như sau: 11,0592 MHz, 12 MHz và 16 MHz. Gi i f 921 6, (KHz) f =11,0592()MHz → f = TIMER = = 460 8, ()KHz OSC T ,0 T (1 MAX ) 2 2 f 1(MHz) f =12()MHz → f = TIMER = = 500()KHz OSC T ,0 T (1 MAX ) 2 2 f ,1 333(MHz) f =16()MHz → f = TIMER = = 666 5, ()KHz OSC T ,0 T (1 MAX ) 2 2 o S lư ng s ki n (s xung) mà b ñ nh th i ñ m ñư c s ñư c ch a trong các thanh ghi THx/TLx, giá tr trong các thanh ghi này s tăng theo m i xung kích thích bên ngoài t i T0 và T1 c a chip 8051. o M t kích thích ñư c g i là m t s ki n (m t xung) khi x y ra s chuy n tr ng thái t 1 xu ng 0 chân T0 ho c T1. VI. KH I ð NG, D NG VÀ ðI U KHI N CÁC B ð NH TH I: • Cách 1: ( thư ng ñư c dùng ñ ñ nh th i gian ). ði u ki n s d ng: bit GATE = 0 (Phương pháp ñi u khi n b ng ph n m m ) ⇒⇒⇒ B ñ nh th i x ch y khi bit TRx = 1. ⇒⇒⇒ B ñ nh th i x d ng khi bit TRx = 0. Ví d : ð kh i ñ ng b ñ nh th i 0 ta dùng l nh: SETB TR0 ð d ng b ñ nh th i 0 ta dùng l nh: CLR TR0 • Cách 2: ( thư ng ñư c dùng ñ ño ñ r ng xung t i chân INTx\ ). ði u ki n s d ng: bit GATE = 1 và bit /TRx = 1 (Phương pháp ñi u khi n b ng ph n c ng ) ⇒⇒⇒ B ñ nh th i x ch y khi chân INTx\ = 1. ⇒⇒⇒ B ñ nh th i x d ng khi chân INTx\ = 0. Ví d : ðo ñ r ng xung (tính b ng s) t i chân INT0, v i fOSC = 12MHz. INT0\ t ( s) Giáo trình Vi x lý. 131 Biên so n: Ph m Quang Trí
- Chương 4: Ho t ñ ng c a b ñ nh th i (Timer). Trư ng ðH Công nghi p Tp.HCM. Gi i thích: GATE = 0 → ñi u khi n b ng ph n m m ( bit TR1). C/T = 0 → s d ng m ch dao ñ ng trên chip ( dùng ñ ñ nh m t kho ng th i gian ). M1 = 0, M1 = 1 → TIMER1 ho t ñ ng ch ñ 1 ( ch ñ ñ nh th i 16 bit ). o Ví d 2: Dùng b ñ nh th i 1 ví d trên ñ ñ nh m t kho ng th i gian là 100 s. Gi s vi ñi u khi n s d ng th ch anh 12 MHz. Gi i Ta dùng l nh: MOV TL1, #9CH MOV TH1, #0FFH ho c MOV TL1, #LOW( 100) MOV TH1, #HIGH( 100) Gi i thích: f 12 f =12()MHz → f = OSC = =1()MHz OSC TIMER 12 12 1 1 → T = = =1() s TIMER f 1 MHz TIMER () Trong ñó: fOSC : t n s th ch anh. fTIMER : t n s xung clock ñ nh th i. TTIMER : chu kỳ xung clock ñ nh th i. V y c m i 1 s (t c là sau m i chu kỳ c a xung clock ñ nh th i) thì b ñ nh th i s tăng giá tr m t l n. Mà ta ñã bi t: th i gian ñ nh th i là kho ng th i gian ñư c tính t lúc b ñ nh th i b t ñ u ñ m lên cho ñ n lúc b ñ nh th i b t ñ u tràn . V y ñ b ñ nh th i tràn s tràn sau kho ng th i gian 100 s thì ta ph i kh i ñ ng b ñ nh th i t i th i ñi m cách ñi m tràn ( theo chi u âm – vì b ñ nh th i ch ñ m lên ) 100 chu kỳ xung clock ñ nh th i. Vì ñi m tràn có giá tr là 0 cho nên giá tr c n n p cho các thanh ghi TH1/TL1 là 100 ( hay FF9CH ). $ Giáo trình Vi x lý. 133 Biên so n: Ph m Quang Trí
- Chương 4: Ho t ñ ng c a b ñ nh th i (Timer). Trư ng ðH Công nghi p Tp.HCM. • Ví d : ð c n i dung c a các thanh ghi TH1/TL1 trong khi b ñ nh th i 1 ñang ho t ñ ng. N i dung sau khi ñ c c a thanh ghi TH1 ch a trong R7, c a thanh ghi TL1 ch a trong R6. AGAIN: MOV A, TH1 MOV R6, TL1 CJNE A, TH1, AGAIN MOV R7, A VIII. CÁC KHO NG TH I GIAN ð NH TH I: Kh o sát trư ng h p 8051 dùng th ch anh 12 MHz : • Kho ng th i gian ñ nh th i ng n nh t ( s) : 1 • Kho ng th i gian ñ nh th i dài nh t ( s) : o ≈≈≈ 10 ⇒ Dùng các l nh. o ≤ 256 ⇒ Dùng b ñ nh th i 8 bit t ñ ng n p l i. o ≤ 65536 ⇒ Dùng b ñ nh th i 16 bit. o Không gi i h n ⇒ Dùng b ñ nh th i 16 bit + các vòng l p. Kh o sát trư ng h p t ng quát: • Kho ng th i gian ñ nh th i ng n nh t : 1.TTIMER • Kho ng th i gian ñ nh th i dài nh t : o ≈≈≈ 10.TTIMER ⇒ Dùng các l nh. o ≤ 256.TTIMER ⇒ Dùng b ñ nh th i 8 bit t ñ ng n p l i. o ≤ 65536.TTIMER ⇒ Dùng b ñ nh th i 16 bit. o Không gi i h n ⇒ Dùng b ñ nh th i 16 bit + các vòng l p. 12 v i T = T ( s): chu kỳ xung clock ñ nh th i. TIMER f TIMER OSC fOSC (MHz): t n s th ch anh. Giáo trình Vi x lý. 135 Biên so n: Ph m Quang Trí
- Chương 4: Ho t ñ ng c a b ñ nh th i (Timer). Trư ng ðH Công nghi p Tp.HCM. 2. Các bư c cơ b n ñ kh i ñ ng Counter: • Ch n ch ñ ho t ñ ng cho Counter, cho bit GATE=0 và C/T=1: MOV TMOD, # (1) • Xoá các giá tr ch a trong thanh ghi THx và TLx ( nghĩa là cho s xung ban ñ u b ng 0 ): MOV THx, #00H MOV TLx, #00H • Cho Counter ch y: SETB TRx • Ki m tra c báo tràn ( ki m tra s ñ m b tràn ) ñ x lý trư ng h p s ñ m b tràn. • Xóa c báo tràn ( sau khi ñã x lý cho trư ng h p s ñ m b tràn ): CLR TFx • D ng Counter ( sau khi ñã hoàn t t quá trình ñ m xung ): CLR TRx • ð c s xung ñ m ñư c trong thanh ghi THx và TLx. Lưu ý: x: S th t c a Counter s d ng. (1) : Giá tr này ph thu c vào Counter ñư c ch n và ch ñ ho t ñ ng c a Counter. Giá tr này ph i tho mãn ñi u ki n sau: o Ch ñ 8 bit: s lư ng xung t i ña mà Counter ñ m ñư c t 0 ñ n 255 . o Ch ñ 13 bit: s lư ng xung t i ña mà Counter ñ m ñư c t 0 ñ n 8191 . o Ch ñ 16 bit: s lư ng xung t i ña mà Counter ñ m ñư c t 0 ñ n 65535 . Trong quá trình ñ c s xung ñ m ñư c ch a trong các thanh ghi THx/TLx ta ph i chú ý ñ n trư ng h p Counter b tràn. Vì khi ñó giá tr trong thanh ghi THx/TLx ( nơi ch a s xung ñ m ñư c ) s tr v 0. Cho nên n u ta không có bi n pháp x lý cho trư ng h p này thì k t qu là s xung mà ta nh n ñư c s b sai. Vì th , n u ta gi s ban ñ u Counter ñư c kh i ñ ng v i giá tr là 0 thì c m i l n Counter b tràn thì ta ph i c ng thêm vào s xung ñ c v 256 xung ( trư ng h p 8 bit ) ho c 8192 xung (trư ng h p 13 bit ) ho c 65536 xung ( trư ng h p 16 bit ). X. CÁC VÍ D MINH H A: 1. Ví d 1: (T o d ng xung ) Vi t chương trình t o d ng xung tu n hoàn trên chân P1.0 có t n s cao nh t có th có. T n s và chu kỳ nhi m v c a d ng xung này là bao nhiêu? Gi i ORG 8100H LOOP: SETB P1.0 ;1 chu kỳ máy CLR P1.0 ;1 chu kỳ máy SJMP LOOP ;2 chu kỳ máy END Giáo trình Vi x lý. 137 Biên so n: Ph m Quang Trí
- Chương 4: Ho t ñ ng c a b ñ nh th i (Timer). Trư ng ðH Công nghi p Tp.HCM. V i tDelay = 10 ms, fOsc = 12 MHz thì ta ch n: [Rn] = 20 và [Rm] = 250 12 ⇔ t = 20 × 250 × .2 = 10000 s Delay 12 V i tDelay = 1 s, fOsc = 12 MHz thì ta ch n: [Rn] = 10 , [Rm] = 200 và [Ro] = 250 12 ⇔ t = 10× 200× 250× .2 =1000000 s Delay 12 • Chương trình: D a vào nh ng tính toán trên, ta có: V i tDelay = 100 s: DELAY: ;tDelay = 50 x 2.TTimer MOV R0, #50 ;l nh 1.TTimer DJNZ R0, $ ;l nh 2.TTimer RET ;l nh 2.TTimer V i tDelay = 10 ms: DELAY: ;tDelay = 20 x 250 x 2.TTimer MOV R0, #20 ;l nh 1.TTimer AAA: MOV R1, #250 ;l nh 1.TTimer DJNZ R1, $ ;l nh 2.TTimer DJNZ R0, AAA ;l nh 2.TTimer RET ;l nh 2.TTimer V i tDelay = 1 s: DELAY: ;tDelay = 10 x 200 x 250 x 2.TTimer MOV R0, #10 ;l nh 1.TTimer BBB: MOV R1, #200 ;l nh 1.TTimer AAA: MOV R2, #250 ;l nh 1.TTimer DJNZ R2, $ ;l nh 2.TTimer DJNZ R1, AAA ;l nh 2.TTimer DJNZ R0, BBB ;l nh 2.TTimer RET ;l nh 2.TTimer • Lưu ý v ñ chính xác c a tDelay : Khi s d ng phương pháp t o th i gian tr như trên ( phương pháp dùng l nh, không dùng Timer ) thì vi c ñ nh th i gian thư ng có m t sai s nh t ñ nh. Vì ñây, ñ ñơn gi n trong vi c tính toán mà ta ñã b qua không tính ñ n th i gian c n thi t ñ th c hi n t ng l nh trong chương trình, ch quan tâm ñ n th i gian th c hi n c a l nh DJNZ ( 2TTimer ) và s l n th c hi n c a nó. Công th c trình bày trên (1) ch là công th c tính th i gian tDelay có ñ chính xác tương ñ i, mu n tính th i gian tDelay chính xác thì ta c n ph i tính t ng th i gian th c hi n ( nghĩa là tính s chu kỳ máy hay s chu kỳ Timer ) c a t t c các l nh có trong chương trình. ð chính xác c a chương trình t o th i gian tr theo phương pháp tính tương ñ i này ph thu c vào s l n l p l i và s vòng l p . V i tDelay = 100 s, fOsc = 12 MHz thì tDelay chính xác là: t = .1 T + .2 T ×50 + .2 T =103.T Delay(cx) Timer Timer Timer Timer Giáo trình Vi x lý. 139 Biên so n: Ph m Quang Trí
- Chương 4: Ho t ñ ng c a b ñ nh th i (Timer). Trư ng ðH Công nghi p Tp.HCM. • ð chính xác (xét v m t th i gian) c a chương trình: Khi s d ng phương pháp t o th i gian tr như trên ( phương pháp dùng Timer ) thì vi c ñ nh th i gian cũng xu t hi n m t sai s . Vì ñây, ñ ñơn gi n trong vi c tính toán mà ta ñã b qua không tính ñ n th i gian c n thi t ñ th c hi n t ng l nh trong chương trình, ch quan tâm ñ n giá tr c n ph i n p cho b ñ nh th i sao cho Timer ñ nh ñư c kho ng th i gian mà ta yêu c u. ð chính xác c a chương trình ñ nh th i khi s d ng phương pháp này không ph thu c vào giá tr c n n p cho Timer (N) mà nó ch ph thu c vào s lư ng l nh s d ng trong chương trình . V i d ng th nh t ( ch ñ 2 ) thì t chính xác là: t =11.T + t =111( s) Delay Delay(cx) Timer Delay V i d ng th hai ( ch ñ 1 ) thì t chính xác là: t =13.T + t =113( s) Delay Delay(cx) Timer Delay 4. Ví d 4: ( T o th i gian tr ) Vi t chương trình con t o th i gian tr 10 ms dùng Timer 1. Bi t r ng t n s th ch anh là 12 MHz. Gi i • Tính toán: Tìm giá tr c n n p cho b ñ nh th i và ch ñ ho t ñ ng c a b ñ nh th i này: Theo ñ bài ta có: t =10 ms và f =12 MHz Delay ( ) Osc ( ) Giá tr c n n p cho b ñ nh th i ñư c tính theo công th c: f 12.106 N = − Osc ×t = − ×10.10−3 = −10000 12 Delay 12 V y: N = 10000 ho c N = D8F0H. Ta có: t = 10 ms = 10000 s Delay ( ) ( ) 1 12 12 T = = = =10−6()()s =1 s Timer f f 6 Timer Osc 12.10 Vì t ≤ 65536.T (hay N n m trong kho ng t 65535 ñ n 1) nên ta ch n Timer Delay Timer ch ñ 1 ( ch ñ 16 bit ). • Chương trình: D a vào nh ng tính toán trên, ta có: ⇒ Chương trình con hoàn ch nh khi s d ng Timer 1 ch ñ 1: DELAY: MOV TMOD, #10H MOV TH1, #HIGH( 10000) ho c MOV TH1, #0D8H MOV TL1, #LOW( 10000) ho c MOV TL1, #0F0H SETB TR1 JNB TF1, $ CLR TF1 CLR TR1 RET • ð chính xác (xét v m t th i gian) c a chương trình: V i ví d trên ( ch ñ 1) thì t chính xác là: t =13.T + t =10013( s) Delay Delay(cx) Timer Delay Giáo trình Vi x lý. 141 Biên so n: Ph m Quang Trí
- Chương 4: Ho t ñ ng c a b ñ nh th i (Timer). Trư ng ðH Công nghi p Tp.HCM. • ð chính xác (xét v m t th i gian) c a chương trình: Trư ng h p này cũng tương t như các trư ng h p ñ nh th i s d ng Timer ñã nêu các ví d trên. Tuy nhiên ñây, ñ chính xác c a chương trình ñ nh th i khi s d ng phương pháp này không ph thu c vào giá tr c n n p cho Timer (N) mà nó ph thu c vào s lư ng l nh s d ng trong chương trình, s l n l p l i và s vòng l p . V i ví d trên ( ch ñ 1 + vòng l p ) thì tDelay chính xác là: t = .5 T + 11.T + t ×100 + .4 T Delay(cx) Timer Timer Delay(Timer) Timer =1001109()() s = ,1 001109 s V i tDelay(Timer): th i gian ñ nh th i c a Timer ( 10000 s ). 6. Ví d 6: ( T o th i gian tr ) Vi t chương trình con t o th i gian tr 60s dùng Timer 0. Bi t r ng t n s th ch anh là 12 MHz. Gi i • Tính toán: Tìm giá tr c n n p cho b ñ nh th i và ch ñ ho t ñ ng c a b ñ nh th i này: Theo ñ bài ta có: t = 60 s và f =12 MHz Delay ( ) Osc ( ) Giá tr c n n p cho b ñ nh th i ñư c tính theo công th c: f 12.106 N = − Osc ×t = − × 60 = −60000000 12 Delay 12 V y: N = 60000000 (giá tr quá l n không th n p tr c ti p vào các thanh ghi THx/TLx). Ta có: t = 60 s = 60000000 s Delay ( ) ( ) 1 12 12 T = = = =10−6()()s =1 s Timer f f 6 Timer Osc 12.10 Vì t > 65536.T nên ta ch n ph i Timer ch ñ 1 ( ch ñ 16 bit ) k t h p v i các Delay Timer thanh ghi ñ t o vòng l p. G i: N’ là giá tr c n n p cho các thanh ghi ñ nh th i. [Rn] là giá tr c n n p cho thanh ghi k t h p ( vòng l p 1 ). [Rm] là giá tr c n n p cho thanh ghi k t h p ( vòng l p 2 ). ⇒ N = [Rn] x [Rm] x N’ Ta t ch n: N’ = 10000 → [Rm] = 100 → [Rn] = 60 o Lưu ý: N' ñư c ch n sao cho phù h p v i qui ñ nh ch n giá tr c n n p cho các thanh ghi ñ nh th i ch ñ 1. [Rn], [Rm] ≤≤≤ 255 , ñ c bi t n u ch n [Rn], [Rm] = 0 thì ñi u này s tương ñương v i trư ng h p ta ch n [Rn], [Rm] = 256. ⇒ Giá tr c n n p cho các thanh ghi ñ nh th i là 10000 và giá tr c n n p cho các thanh ghi k t h p là 60 ( cho vòng l p 1 ), 100 ( cho vòng l p 2 ). Giáo trình Vi x lý. 143 Biên so n: Ph m Quang Trí
- Chương 4: Ho t ñ ng c a b ñ nh th i (Timer). Trư ng ðH Công nghi p Tp.HCM. Theo ñ bài, ta có chu kỳ làm vi c D=50% cho nên: 1 1 t = 50%×T = 50% × = 5,0 × = .5 10− 5()()s = 50 s H 3 f 10.10 ⇒ tH = 50 ( s) và tL = 50 ( s). V y ñây ta ph i dùng Timer 0 ñ t o th i gian tr 50( s) cho th i gian sóng m c cao và 50( s) cho th i gian sóng m c th p. Theo như trên, ta có: t = 50 s và f =12 MHz Delay ( ) Osc ( ) Giá tr c n n p cho b ñ nh th i ñư c tính theo công th c: f 12.106 N = − Osc ×t = − ×50.10−6 = −50 12 Delay 12 V y: N = 50 ho c N = CEH . Ta có: t = 50 s Delay ( ) 1 12 12 T = = = =10−6()()s =1 s Timer f f 6 Timer Osc 12.10 Vì t ≤ 256.T ( hay N n m trong kho ng t 255 ñ n 1) nên ta có th ch n Timer Delay Timer ch ñ 1 ( ch ñ 16 bit ) ho c ch ñ 2 ( ch ñ 8 bit t ñ ng n p l i ). • Chương trình: D a vào nh ng tính toán trên, ta có: MAIN: SETB P1.0 ACALL DELAY50US CLR P1.0 ACALL DELAY50US SJMP MAIN DELAY50US: MOV TMOD , #02H MOV TH0, #( 50) ho c MOV TH0, #0CEH SETB TR0 JNB TF0, $ CLR TR0 CLR TF0 RET END Giáo trình Vi x lý. 145 Biên so n: Ph m Quang Trí
- Chương 4: Ho t ñ ng c a b ñ nh th i (Timer). Trư ng ðH Công nghi p Tp.HCM. SETB TR0 JNB TF0, $ CLR TR0 CLR TF0 RET END 9. Ví d 9: ( T o sóng vuông ) Vi t chương trình t o sóng vuông có t n s 100 Hz ngõ ra P1.0 và có chu kỳ làm vi c D=30%. Bi t r ng t n s th ch anh là 12 MHz và s d ng b ñ nh th i 0. Gi i • Tính toán: 8051 f = 100 Hz P1.0 30% 70% fOSC =12 MHz tH tL T Theo ñ bài, ta có chu kỳ làm vi c D=30% cho nên: 1 1 t = 30% ×T = 30% × = 3,0 × = .3 10− 3 s = 3000 s H ()() f 100 ⇒ tH = 3000 ( s) và tL = 7000 ( s). V y ñây ta ph i dùng Timer 0 ñ t o th i gian tr 3000( s) cho th i gian sóng m c cao và 7000( s) cho th i gian sóng m c th p. Theo như trên, ta có ( xét trư ng h p tH): t = 3000 s và f =12 MHz Delay ( ) Osc ( ) Giá tr c n n p cho b ñ nh th i ñư c tính theo công th c: f 12.106 N = − Osc × t = − × 3000.10−6 = −3000 12 Delay 12 V y: N = 3000 ho c N = F448H. Ta có: t = 3000 s Delay ( ) 1 12 12 T = = = =10−6()()s =1 s Timer f f 6 Timer Osc 12.10 Vì t ≤ 65536.T ( hay N n m trong kho ng t 65535 ñ n 1) nên ta ch n Timer ch Delay Timer ñ 1 ( ch ñ 16 bit ). Tương t như trên, ta có ( xét trư ng h p tL): t = 7000 s và f =12 MHz Delay ( ) Osc ( ) Giáo trình Vi x lý. 147 Biên so n: Ph m Quang Trí
- Chương 4: Ho t ñ ng c a b ñ nh th i (Timer). Trư ng ðH Công nghi p Tp.HCM. 10. Ví d 10: ( Giao ti p v i thi t b ngo i vi ) M t còi ñư c n i v i chân P1.7 và m t chuy n m ch (có ch ng d i) ñư c n i v i chân P1.6 c a chip 8051 (xem trong hình v ). Vi t chương trình ñi u khi n ñ c m c logic cung c p b i chuy n m ch (khi chuy n m ch thay ñ i t v trí trên xu ng v trí dư i thì m t xung m c th p ñư c t o ra t i chân P1.6) và h còi trong th i gian 1sec sau m i l n phát hi n s chuy n tr ng thái t 1 xu ng 0 t i chân P1.6. Vcc Vcc 8051 10K P1.6 P1.7 SW Vcc 10K P1.7=0 – Huï coøi. P1.7=1 – Im laëng. fOSC =12 MHz Gi i HUNDRED EQU 100 ;Khai báo bi n COUNT EQU 10000 ORG 0000H MAIN: JNB P1.6, $ ;Ch logic 1 ngõ vào P1.6. JB P1.6, $ ;Ch logic 0 ngõ vào P1.6 SETB P1.7 ;Còi h . ACALL DELAY ;Th i gian 1 giây. CLR P1.7 ;T t còi. SJMP MAIN DELAY: PUSH 00H MOV TMOD, #10H MOV R0, # HUNDRED AAA: MOV TH1, #HIGH(COUNT) MOV TL1, #LOW(COUNT) SETB TR1 JNB TF1, $ CLR TF1 CLR TR1 DJNZ R0, AAA POP 00H RET END Giáo trình Vi x lý. 149 Biên so n: Ph m Quang Trí
- Chương 4: Ho t ñ ng c a b ñ nh th i (Timer). Trư ng ðH Công nghi p Tp.HCM. 12. Ví d 12: ( ð m xung ) M t chuy n m ch (có ch ng d i) ñư c n i v i chân T0 (P3.4) c a chip 8051. Vi t chương trình ñi u khi n ñ m s lư ng xung ñư c t o ra b i chuy n m ch (khi chuy n m ch thay ñ i t v trí (1) sang v trí (2) thì m t xung m c th p ñư c t o ra t i chân T0). S xung ñ m ñư c s ch a trong RAM n i (d ng s HEX) t i các ô nh có ñ a ch b t ñ u t i 50H. Bi t r ng s lư ng xung t o ra ñư c kh ng ch n m trong kho ng 0 – 65535 xung. Gi i • Tính toán: Theo yêu c u c a ñ bài: o Vi t chương trình ñ m xung → C u hình cho Timer 0 là m t b ñ m xung ( Counter ). o S xung n m trong kho ng 0 – 65535 xung → Ch n ch ñ 16 bit ( ch ñ 1 ). • Chương trình: D a vào nh ng tính toán trên, ta có: MAIN: MOV TMOD, #05H ;Ch ñ Counter 16 bit ( ch ñ 1 ). MOV TH0, #00H ;Giá tr ban ñ u c a b ñ m ( cao ). MOV TL0, #00H ;Giá tr ban ñ u c a b ñ m ( th p ). SETB P3.4 ;C u hình P3.4 là ngõ vào. SETB TR0 ;Kh i ñ ng b ñ m. LOOP: ;ð c giá tr c a b ñ m ñang ho t ñ ng. MOV A, TH0 ;ð c s xung ñ m ñư c ( ph n cao ). MOV 50H, TL0 ;C t s xung ñ m ñư c ( ph n th p ). CJNE A, TH0, LOOP ;ð c s xung ñ m ñư c ( ph n cao ) ;l n n a ñ ki m tra. MOV 51H, A ;C t s xung ñ m ñư c ( ph n cao ). JNB TF0, LOOP ;Ti p t c quá trình ñ m xung n u ;b ñ m chưa b tràn. CLR TF0 ;Xoá c tràn. CLR TR0 ;D ng b ñ m. END ;K t thúc chương trình. Giáo trình Vi x lý. 151 Biên so n: Ph m Quang Trí
- Chương 4: Ho t ñ ng c a b ñ nh th i (Timer). Trư ng ðH Công nghi p Tp.HCM. Bài 8: Vi t ño n l nh t o chu i xung vuông có f = 10 KHz và có chu kỳ làm vi c D = 30% t i chân P1.3 ( fOSC =24 MHz ). Bài 9: Vi t ño n l nh t o chu i xung vuông có f = 10 Hz t i chân P1.4 ( fOSC =12 MHz ). Bài 10: Vi t ño n l nh t o chu i xung vuông có f = 10 Hz và có chu kỳ làm vi c D = 25% t i chân P1.5 ( fOSC =11,0592 MHz ). Bài 11: Vi t ño n l nh dùng Timer t o sóng vuông f=500Hz t i P1.4. ( fOSC =12MHz ). Bài 12: Vi t ño n l nh dùng Timer t o sóng vuông f=20KHz t i P1.5. ( fOSC =24MHz ). Bài 13: Vi t ño n l nh dùng Timer t o 2 sóng vuông có cùng f=1KHz t i P1.6 và P1.7. Bi t r ng sóng vuông t i P1.7 ch m pha hơn sóng vuông t i P1.6 là 100 s. ( fOSC =12MHz ). Bài 14: Vi t ño n l nh dùng Timer ñi u khi n ñèn giao thông t i m t giao l . Cho bi t r ng: ðèn Bit ñi u khi n Th i gian Xanh 1 P1.0 25s Vàng 1 P1.1 3s ð 1 P1.2 Xanh 2 P1.3 33s Vàng 2 P1.4 3s ð 2 P1.5 ðèn sáng khi bit ñi u khi n b ng 0 (fOSC =12MHz ). Giáo trình Vi x lý. 153 Biên so n: Ph m Quang Trí