Xem mẫu
- 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í
- 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í
- 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í
- 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í
- 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í
- 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í
- 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í
- 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í
- 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í
- 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í
- 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ì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í
- 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
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í
- 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.
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í
- 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í
- 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í
- 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.
• 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í
nguon tai.lieu . vn