Xem mẫu

  1. Chương 4: Ho t ñ ng c a b ñ nh th i (Timer). Trư ng ðH Công nghi p Tp.HCM. CHƯƠNG 4 HO T ð NG C A B ð NH TH I (TIMER) I. M ð U: Boä ñònh Laø chuoãi caùc FF (moãi FF laø 1 maïch chia 2). thôøi Ngoõ vaøo: nhaän tín hieäu xung clock töø nguoàn xung. (TIMER) Ngoõ ra: truyeàn tín hieäu xung clock cho FF baùo traøn (côø traøn). • T n s : t n s xung ngõ ra b ng t n s xung ngõ vào chia cho 2N. • Giá tr : giá tr nh phân trong các FF c a b ñ nh th i là s ñ m c a các xung clock t i ngõ vào t khi b ñ nh th i b t ñ u ñ m. • Tràn: x y ra hi n tư ng tràn (c tràn = 1) khi s ñ m chuy n t giá tr l n nh t xu ng giá tr nh nh t c a b ñ nh th i. Ví d : B ñ nh th i 16 bit (ch a 16 FF bên trong). f f o T ns : f = IN = IN OUT 216 65536 o Giá tr : s ñ m n m trong kho ng 0 (0000H) → 65535 (FFFFH). o Tràn: c tràn b ng 1 khi s ñ m t FFFFH chuy n xu ng 0000H. Hình minh h a ñơn gi n ho t ñ ng c a b ñ nh th i 3 bit: Ho t ñ ng c a m t b ñ nh th i 3 bit ñơn gi n ñư c minh h a trong hình trên. M i m t t ng là D FF kích kh i c nh âm ho t ñ ng như m t m ch chia 2 do ta n i ngõ ra Q v i ngõ vào D. Flipflop c (Flag FF) là m t m ch ch t D ñư c set b ng 1 b i t ng cu i c a b ñ nh th i. Gi n ñ th i gian cho Giáo trình Vi x lý. 119 Biên so n: Ph m Quang Trí
  2. Chương 4: Ho t ñ ng c a b ñ nh th i (Timer). Trư ng ðH Công nghi p Tp.HCM. th y t ng th nh t (Q0) chia 2 t n s xung clock, t ng th hai (Q1) chia 4 t n s xung clock, … S ñ m ñư c ghi d ng th p phân và ñư c ki m tra d dàng b ng cách kh o sát tr ng thái c a 3 flipflop. Ví d , s ñ m là 4 xu t hi n khi Q2 = 1, Q1 = 0, Q0 = 0. Các flipflop trên là các flipflop tác ñ ng c nh âm (nghĩa là tr ng thái c a các flipflop s thay ñ i theo c nh âm c a xung clock). Khi s ñ m tràn t 111 xu ng 000, ngõ ra Q2 có c nh âm làm cho tr ng thái c a flipflop c ñ i t 0 lên 1 (ngõ vào D c a flipflop này luôn luôn logic 1). • 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.”. Giáo trình Vi x lý. 120 Biên so n: Ph m Quang Trí
  3. Chương 4: Ho t ñ ng c a b ñ nh th i (Timer). Trư ng ðH Công nghi p Tp.HCM. II. THANH GHI CH ð ð NH TH I (TMOD): • Thanh ghi TMOD (Timer Mode Register) ch a các bit dùng ñ thi t l p ch ñ ho t ñ ng cho b ñ nh th i 0 và b ñ nh th i 1. • Thanh ghi TMOD ñư c n p giá tr m t l n t i th i ñi m b t ñ u c a chương trình ñ qui ñ nh ch ñ ho t ñ ng c a các b ñ nh th i. • C u trúc thanh ghi TMOD: Bit 7 6 5 4 3 2 1 0 TMOD: Timer Mode Register 0 M0: Bit choïn cheá ñoä hoaït ñoäng cho boä ñònh thôøi. M1: Bit choïn cheá ñoä hoaït ñoäng cho boä ñònh thôøi. C/T: Bit choïn chöùc naêng ñeám hoaëc ñònh thôøi. C/T=1: Boä ñònh thôøi laø boä ñeám (Counter). C/T=0: Boä ñònh thôøi laø boä ñònh khoaûng thôøi gian (Timer). GATE: Bit ñieàu khieån coång. GATE=0: Boä ñònh thôøi hoaït ñoäng khi bit TR0=1 (ñieàu khieån baèng phaàn meàm). GATE=1: Boä ñònh thôøi hoaït ñoäng khi chaân INT0\=1 (ñieàu khieån baèng phaàn cöùng). 1 M0: Bit choïn cheá ñoä hoaït ñoäng cho boä ñònh thôøi. M1: Bit choïn cheá ñoä hoaït ñoäng cho boä ñònh thôøi. C/T: Bit choïn chöùc naêng ñeám hoaëc ñònh thôøi. C/T=1: Boä ñònh thôøi laø boä ñeám (Counter). C/T=0: Boä ñònh thôøi laø boä ñònh khoaûng thôøi gian (Timer). GATE: Bit ñieàu khieån coång. GATE=0: Boä ñònh thôøi hoaït ñoäng khi bit TR1=1 (ñieàu khieån Hình 4.2.1: baèng phaàn meàm). Thanh ghi choïn GATE=1: Boä ñònh thôøi hoaït ñoäng khi chaân INT1\=1 (ñieàu cheá ñoä ñònh thôøi. khieån baèng phaàn cöùng). • Các ch ñ ho t ñ ng c a b ñ nh th i: Giáo trình Vi x lý. 121 Biên so n: Ph m Quang Trí
  4. Chương 4: Ho t ñ ng c a b ñ nh th i (Timer). Trư ng ðH Công nghi p Tp.HCM. • Ví d 1: Cho bi t giá tr c n n p cho thanh ghi TMOD ñ o Timer 0: là b ñ nh th i gian 16 bit, ñư c ñi u khi n b ng ph n m m (bit TR0). o Timer 1: là b ñ m xung 13 bit, ñư c ñi u khi n b ng ph n c ng (chân INT 1 ). Gi i Phân tích: (1): Ch ñ 16 bit. M1 = 0, M0 = 1. (2): B ñ nh th i gian. C / T = 0. (3): ði u khi n b ng ph n m m. GATE = 0. (4): Ch ñ 13 bit. M1 = 0, M0 = 0. (5): B ñ m xung. C / T = 1. (6): ði u khi n b ng ph n c ng. GATE = 1. T ñó ta có: (TMOD) = 11000001B = C1H. • Ví d 2: Cho bi t giá tr c n n p cho thanh ghi TMOD ñ o Timer 0: không s d ng. o Timer 1: là b ñ nh th i gian 8 bit t n p l i, ñư c ñi u khi n b ng ph n m m (bit TR1). Gi i Phân tích: (1): Không s d ng. M1 = 0, M0 = 0. (2): Không s d ng. C / T = 0. (3): Không s d ng. GATE = 0. Do Timer 0 không s d ng, nên ta có thi t l p nó b t c ch ñ nào. Thông thư ng ñ d dàng ta nên cho: GATE=0, C / T = 0, M1 = 0 và M0 = 0. (4): Ch ñ 8 bit t ñ ng n p l i. M1 = 1, M0 = 0. (5): B ñ nh th i gian. C / T = 0. (6): ði u khi n b ng ph n m m. GATE = 0. T ñó ta có: (TMOD) = 00100000B = 20H. Giáo trình Vi x lý. 122 Biên so n: Ph m Quang Trí
  5. Chương 4: Ho t ñ ng c a b ñ nh th i (Timer). Trư ng ðH Công nghi p Tp.HCM. • Ví d 3: Cho bi t (TMOD) = A5H. Hãy cho bi t ch ñ ho t ñ ng c a các Timer 0 và Timer 1. Gi i Ta có: (TMOD) = A5H = 10100101B. Gi i thích: M1 = 1, M0 = 0. (4): Ch ñ 8 bit t ñ ng n p l i. C / T = 0. (5): B ñ nh th i gian. GATE = 1. (6): ði u khi n b ng ph n c ng. M1 = 0, M0 = 1. (1): Ch ñ 16 bit. C / T = 1. (2): B ñ m xung. GATE = 0. (3): ði u khi n b ng ph n m m. T ñó ta có: o Timer 0: là b ñ m xung 16 bit, ñư c ñi u khi n b ng ph n m m (bit TR0). o Timer 1: là b ñ nh th i gian 8 bit t n p l i, ñư c ñi u khi n b ng ph n c ng (chân INT 1 ). • Ví d 4: Cho bi t (TMOD) = 21H. Hãy cho bi t ch ñ ho t ñ ng c a các Timer 0 và Timer 1. Gi i Ta có: (TMOD) = 21H = 00100001B. Gi i thích: M1 = 1, M0 = 0. (4): Ch ñ 8 bit t ñ ng n p l i. C / T = 0. (5): B ñ nh th i gian. GATE = 0. (6): ði u khi n b ng ph n m m. M1 = 0, M0 = 1. (1): Ch ñ 16 bit. C / T = 0. (2): B ñ nh th i gian. GATE = 0. (3): ði u khi n b ng ph n m m. T ñó ta có: o Timer 0: là b ñ nh th i gian 16 bit, ñư c ñi u khi n b ng ph n m m (bit TR0). o Timer 1: là b ñ nh th i gian 8 bit t n p l i, ñư c ñi u khi n b ng ph n m m (bit TR1). Giáo trình Vi x lý. 123 Biên so n: Ph m Quang Trí
  6. Chương 4: Ho t ñ ng c a b ñ nh th i (Timer). Trư ng ðH Công nghi p Tp.HCM. III. THANH GHI ðI U KHI N ð NH TH I (TCON): • Thanh ghi TCON (Timer Control Register) ch a các bit dùng ñ ñi u khi n và báo tr ng thái c a b ñ nh th i 0 và b ñ nh th i 1. • C u trúc thanh ghi TCON: • Lưu ý: Các bit IT0, IT1, IE0, IE1 không dùng ñ ñi u khi n các b ñ nh th i. Các bit này ñư c dùng ñ phát hi n và kh i ñ ng các ng t ngoài. Vi c th o lu n các bit này s ñư c trình bày trong “Chương 6: Ho t ñ ng ng t.”. Giáo trình Vi x lý. 124 Biên so n: Ph m Quang Trí
  7. Chương 4: Ho t ñ ng c a b ñ nh th i (Timer). Trư ng ðH Công nghi p Tp.HCM. IV. CÁC CH ð ð NH TH I VÀ C TRÀN: 1. Ch ñ ñ nh th i 13 bit (Ch ñ 0): Ch ñ 0 (Mode 0): • Ch ñ ñ nh th i 13 bit. • S d ng 8 bit c a thanh ghi THx và 5 bit th p c a thanh ghi TLx ñ t o ra b ñ nh th i. • S ñ m: 0000H → 1FFFH nghĩa là t 0 → 8191. Th i gian ñ nh th i: t 1.TTimer → 213.TTimer nghĩa là t 1.TTimer → 8192.TTimer. • Thanh ghi THx và TLx ch a giá tr c a b ñ nh th i. • Khi có xung clock, b ñ nh th i b t ñ u ñ m lên t giá tr ch a trong THx/TLx. • X y ra tràn (c tràn TFx=1) khi s ñ m chuy n t 1FFFH sang 0000H và vi c ñ m s ti p t c ñ m lên t giá tr 0000H. Ki n trúc c a Timer 0 ch ñ 0 (Mode 0). Giáo trình Vi x lý. 125 Biên so n: Ph m Quang Trí
  8. Chương 4: Ho t ñ ng c a b ñ nh th i (Timer). Trư ng ðH Công nghi p Tp.HCM. 2. Ch ñ ñ nh th i 16 bit (Ch ñ 1): Ch ñ 1 (Mode 1): • Ch ñ ñ nh th i 16 bit. • S d ng thanh ghi THx và TLx ñ t o ra b ñ nh th i. • S ñ m: 0000H → FFFFH nghĩa là t 0 → 65535. Th i gian ñ nh th i: t 1.TTimer → 216.TTimer nghĩa là t 1.TTimer → 65536.TTimer. • Thanh ghi THx và TLx ch a giá tr c a b ñ nh th i. • Khi có xung clock, b ñ nh th i b t ñ u ñ m lên t giá tr ch a trong THx/TLx. • X y ra tràn (c tràn TFx=1) khi s ñ m chuy n t FFFFH sang 0000H và vi c ñ m s ti p t c ñ m lên t giá tr 0000H. Ki n trúc c a Timer 0 ch ñ 1 (Mode 1). Giáo trình Vi x lý. 126 Biên so n: Ph m Quang Trí
  9. Chương 4: Ho t ñ ng c a b ñ nh th i (Timer). Trư ng ðH Công nghi p Tp.HCM. 3. Ch ñ ñ nh th i 8 bit t n p l i (Ch ñ 2): Ch ñ 2 (Mode 2): • Ch ñ ñ nh th i 8 bit t n p l i. • S d ng thanh ghi TLx ñ t o ra b ñ nh th i. • S ñ m: 00H → FFH nghĩa là t 0 → 255. Th i gian ñ nh th i: t 1.TTimer → 28.TTimer nghĩa là t 1.TTimer → 256.TTimer. • Thanh ghi TLx ch a giá tr c a b ñ nh th i và thanh ghi THx ch a giá tr s ñư c dùng ñ n p l i cho b ñ nh th i. • Khi có xung clock, b ñ nh th i b t ñ u ñ m lên t giá tr ch a trong TLx (THx không thay ñ i giá tr ). • X y ra tràn (c tràn TFx=1) khi s ñ m chuy n t FFH sang 00H, ñ ng th i giá tr trong THx s ñư c n p vào TLx và vi c ñ m s ti p t c ñ m lên t giá tr ch a trong thanh ghi TLx (giá tr này b ng v i giá tr c a THx). Ki n trúc c a Timer 0 ch ñ 2 (Mode 2). Giáo trình Vi x lý. 127 Biên so n: Ph m Quang Trí
  10. Chương 4: Ho t ñ ng c a b ñ nh th i (Timer). Trư ng ðH Công nghi p Tp.HCM. 4. Ch ñ ñ nh th i chia x (Ch ñ 3): Timer TH1 TL1 clock Timer TF0 TL0 clock TF1 TH0 /12FOSC Overflow x = 0, 1: Boä ñònh thôøi 0, 1. flag Timer clock: Xung clock cho boä ñònh thôøi. Overflow flag: Côø traøn. Ch ñ 3 (Mode 3) là: • Ch ñ ñ nh th i chia x . • B ñ nh th i 0 ñư c chia ra: o B ñ nh th i 8 bit th I: S d ng thanh ghi TL0 ñ t o ra b ñ nh th i. S ñ m: 00H → FFH nghĩa là t 0 → 255. Th i gian ñ nh th i: t 1.TTimer → 28.TTimer nghĩa là t 1.TTimer → 256.TTimer. Thanh ghi TL0 ch a giá tr c a b ñ nh th i. Khi có xung clock, b ñ nh th i b t ñ u ñ m lên t giá tr ch a trong TL0. X y ra tràn (c tràn TF0=1) khi s ñ m chuy n t FFH sang 00H và vi c ñ m s ti p t c ñ m lên t giá tr 00H. o B ñ nh th i 8 bit th II: S d ng thanh ghi TH0 ñ t o ra b ñ nh th i. S ñ m: 00H → FFH nghĩa là t 0 → 255. Th i gian ñ nh th i: t 1.TTimer → 28.TTimer nghĩa là t 1.TTimer → 256.TTimer. Thanh ghi TH0 ch a giá tr c a b ñ nh th i. Khi có xung clock, b ñ nh th i b t ñ u ñ m lên t giá tr ch a trong TH0. X y ra tràn (c tràn TF1=1) khi s ñ m chuy n t FFH sang 00H và vi c ñ m s ti p t c ñ m lên t giá tr 00H. • B ñ nh th i 1: o Là b ñ nh th i 16 bit. o Không ho t ñ ng ch ñ 3 nhưng có th ho t ñ ng các ch ñ khác (ch ñ 0, 1, 2). o Không có c báo tràn như các b ñ nh th i khác. Giáo trình Vi x lý. 128 Biên so n: Ph m Quang Trí
  11. 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í
  12. 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ìm t n s xung clock và chu kỳ c a b ñ nh th i ñ 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 G i fTIMER là t n s xung clock c a b ñ nh th i, fOSC là t n s xung clock c a th ch anh. Theo như trên ñã trình bày, ta có: f 11,0592(MHz ) f = 11,0592(MHz ) → f = OSC = = 921,6(KHz ) OSC TIMER 12 12 1 1 T = = = 1,085(µs ) TIMER f 921,6(KHz ) TIMER f 12(MHz ) f = 12(MHz ) → f = OSC = = 1(MHz ) OSC TIMER 12 12 1 1 T = = = 1(µs ) TIMER f 1(MHz ) TIMER f 16(MHz ) f = 16(MHz ) → f = OSC = = 1,333(MHz ) OSC TIMER 12 12 1 1 T = = = 0,75(µs ) TIMER f 1,333(MHz ) TIMER 2. Trư ng h p ñ m s ki n: N u C/T=1 thì: • B ñ nh th i ñư c dùng ñ ñ m s ki n (Counter). • Ngu n xung clock ñ nh th i ñư c l y t xung kích thích bên ngoài t i hai chân T0 và T1 c a chip 8051. Lưu ý: o T n s kích thích t i ña cho phép t i chân T0 và T1: f f = TIMER T 0,T 1( MAX ) 2 fTIMER: t n s xung clock ñ nh th i. fT0,T1(MAX): t n s kích thích t i ña cho phép t i T0 và T1. Giáo trình Vi x lý. 130 Biên so n: Ph m Quang Trí
  13. 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í
  14. Chương 4: Ho t ñ ng c a b ñ nh th i (Timer). Trư ng ðH Công nghi p Tp.HCM. Gi i Ta kh i ñ ng b ñ nh th i 0 như sau: • Ch ñ ñ nh th i 16 bit (ch ñ 1). • Giá tr trong TH0/TL0 là 0000H. • GATE = 1 và TR0 = 1 (ñi u khi n ho t ñ ng c a Timer 0 b ng ph n c ng, t c ñi u khi n b ng tín hi u t i chân INT0\). ⇒ ð r ng xung (tính b ng µs) = S ñ m ch a trong TH0/TL0. Hình minh h a Timer 1 ho t ñ ng ch ñ 1 (Timer 16 bit): 12 MHz On-chip 8051 ÷ 12 Osc. TL1 TH1 TF1 T1 0 = Up 0 = Up (P3.5) C/T 1 = Down 1 = Down TR1 GATE INT1 (P3.3) Hoaït ñoäng ôû cheá ñoä 1 cuûa Timer 1 VII. KH I ð NG VÀ TRUY XU T THANH GHI ð NH TH I: Trư c khi các b ñ nh th i ho t ñ ng c n ph i: • Qui ñ nh ch ñ c a b ñ nh th i ⇒ thanh ghi TMOD. • Qui ñ nh ñi m b t ñ u ñ m c a b ñ nh th i (kho ng th i gian ñ nh th i) ⇒ thanh ghi THx/TLx. o Ví d 1: Kh i ñ ng b ñ nh th i 1 ho t ñ ng ch ñ 16 bit, xung clock ñư c l y t m ch dao ñ ng trên chip (nghĩa là b ñ nh ñư c dùng ñ ñ nh th i m t kho ng th i gian), ñư c kh i ñ ng b ng bit TR1 (ñi u khi n b ng ph n m m). Gi i Ta dùng l nh: MOV TMOD, #10H ho c MOV TMOD, #00010000B Giáo trình Vi x lý. 132 Biên so n: Ph m Quang Trí
  15. 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í
  16. Chương 4: Ho t ñ ng c a b ñ nh th i (Timer). Trư ng ðH Công nghi p Tp.HCM. T ng quát, ta có công th c tính giá tr c n n p cho b ñ nh th i ñ có th i gian ñ nh th i như mong mu n là: f N = − OSC t 12 DELAY Trong ñó: N: giá tr c n n p cho b ñ nh th i. fOSC (MHz): t n s th ch anh. tDELAY ( s): th i gian c n ñ nh th i. 2. Truy xu t giá tr c a b ñ nh th i ñang ho t ñ ng: Trong các ng d ng th c t , ta c n ph i ñ c giá tr (n i dung) ch a trong các thanh ghi ñ nh th i THx/TLx trong khi b ñ nh th i v n ñang ho t ñ ng. Do giá tr c a b ñ nh th i ñư c ch a trong c hai thanh ghi THx/TLx. Cho nên ta ph i ñ c hai thanh ghi này b ng hai dòng l nh liên ti p nhau (do không có l nh nào có th ñ c ñ ng th i c hai thanh ghi ñ nh th i này). M t s sai pha (phase error) có th xu t hi n n u có s tràn t byte th p chuy n sang byte cao gi a hai l n ñ c và do v y ta không th ñ c ñúng ñư c giá tr c n ñ c. • Ví d : Minh h a v s sai pha (phase error) có th xu t hi n n u có s tràn t byte th p chuy n sang byte cao gi a hai l n ñ c giá tr làm cho ta không th ñ c ñúng ñư c giá tr c n ñ c c a THx/TLx trong khi b ñ nh th i ñang ho t ñ ng. Gi i Gi i pháp ñưa ra là trư c tiên ta ph i ñ c byte cao, k ñ n ñ c byte th p và r i ñ c byte th p l n n a. N u byte cao thay ñ i giá tr , ta l p l i thao tác ñ c v a nêu. Lưu ñ gi i thu t dùng ñ ñ c chính xác giá tr (n i dung) ch a trong các thanh ghi ñ nh th i THx/TLx c a b ñ nh th i ñang ho t ñ ng: Giáo trình Vi x lý. 134 Biên so n: Ph m Quang Trí
  17. 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 TTIMER = TTIMER(µs): chu kỳ xung clock ñ nh th i. f 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í
  18. Chương 4: Ho t ñ ng c a b ñ nh th i (Timer). Trư ng ðH Công nghi p Tp.HCM. IX. CÁC BƯ C CƠ B N KH I ð NG TIMER VÀ COUNTER: 1. Các bư c cơ b n ñ kh i ñ ng Timer: • Ch n ch ñ ho t ñ ng cho Timer, cho bit GATE=0 và C/T=0: MOV TMOD, #...(1)… • Ch n giá tr thích h p (kho ng th i gian ñ nh th i) cho Timer: MOV THx, #...(2)… MOV TLx, #...(3)… • Cho Timer ch y: SETB TRx • Ki m tra c báo tràn (ki m tra ñ th i gian ñ nh th i): JNB TFx, $ ho c WAIT: JNB TFx, WAIT • Xóa c báo tràn (chu n b cho l n ñ nh th i ti p theo): CLR TFx • D ng Timer (sau khi ñã hoàn t t quá trình ñ nh th i): CLR TRx Lưu ý: x: S th t c a Timer s d ng. (1): Giá tr này ph thu c vào Timer ñư c ch n và ch ñ ho t ñ ng c a Timer ñó. (2), (3): Giá tr này ph thu c vào kho ng th i gian c n ñ nh th i. Cũng c n lưu ý thêm, vi c ch n giá tr cho không ph i lúc nào ta cũng ph i ch n giá tr cho c hai thanh ghi này mà nó tùy thu c vào t ng ch ho t ñ ng c a Timer (Mode 0: THx/TLx, Mode 1: THx/TLx, Mode 2: THx, Mode 3: THx ho c TLx). Các giá tr trên ph i tho mãn ñi u ki n sau: o Ch ñ 8 bit: giá tr trong kho ng t -255 ñ n -1 (tương ng t 255.TTIMER ñ n 1.TTIMER). Ví d : MOV TH1, #(-255) → ñ nh th i 255.TTIMER o Ch ñ 13 bit: giá tr trong kho ng t -8191 ñ n -1 (tương ng t 8191.TTIMER ñ n 1.TTIMER). Ví d : MOV TL1, #LOW(-8000) → ñ nh th i 8000.TTIMER MOV TH1, #HIGH(-8000) o Ch ñ 16 bit: giá tr trong kho ng t -65535 ñ n -1 (tương ng t 65535.TTIMER ñ n 1.TTIMER). Ví d : MOV TL1, #LOW(-10000) → ñ nh th i 10000.TTIMER MOV TH1, #HIGH(-10000) Trư ng h p ñ c bi t n u giá tr (N) n p vào thanh ghi THx/TLx là giá tr 0 thì th i gian ñ nh th i s là l n nh t cho t ng ch ñ . Ch ñ 8 bit: N = 0 → tDELAY = 256.TTIMER. Ch ñ 13 bit: N = 0 → tDELAY = 8192.TTIMER. Ch ñ 16 bit: N = 0 → tDELAY = 65536.TTIMER. Giáo trình Vi x lý. 136 Biên so n: Ph m Quang Trí
  19. 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í
  20. Chương 4: Ho t ñ ng c a b ñ nh th i (Timer). Trư ng ðH Công nghi p Tp.HCM. • Chu kỳ xung: 4 µs → T n s xung: 250 KHz. • Th i gian m c cao: 1 µs. • Th i gian m c th p: 3 µs. • Chu kỳ nhi m v : 25%. 2. Ví d 2: (T o th i gian tr ) Vi t chương trình con t o th i gian tr tDelay, s d ng phương pháp dùng các l nh (không dùng Timer). Bi t r ng t n s th ch anh là 12 MHz. a. Th i gian tr tDelay = 100 µs. b. Th i gian tr tDelay = 10 ms. c. Th i gian tr tDelay = 1 s. Gi i • Phương pháp: Phương pháp th c hi n là s d ng l nh vòng l p DJNZ ñ t o th i gia tr tDelay như mong mu n. Ví d m u: DELAY: ;tDelay = 10 x 20 x 30 x 2.TTimer MOV R0, #10 BBB: MOV R1, #20 AAA: MOV R2, #30 DJNZ R2, $ ;l nh 2.TTimer DJNZ R1, AAA DJNZ R0, BBB RET T ng quát, ta có công th c tính th i gian tr tDelay như sau: 12 t = [Rn ]× [Rm]× ... × [Rv ]× 2. (1) Delay f Osc Trong ñó: tDelay (µs): th i gian tr . fOsc (MHz): t n s th ch anh.  12  TTimer (µs): chu kỳ Timer  T = .  Timer f   Osc  [Rn], [Rm], …, [Rv]: giá tr c a các vòng l p (s l n l p l i l nh DJNZ). Lưu ý: Giá tr c a các vòng l p ph i th a ñi u ki n 0 ≤ [Rn] ≤ 255. ð c bi t n u ch n [Rn] = 0 thì ñi u này s tương ñương v i trư ng h p ta ch n [Rn] = 256 (tương t cho các [Rm], …, [Rv] khác). • Tính toán: Tìm giá tr c n n p cho các thanh ghi vòng l p: 12 Ta có: t = [Rn ]× [Rm ]× ... × [Rv ]× 2. Delay f Osc V i tDelay = 100 µs, fOsc = 12 MHz thì ta ch n: [Rn] = 50 12 ⇔t = 50 × 2. = 100 µs Delay 12 Giáo trình Vi x lý. 138 Biên so n: Ph m Quang Trí