Mch khng chế nhit độ
3.5. Hot động ca b định thi (timer)
a. Gii thiu.
Mt định nghĩa đơn gin ca timer là mt chui các flip-flop chia đôi tn s ni
tiếp vi nhau, chúng nhn tín hiu vào làm ngun xung nhp. Ngõ ra ca tn s cui
làm ngun xung nhp cho flip-flop báo tràn ca timer (flip-flop c). Giá tr nh phân
trong các flip-flop ca timer có th xem như s đếm s xung nhp (hoc các s kin) t
khi khi động timer. Ví d timer 16 bit s đếm lên t 0000H đến FFFFH. Co tràn
s lên 1 khi s đếm tràn t FFFFH đến 0000H.
8051/8031 có 2 timer 16 bit, mi timer có bn cách làm vic. Người ta s dng các
timer để : a) định khong thi gian, b) đếm s kin hoc c) to tc độ baud cho port
ni tiếp trong 8051/8031.
Trong các ng dng định khong thi gian, người ta lp trình timer mt
khong đều đặn và đặt c tràn timer. C được dùng để đồng b hóa chương trình để
thc hin mt tác động như kim tra trng thái ca các ca ngõ vào hoc gi các s
kin ra các ngõ ra. Các ng dng khác th s dng vic to xung nhp đều đặn ca
timer để đo thi gian trôi qua gia hai s kin (ví d : đo độ rng xung).
Đếm s kin dùng để xác định s ln xy ra ca mt s kin. Mt “s kin”
bt c tác động ngoài nào có th cung cp mt chuyn trng thái trên mt chân ca
8051/8031. Các timer cũng có th cung cp xung nhp tc độ baud cho port ni tiếp
trong 8051/8031.Truy xut timer ca 8051/8031 dùng 6 thanh ghi chc năng đặc bit
cho trong bng sau:
SFR MC ĐÍCH ĐỊA CH Địa ch hóa tng bit
TCON
TMOD
TL0
TL1
TH0
TH1
Điu khin timer
Chế độ timer
Byte thp ca timer 0
Byte thp ca timer 1
Byte cao ca timer 0
Byte cao ca timer 1
88H
89H
8AH
8BH
8CH
8DH
Không
Không
Không
Không
Không
Bng 5: Thanh ghi chc năng đặc bit dùng timer.
b. Thanh ghi chế độ timer (TMOD)
Thanh ghi TMOD cha hai nhóm 4 bit dùng để đặt chế độ làm vic cho timer 0 và
timer 1.
Mch khng chế nhit độ
Bit Tên Timer Mô t
7 GATE 1 Bit (M) cng, khi lên 1 timer ch chy khi INT1
mc cao.
6 C/T 1 Bit chn chế độ counter/timer
1=b đếm s kin
0=b định khong thi gian
5 M1 1 Bit 1 ca chế độ (mode)
4 M0 1 Bit 0 ca chế độ
00: chế độ 0 : timer 13 bit
01: chế độ 1 : timer 16 bit
10: chế độ 2 : t động np li 8255A bit
11: chế độ 3 : tách timer
3 GATE 0 Bit (m) cng
2 C/T 0 Bit chn counter/timer
1 M1 0 Bit 1 ca chế độ
0 M0 0 Bit 0 ca chế độ
Bng 6: Tóm tt thanh ghi TMOD
c. Thanh ghi điu khin timer (TCON)
Thanh ghi TCON cha các bit trng thái và các bit điu khin cho timer 0 và timer 1.
Bit Ký hiu Địa ch Mô t
TCON.7 TF1 8FH C báo tràn timer 1. Đặt bi phn cng khi tràn,
được xóa bi phn mm hoc phn cng khi b x
lý ch đến chương trình phc v ngt.
TCON.6 TR1 8EH Bit điu khin timer 1 chy. Đặt/xóabng phn mm
cho timer chy/ngưng.
TCON.5 TF0 8DH C báo tràn timer 0
TCON.4 TR0 8CH Bit điu khin timer 0 chy
TCON.3 IE1 8BH C cnh ngt 1 bên ngoài, đặc bi
TCON.2 IT1 8AH C kiu ngt mt bên ngoài.phn cng khi phát hin
mt cnh xung INT1, xóa bng phn mm hoc
phn cng khi CPU ch đến chương trình phc v
ngt.Đặt/xóa bng phn mm đề ngt ngoài tích
cc cnh xung/mc thp
TCON.1 IE0 89H C cnh ngt 0 bên ngoài
TCON.0 IT0 88H C kiu ngt 0 bên ngoài
Bng 7: Tóm tt thanh ghi TCON
Mch khng chế nhit độ
d. Các chế độ timer.
Chế độ 0, chế độ timer 13 bit.
Để tương thích vi 8048 (có trứớc 8051)
Ba bit cao ca TLX (TL0 và/hoc TL1) không dùng
Xung nhp C báo tràn
timer
Chế độ 1- chế độ timer 16 bit.
Hot động như timer 16 bit đầy đủ.
C báo tràn là bit TFx trong TCON có th đọc hoc ghi bng phm mm.
MSB ca giá tr trong các thanh ghi timer là bit 7 ca THx và LBS là bit 0 ca
TLx. Các thanh ghi timer (Tlx/THx) có th được đọc hoc ghi bt c lúc nào bng
phm mm.
Xung nhp
Timer C báo tràn
Chế độ 0- chế độ t động np li 8 bit.
TLx hot động như mt timer 8 bit, trong khi đó THx vn gi nguyên giá tr
được np. Khi s đếm tràn t FFH đến 00H, không nhng c timer được set mà giá tr
trong THx đồng thi được np vào TLx. Vic đếm tiếp tc t giá tr này lên đến FFH
xung 00H và np li... chế độ này rt thông dng vì s tràn timer xy ra trong nhng
khong thi gian nht định và tun hoàn mt khi đã khi động TMOD và THx.
Xung nhp
timer
Np li
C báo tràn
Chế độ 3- chế độ tách timer
Timer 0 tách thành hai timer 8 bit (TL0 và TH0), TL0 có c báo tràn là TF0 và
TH0 có c báo tràn là TF1.
TLx THx
(5 bit) (8 bit)
TFx
TLx THx
(5 bit) (8 bit)
TFx
TLx
(
8 bit
)
TFx
THx
(
8 bit
)
Mch khng chế nhit độ
Timer 1 ngưng chế độ 3, nhưng có th được khi động bng cách chuyn
sang chế độ khác. Gii hn duy nht là c báo tràn TF1 không còn b tác động khi
timer 1 b tràn vì nó đã được ni ti TH0.
Khi timer 0 chế độ 3, có th cho timer 1 chy và ngưng bng cách chuyn nó ra
ngoài và vào chế độ 3. Nó vn có th được s dng bi port ni tiếp như b to tc độ
baund hoc nó có th được s dng bng bt c cách nào không cn ngt (vì nó không
còn được ni vi TF1).
Xung nhp
Timer
Xung nhp
Timer
I/12 Fosc C báo tràn
e.Ngun to xung nhp.
Có hai ngun to xung nhp có th có, được chn bng cách ghi vào bit C/T
(counter/timer) trong TMOD khi khi động timer. Mt ngun to xung nhp dùng cho
định khong thi gian, cái khác cho đếm s kin.
Crytal
Timer
Clock
T0 or T1
pin
0=Up (Internal Timing)
1=Down (Event Counting)
Ngun xung to nhp
- Định khong thi gian (interval timing)
Nếu C/T =0 hot động timer liên tc đưc chn và timer được dùng cho vic định
khong thi gian. Lúc đó, timer ly xung nhp t b dao động trên chip. B chia 12
được thêm vào để gim tn s xung nhp đến giá tr thích hp cho phn ln các ng
dng. Như vy thch anh 12 MHz s cho tc độ xung nhp timer 1 MHz. Báo tràn
timer xy ra sau mt s (c định) xung nhp, ph thuc vào giá tr ban đầu được np
vào các thanh ghi timer TLx/THx.
- Đếm s kin (Event counting)
- Nếu C/T=1, timer ly xung nhp t ngun bên ngoài. Trong hu hết các ng
dng ngun bên ngoài này cung cp cho timer mt xung khi xy ra mt “s kin “,
TL1 TH1
TL0 TF0
TH0 TF1
On chip
Osillator
÷12
T
C
/
Mch khng chế nhit độ
timer dùng đếm s kin được xác định bng phn mm bng cách đọc các thanh
ghi TLx/THx vì giá tr 16 bit trong các thanh ghi này tăng thêm 1 cho mi s kin.
Ngun xung nhp ngoài có t thay đổi chú7c năng ca các chân port 3. Bit 4 ca
port 3 (P3.4) dùng làm ngõ vào to xung nhp bên trong timer 0 và được gi là “T0”.
Và p3.5 hay “T1” là ngõ vào to xung nhp cho timer 1.
f.Bt đầu dng và điu khin các timer.
Phương pháp mi đơn gin nht để bt đầu (cho chy) và dng các timer là dùng
các bit điu khin chy :TRx trong TCON, TRx b xóa sau khi reset h thng. Như
vy, các timer theo mc nhiên là b cm (b dng). TRx được đặt lên 1 bng phn mm
để cho các timer chy.
Xung nhp
Timer
Các thanh ghi timer
0=lên : timer dng
1=xung : timer chy
cho chy và dng timer
Vì TRx trong thanh ghi TCONđịa ch bit, nên d dàng cho vic điu khin các
timer trong chương trình. Ví d : cho timer 0 chy bng lnh : SETB TR0 và dng
bng lnh SETB TR0
Trình biên dch s thc hin vic chuyn đổi ký hiu cn thiết tTR0” sang địa ch
bit đúng. SETB TR0 chính xác ging như SETB 8CH.
g.Khi động và truy xut các thanh ghi timer.
Thông thường các thanh ghi được khi động mt ln đầu chương trình để đặt
chế độ làm vic cho đúng. Sau đó trong thân chương trình các timer được cho chy,
dng , các bit c được kim tra và xóa, các thanh ghi timer được đọc và cp nht...
theo đòi hi ca các ng dng.
TMOD là thanh ghi th nht được khi động vì nó đặt chế độ hot động. Ví d
các lnh sau khi khi động timer 1 như timer 16 bit (chế độ 1) có xung nhp t b dao
động trên chíp cho vic địng khong thi gian.
MOV TMOD,#00010000B
Lnh này s đặt M1=0 v M0=1 cho chế độ 1, C/T=0GATE=0 cho xung
nhp ni và xóa các bit chế độ timer 0. Dĩ nhiên timer tht s không bt đầu định thi
cho đến khi bit điu khin chyy TR1 được đặt lên 1.
TRx