You are on page 1of 8

ðẠI HỌC CÔNG NHIỆP HÀ NỘI Nguyên tắ

tắc hoạ
hoạt ñộ
ñộng
Khoa Cn Kü thuËt ®iÖn tö

Chương 3 : Hoạt ñộng ñịnh thời

hµ néi 09.2009

Hanoi University of Industry 1 Faculty of Electronics Engineering Hanoi University of Industry 3 Faculty of Electronics Engineering

3.1 Hoạ
Hoạt ñộ
ñộng ñị
ñịnh thờ
thời

3.1.1 Giới thiệu

- Timer 0
- Timer 1
Bài 2:
- Timer 2
CHẾ ðỘ 8 BIT CỦA TIMER0, TIMER1

Hanoi University of Industry 2 Faculty of Electronics Engineering Hanoi University of Industry 4 Faculty of Electronics Engineering
CHẾ
CHẾ ðỘ
ðỘ 8 BIT CỦ
CỦA TIMER0, TIMER1 CHẾ
CHẾ ðỘ
ðỘ 8 BIT CỦ
CỦA TIMER0, TIMER1

1. Hoạt ñộng 1. Hoạt ñộng

1: Khối nguồn xung 1: Khối nguồn xung


1 2: Khối ñiều khiển
1 2: Khối ñiều khiển
3: Khối thanh ghi 3: Khối thanh ghi
ñếm ñếm
3 3
2 2
Có hai nguồn xung:
Giá trị ñếm của bộ Timer ñược chứa ở
- Từ bộ dao ñộng trên chíp, Fosc/12
thanh ghi THx(bytes cao) nạp lại TLx(bytes thấp)
- Từ nguồn ñưa vào qua chân Tx
Khi ñếm quá giá trị 255 cờ tràn TFx = 1
Hanoi University of Industry 5 Faculty of Electronics Engineering Hanoi University of Industry 7 Faculty of Electronics Engineering

CHẾ
CHẾ ðỘ
ðỘ 8 BIT CỦ
CỦA TIMER0, TIMER1 CHẾ ðỘ 16 BIT CỦA TIMER0, TIMER1
CHẾ ðỘ

1. Hoạt ñộng 2. Ví dụ:


-Ví dụ 1: Sử dụng Timer0 chế ñộ 8 bit tạo xung có chu
kỳ 500uS (2KHz) trên chân P3.0, Thạch anh 12MHz.
1: Khối nguồn xung
1 Bước 1: Phân tích bài toán
2: Khối ñiều khiển
3: Khối thanh ghi
ñếm TIMER 0 500 uS
3
2
- Khi TRx = 0: thì Timer dừng 1uS 250 uS 250 uS

- Khi TRx = 1: Timer hoạt ñộng khi:


bit GATE = 1 hoặc /INTx = 1
Hanoi University of Industry 6 Faculty of Electronics Engineering Hanoi University of Industry 8 Faculty of Electronics Engineering
CHẾ ðỘ 16 BIT CỦA TIMER0, TIMER1
CHẾ ðỘ Bước 3: Viết chương trình
Bước 2: Lập lưu ñồ thuật toán Bắt ñầu
Timer1 Timer0
Khởi tạo

GATE C/T M1 M0 GATE C/T M1 M0 TMOD


Nạp giá trị
Bật Timer 0 0 0 0 0 0 0 1 0x 01

M1 M0 Chế ñộ hoạt ñộng


Sai
Timer tràn? 0 0 Chế ñộ 13 bit
ðúng 0 1 Chế ñộ 16 bit
Dừng Timer 1 0 Chế ñộ 8 bit
Xóa cờ tràn 1 1 Chế ñộ chia tách
ðảo mức trên P3.0

Hanoi University of Industry 9 Faculty of Electronics Engineering Hanoi University of Industry 11 Faculty of Electronics Engineering

Bước 3: Viết chương trình Bước 3: Viết chương trình

- Khai báo thư viện, #include <regx52.h>


sbit xung = P3^0; #include <reg52.h>
biến void main (void) sbit xung = P3^0;
- TMOD = ? { void main (void)
{
TMOD =0x02;
- TH0=? TL0=? while (1)
- TR0=? {
TH0 =TL0= - 250;
- Chờ cờ Tràn TF0? TR0 = 1;
while( !TF0 );
- TF0=? TF0 = 0;
xung = ~ xung;
- P3_0 = ~P3_0 }
}
}
Hanoi University of Industry 10 Faculty of Electronics Engineering Hanoi University of Industry 12 Faculty of Electronics Engineering
CHẾ ðỘ 16 BIT CỦA TIMER0, TIMER1
CHẾ ðỘ
1. Hoạt ñộng
Nguồn xung cấp cho Timer
OSC ÷12 0
Cờ Tràn
THx TLx TFx
1 Thanh ghi ñếm
Tx
của Timer
C/Tx
Bài 3: INTx

