Download as pdf or txt
Download as pdf or txt
You are on page 1of 7

PHẦN VIII-TIMER TRONG AT89C52

==//==
Bài 1- GIỚI THIỆU VỀ TIMER/COUNTER TRONG AT89C52

1. Giới thiệu
- Bộ Timer/Counter trong 8051 có thể được sử dụng trong rất nhiều ứng dụng như
Counter (đếm sự kiện cạnh lên hay cạnh xuống) trên chân T0(P3.4), T1(P3.5), T2(P1.0),
Capture (đếm sự kiện tính ra tần số của xung) trên chân T2EX (P1.1), sử dụng tạo hàm
delay với độ chính xác cao, sử dụng tạo tín hiệu PWM, sử dụng ngắt timer…
- Trong AT89C52 hoặc AT89S52 có 3 bộ TIMER/COUNTER: Timer/Counter 0 và
Timer/Counter1, Timer/Counter 2.
TIMER/COUNTER0
-Timer/Counter 16 bit
-Được điều khiển bởi 4 bit thấp
của thanh ghi TMOD và bit 4,5
của thanh ghi TCON.
TIMER/COUNTER2 - Có 3 chế độ hoạt động chính:
-Timer/Counter 16 bit + Định thời 13 bit
-Được điều khiển bởi 2 thanh + Định thời 16 bit
ghi: T2CON và T2MOD. + Auto Reload 8 bit
AT89C52
- Có 3 chế độ hoạt động chính:
AT89S52
+ Auto Reload 16 bit
+ Capture TIMER/COUNTER1
+ Baud Rate Generator -Timer/Counter 16 bit
-Được điều khiển bởi 4 bit cao
của thanh ghi TMOD và bit 6,7
của thanh ghi TCON.
- Có 3 chế độ hoạt động chính:
+ Định thời 13 bit
+ Định thời 16 bit
+ Auto Reload 8 bit

Các Timer/Counter trong AT89C52

www.hocdientu123.vn
Chân Counter của Timer0(T0) và Timer1(T1)

Chân Counter của Timer0(T0) và Timer1(T1)

2. Thanh ghi chứa giá trị đếm Timer/Counter

Thanh ghi TH0/TL0 của Timer/Counter0 và thanh ghi TH1/TL1 của


Timer/Counter1

www.hocdientu123.vn
Thanh ghi T2H/T2L của Timer/Counter2

Thanh ghi chứa giá trị tạo tần số xung hoặc tạo tốc độ Baud

3. Thanh ghi điều khiển và trạng thái TCON(dùng cho TIMER0 và TIMER1)

- TF1: Cờ báo tràn bộ T1/C1 (Timer1/Counter1)


- TR1: Bit điều khiển khởi động hoặc dừng bộ T1/C1.
- TF0: Cờ báo tràn bộ T1/C0.
- TR0: Bit điều khiển khởi động hoặc dừng bộ T1/C0.
- 4 bit thấp (IE1, IT1, IE0, IT0) phục vụ ngắt ngoài.

4. Thanh ghi cài đặt chế độ hoạt động TMOD (dùng cho TIMER0 và TIMER1)

- GATE:
+ GATE = 1: Bộ T/C được cho phép hoạt động khi chân INTx ở mức cao và bit
TRx trong thanh ghi TCON được set lên 1. (x: 0 hoặc 1).
+ GATE = 0: Bộ T/C được cho phép hoạt động khi bit TRx trong thanh ghi TCON
được set lên 1.
- CT:
+ CT = 1: Chức năng Counter được chọn.
+ CT = 0: Chức năng Timer được chọn.
- M1, M0: 2 bit chọn các chế độ hoạt động của T/C.

M1 M0 Mode Mô tả
0 0 0 Chế độ định thời 13 bit, 8 bit THx, 5 bit
TLx
0 1 1 Chế độ định thời 16 bit.
1 0 2 Chế độ 8 bit tự nạp lại.
1 1 3 Chế độ bộ định thời

www.hocdientu123.vn
5. Thanh ghi T2CON(dùng cho TIMER2)

Các chế độ :

Bit Ký hiệu Mô tả
T2CON.7 TF2 Cờ tràn của bộ định thời 2. (TF2=1 Timer2 tràn)
Cờ ngoài của bộ định thời 2. EXF2=1 khi có sự kiện
T2CON.6 EXF2
chuyển trạng thái 1 -> 0 ở chân T2EX .
=1 sử dụng bộ định thời 2 thiết lặp tốc độ Baud (khi nhận
dũ liệu)
T2CON.5 RCLK
=0 sử dụng bộ định thời 2 thiết lặp tốc độ Baud (khi nhận
dữ liệu)
=1 sử dụng bộ định thời 2 thiết lặp tốc độ Baud (khi phát
dữ liệu)
T2CON.4 TCLK
=0 sử dụng bộ định thời 2 thiết lặp tốc độ Baud (khi phát
dữ liệu)
= 1 Cho phép xung từ bên ngoài, khi có sự chuyển trạng
thái 1 —> 0 ở chân T2EX.
T2CON.3 EXEN2
=0 không cho phép xung ngoài vào
=1 cho phép Timer2 hoạt động
T2CON.2 TR2
=0 cấm Timer2 hoạt động
T2CON.1 C/T2 1 = đếm sự kiện xung từ ngoài vào(chế độ Counter ở chân

www.hocdientu123.vn
T2);