CHẾ ðỘ 16 BIT CỦA TIMER0, TIMER1 GATEx AND

TRx
ðiều khiển hoạt ñộng Timer

- Khi TRx = 0: thì Timer dừng


- Khi TRx = 1: Timer hoạt ñộng khi:
bit GATE = 1 hoặc /INTx = 1
Hanoi University of Industry 13 Faculty of Electronics Engineering Hanoi University of Industry 15 Faculty of Electronics Engineering

CHẾ
CHẾ ðỘ
ðỘ 16 BIT CỦ
CỦA TIMER0, TIMER1 CHẾ ðỘ 16 BIT CỦA TIMER0, TIMER1
CHẾ ðỘ

1. Hoạt ñộng 1. Hoạt ñộng


Nguồn xung cấp cho Timer Nguồn xung cấp cho Timer
OSC ÷12 0
Cờ Tràn OSC ÷12 0
Cờ Tràn
THx TLx TFx THx TLx TFx
1 Thanh ghi ñếm 1 Thanh ghi ñếm
Tx Tx
của Timer của Timer
C/Tx C/Tx

INTx INTx

GATEx AND GATEx AND

TRx TRx
ðiều khiển hoạt ñộng Timer ðiều khiển hoạt ñộng Timer
Có hai nguồn xung: Giá trị ñếm của bộ Timer ñược chứa hai
- Từ bộ dao ñộng trên chíp, Fosc/12 thanh ghi THx(bytes cao) TLx(bytes thấp)
- Từ nguồn ñưa vào qua chân Tx Khi ñếm quá giá trị 65535 cờ tràn TFx = 1
Hanoi University of Industry 14 Faculty of Electronics Engineering Hanoi University of Industry 16 Faculty of Electronics Engineering
CHẾ ðỘ 16 BIT CỦA TIMER0, TIMER1
CHẾ ðỘ CHẾ ðỘ 16 BIT CỦA TIMER0, TIMER1
CHẾ ðỘ
Nguồn xung cấp cho Timer
Bước 2: Lập lưu ñồ thuật toán Bắt ñầu
OSC ÷12 0
Cờ Tràn
THx TLx TFx
1 Khởi tạo
Thanh ghi ñếm
Tx
của Timer
C/Tx

INTx Nạp giá trị


GATEx AND Bật Timer
TRx
ðiều khiển hoạt ñộng Timer
Sai
Timer tràn?
ðúng
Dừng Timer
Xóa cờ tràn
ðảo mức trên P3.0

Hanoi University of Industry 17 Faculty of Electronics Engineering Hanoi University of Industry 19 Faculty of Electronics Engineering

CHẾ ðỘ 16 BIT CỦA TIMER0, TIMER1


CHẾ ðỘ Bước 3: Viết chương trình
2. Ví dụ: - Khai báo thư viện, #include <reg52.h>
sbit xung = P3^0;
-Ví dụ 1: Sử dụng Timer0 chế ñộ 16 bit tạo xung có chu biến void main (void)
kỳ 50000uS (20Hz) trên chân P3.0, Thạch anh 12MHz. - TMOD = ? {

Bước 1: Phân tích bài toán

TIMER 0 50000 uS

1uS 25000 uS 25000 uS

}
Hanoi University of Industry 18 Faculty of Electronics Engineering Hanoi University of Industry 20 Faculty of Electronics Engineering
Bước 3: Viết chương trình CHẾ ðỘ 16 BIT CỦA TIMER0, TIMER1
CHẾ ðỘ

Timer1 Timer0
Bước 4: Mô phỏng trên phần mềm Proteus

GATE C/T M1 M0 GATE C/T M1 M0 TMOD


0 0 0 0 0 0 0 1 0x 01

M1 M0 Chế ñộ hoạt ñộng


0 0 Chế ñộ 13 bit
0 1 Chế ñộ 16 bit
1 0 Chế ñộ 8 bit
1 1 Chế ñộ chia tách

Hanoi University of Industry 21 Faculty of Electronics Engineering Hanoi University of Industry 23 Faculty of Electronics Engineering

Bước 3: Viết chương trình CHẾ ðỘ 16 BIT CỦA TIMER0, TIMER1


CHẾ ðỘ
#include <reg52.h> 2. Ví dụ:
sbit xung = P3^0;
void main (void) - Ví dụ 2: Sử dụng Timer0 chế ñộ 16bit tạo xung có chu
{ kỳ 200000uS (5Hz) trên chân P2.0, Thạch anh 12MHz.
TMOD =0x01;
- TH0=? TL0=? while (1) Bước 1: Phân tích bài toán
{
- TR0=? TH0 = ( 65536 - 25000) / 256; TIMER 0 200000 uS
TL0 = ( 65536 - 25000) %256;
- Chờ cờ Tràn TF0? TR0 = 1;
while( !TF0 );
- TR0=? TR0 = 0; 1uS 100000 uS 100000uS
- TF0=? TF0 = 0;
- P3_0 = ~P3_0 xung = ~ xung;
}
}
Hanoi University of Industry 22 Faculty of Electronics Engineering Hanoi University of Industry 24 Faculty of Electronics Engineering
CHẾ ðỘ 16 BIT CỦA TIMER0, TIMER1
CHẾ ðỘ

Bước 2: Lập lưu ñồ thuật toán


Bắt ñầu

Khởi tạo

Bài 4:
Tạo trễ
100000uS CHẾ ðỘ 16 BIT CỦA TIMER2
Bằng Timer0

ðảo mức trên P2.0

Hanoi University of Industry 25 Faculty of Electronics Engineering Hanoi University of Industry 27 Faculty of Electronics Engineering

TỔNG KẾ
KẾT BÀ
BÀI CHẾ
CHẾ ðỘ
ðỘ 16 BIT CỦ
CỦA TIMER0, TIMER1

1. Hoạt ñộng
ðặc ñiểm của chế ñộ 16 bit của Timer0, Timer1
- Nguồn xung cấp cho Timer
- ðiều khiển sự hoạt ñộng của Timer
- 16 bit, không tự khởi tạo lại

Có hai nguồn xung:


- Từ bộ dao ñộng trên chíp, Fosc/12
- Từ nguồn ñưa vào qua chân Tx

Hanoi University of Industry 26 Faculty of Electronics Engineering Hanoi University of Industry 28 Faculty of Electronics Engineering
CHẾ ðỘ 16 BIT CỦA TIMER0, TIMER1
CHẾ ðỘ CHẾ ðỘ 16 BIT CỦA TIMER0, TIMER1
CHẾ ðỘ
Nguồn xung cấp cho Timer
1. Hoạt ñộng OSC Cờ Tràn
÷12 0
Nguồn xung cấp cho Timer THx TLx TFx
OSC Cờ Tràn 1
÷12 0 Thanh ghi ñếm
THx TLx TFx Tx
của Timer
C/Tx
1 Thanh ghi ñếm
Tx
của Timer INTx
C/Tx

INTx GATEx AND

TRx
GATEx AND ðiều khiển hoạt ñộng Timer
TRx
ðiều khiển hoạt ñộng Timer

- Khi TRx = 0: thì Timer dừng


- Khi TRx = 1: Timer hoạt ñộng khi:
bit GATE = 1 hoặc /INTx = 1
Hanoi University of Industry 29 Faculty of Electronics Engineering Hanoi University of Industry 31 Faculty of Electronics Engineering

CHẾ ðỘ 16 BIT CỦA TIMER0, TIMER1


CHẾ ðỘ BÀI TẬ
TẬP VỀ
VỀ NHÀ
NHÀ
1. Hoạt ñộng
Nguồn xung cấp cho Timer
OSC ÷12 0
Cờ Tràn Bài 1: Thiết kế bộ ño tần số với dải ño 50Hz ñến
THx TLx TFx
1 Thanh ghi ñếm
10KHz.
Tx
của Timer
C/Tx Bài 2: Tạo tần số 50Hz trên chân P1.5 với tỷ lệ xung
INTx
30% sườn dương.
GATEx AND

TRx
ðiều khiển hoạt ñộng Timer

Giá trị ñếm của bộ Timer ñược chứa hai


thanh ghi THx(bytes cao) TLx(bytes thấp)
Khi ñếm quá giá trị 65535 cờ tràn TFx = 1
Hanoi University of Industry 30 Faculty of Electronics Engineering Hanoi University of Industry 32 Faculty of Electronics Engineering

You might also like