0 = định thời một khoảng thời gian (chế độ Timer)


Bit capture/Reload của Timer 2
Nếu RCLK=1 hoặc TCLK=1, CP/RL2 bị bỏ qua và Timer sẽ chạy ở
chế độ tự nạp lại mỗi khi tràn
T2CON.0 CP/RL2 CP/RL2=0 để tự nạp lại khi Timer 2 tràn hoặc khi có sườn xuống ở
chân T2EX nếu EXEN2=1.
CP/RL2=1 để bắt giữ (capture) khi có cạnh xuống ở chân T2EX nếu
EXEN2=1

6. Thanh ghi T2MOD (dùng cho TIMER2)

Quan tâm đến 2 bit:

T2OE =0 chân T2 là ngõ vào xung clock hoặc IO


=1 chân T2 là chân ngõ ra clock
DCEN =0 cấm Timer2 đếm
=1 cho phép Timer2 đếm

7. Các bước thiết lặp Timer/Counter

Các bước cấu hình cho bộ T/C0 hoạt động cở chế độ timer (định thời) như sau.
- B1: Ghi vào thanh ghi TMOD để chọn chế độ timer, chọn mode: Ví dụ ở đây mình
chọn chế độ timer (C/T = 0) và mode 16 bit (M1=0, M0=1), mình sẽ ghi giá trị 0x01 vào
TMOD (TMOD = 0x01).
- B2: Ghi vào thanh ghi TL, TH các giá trị để tạo ra giá trị định thời mong muốn.
- B3: Set bit TR để cho phép bộ T/C hoạt động.
- B4: Kiểm tra cờ TF để biết bộ T/C đã tràn hay chưa.
- B5: Khởi tạo lại giá trị cho các thanh ghi TH,TL để chuẩn bị cho lần chạy tiếp theo.

8. Tính giá trị nạp cho thanh ghi TH và TL

1 chu kỳ của 8051 bằng 12 lần chu kỳ thạch.

- Nếu tần số thạch anh 12 MHz =>chu kỳ thạch anh Tosc=1/12= 0.0833 (us)

=> Chu kỳ máy: T=Tosc*12=0.0833 *12=1 us.

- Nếu tần số thạch anh 11.0592 MHz =>chu kỳ thạch anh Toc=1/11.0592= 0.0904 (us)

www.hocdientu123.vn
=> Chu kỳ máy: T=Tosc*12=0.0904 *12=1.085us.

Muốn tạo thời gian Tc=100us, dùng thạch anh 11.0592Mhz:

Ta có số lần đếm:

Count =(Toc×10^(-6)) / (T×10^(-6) ) (s)=(100*10^-6)/(1.085*106^-6)≈ 92

=> Giá trị cần nạp cho thanh ghi TH/TL: Value=(2^n-Count)+1

+ Nếu n=16 (16 bit) Value=(65535-Count)+1 =65444= (FFA4)Hex

=> TH0 = 0xFF & TL0 = 0xA4

+ Nếu n=13 (13 bit) Value=(8191-Count)+1 =7271= (1FA4)Hex

=> TH0 = 0x1F & TL0 = 0xA4

+ Nếu n=8 (8 bit) Value=(255-Count)+1 =7271= (A4)Hex

=> TH0 = 0xA4 , TL0 = 0xA4

9. Các vector ngắt TIMER:

www.hocdientu123.vn
10. Các thanh ghi liên quan đến ngắt TIMER:
10.1. Thanh ghi điều khiển ngắt IE:

- Bit EX0: cho phép ngắt ngoài INT0 (=1 cho phép ngắt INT0,=0 cấm ngắt INT0)
- Bit ET0: cho phép ngắt TIMER0 (=1 cho phép ngắt TIMER0,=0 cấm ngắt
TIMER0)
- Bit EX1: cho phép ngắt ngoài INT1 (=1 cho phép ngắt INT1,=0 cấm ngắt INT1)
- Bit ET1: cho phép ngắt TIMER1 (=1 cho phép ngắt TIMER1,=0 cấm ngắt
TIMER1)
- Bit ES: cho phép ngắt truyền thông nối tiếp.
- Bit ET2: cho phép ngắt TIMER2 (=1 cho phép ngắt TIMER2,=0 cấm ngắt
TIMER2)
- Bit EA: cho phép ngắt toàn cục.
10.2. Thanh ghi IP: thanh ghi chọn mức ưu tiên ngắt

- Bit: PX0: Ưu tiên ngắt INT0.


- Bit: PT0: Ưu tiên ngắt TIMER0
- Bit: PX1: Ưu tiên ngắt INT1.
- Bit: PT1: Ưu tiên ngắt TIMER1
- Bit: PS: Ưu tiên ngắt truyền thông nối tiếp
- Bit: PT1: Ưu tiên ngắt TIMER2

www.hocdientu123.vn

You might also like