Thứ Sáu, 14 tháng 2, 2014

Tài liệu Chương 4: Hoạt động của bộ định thời Timer docx

Chương 4: Hoạt động của bộ định thời (Timer). Trường ðH Cơng nghiệp Tp.HCM.
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)


I. MỞ ðẦU:
Bộ đònh
thời
(TIMER)
Là chuỗi các FF (mỗi FF là 1 mạch chia 2).
Ngõ vào: nhận tín hiệu xung clock từ nguồn xung.
Ngõ ra: truyền tín hiệu xung clock cho FF báo tràn (cờ tràn).


• Tần số: tần số xung ngõ ra bằng tần số xung ngõ vào chia cho 2
N
.
• 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).
o Tần số:
65536
16
2
IN
f
IN
f
OUT
f ==

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
Chương 4: Hoạt động của bộ định thời (Timer). Trường ðH Cơng nghiệp Tp.HCM.
Giáo trình Vi xử lý. 120 Biên soạn: Phạm Quang Trí
thấy tầng thứ nhất (
Q
0
) chia 2 tần số xung clock, tầng thứ hai (
Q
1
) 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 Q
2
= 1, Q
1
= 0, Q
0
= 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 Q
2
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 ln ln ở 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
ngồ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.”.

Chương 4: Hoạt động của bộ định thời (Timer). Trường ðH Cơng nghiệp Tp.HCM.
Giáo trình Vi xử lý. 121 Biên soạn: Phạm Quang Trí
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:
TMOD: Timer Mode Register
01234567
Bit
Hình 4.2.1:
Thanh ghi chọn
chế độ đònh thời.
GATE: Bit điều khiển cổng.
GATE=0: Bộ đònh thời hoạt động khi bit TR0=1 (điều khiển
bằng phần mềm).
GATE=1: Bộ đònh thời hoạt động khi chân INT0\=1 (điều
khiển bằng phần cứng).
C/T: Bit chọn chức năng đếm hoặc đònh thời.
C/T=1: Bộ đònh thời là bộ đếm (Counter).
C/T=0: Bộ đònh thời là bộ đònh khoảng thời gian (Timer).
M1: Bit chọn chế độ hoạt động cho bộ đònh thời.
M0: Bit chọn chế độ hoạt động cho bộ đònh thời.
0
GATE: Bit điều khiển cổng.
GATE=0: Bộ đònh thời hoạt động khi bit TR1=1 (điều khiển
bằng phần mềm).
GATE=1: Bộ đònh thời hoạt động khi chân INT1\=1 (điều
khiển bằng phần cứng).
C/T: Bit chọn chức năng đếm hoặc đònh thời.
C/T=1: Bộ đònh thời là bộ đếm (Counter).
C/T=0: Bộ đònh thời là bộ đònh khoảng thời gian (Timer).
M1: Bit chọn chế độ hoạt động cho bộ đònh thời.
M0: Bit chọn chế độ hoạt động cho bộ đònh thời.
1

• Các chế độ hoạt động của bộ định thời:

Chương 4: Hoạt động của bộ định thời (Timer). Trường ðH Cơng nghiệp Tp.HCM.
Giáo trình Vi xử lý. 122 Biên soạn: Phạm Quang Trí

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
1
INT
).
Giải
Phân tích:
(1): Chế độ 16 bit.  M1 = 0, M0 = 1.
(2): Bộ định thời gian. 
T
C
/
= 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. 
T
C
/
= 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. 
T
C
/
= 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,
T
C
/
= 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. 
T
C
/
= 0.
(6): ðiều khiển bằng phần mềm.  GATE = 0.

Từ đó ta có: (TMOD) = 00100000B = 20H.
Chương 4: Hoạt động của bộ định thời (Timer). Trường ðH Cơng nghiệp Tp.HCM.
Giáo trình Vi xử lý. 123 Biên soạn: Phạm Quang Trí

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.
T
C
/
= 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.
T
C
/
= 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
1
INT
).

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.
T
C
/
= 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.
T
C
/
= 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
).
Chương 4: Hoạt động của bộ định thời (Timer). Trường ðH Cơng nghiệp Tp.HCM.
Giáo trình Vi xử lý. 124 Biên soạn: Phạm Quang Trí
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 ngồ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.”
.

Chương 4: Hoạt động của bộ định thời (Timer). Trường ðH Cơng nghiệp Tp.HCM.
Giáo trình Vi xử lý. 125 Biên soạn: Phạm Quang Trí
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.T
Timer
→ 2
13
.T
Timer

nghĩa là từ 1.T
Timer
→ 8192.T
Timer
.
• 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).
Chương 4: Hoạt động của bộ định thời (Timer). Trường ðH Cơng nghiệp Tp.HCM.
Giáo trình Vi xử lý. 126 Biên soạn: Phạm Quang Trí
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.T
Timer
→ 2
16
.T
Timer

nghĩa là từ 1.T
Timer
→ 65536.T
Timer
.
• 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).
Chương 4: Hoạt động của bộ định thời (Timer). Trường ðH Cơng nghiệp Tp.HCM.
Giáo trình Vi xử lý. 127 Biên soạn: Phạm Quang Trí
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.T
Timer
→ 2
8
.T
Timer
nghĩa là
từ 1.T
Timer
→ 256.T
Timer
.
• 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).
Chương 4: Hoạt động của bộ định thời (Timer). Trường ðH Cơng nghiệp Tp.HCM.
Giáo trình Vi xử lý. 128 Biên soạn: Phạm Quang Trí
4. Chế độ định thời chia xẻ (Chế độ 3):
TL1TH1
Timer
clock
TL0TF0
TH0TF1
Timer
clock
/12F
OSC
Overflow
flag
x = 0, 1: Bộ đònh thời 0, 1.
Timer clock: Xung clock cho bộ đònh thời.
Overflow flag: Cờ trà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.T
Timer

2
8
.T
Timer
nghĩa là từ 1.T
Timer
→ 256.T
Timer
.
 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.T
Timer

2
8
.T
Timer
nghĩa là từ 1.T
Timer
→ 256.T
Timer
.
 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.
Chương 4: Hoạt động của bộ định thời (Timer). Trường ðH Cơng nghiệp Tp.HCM.
Giáo trình Vi xử lý. 129 Biên soạn: Phạm Quang Trí

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 ngồ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
).
Chương 4: Hoạt động của bộ định thời (Timer). Trường ðH Cơng nghiệp Tp.HCM.
Giáo trình Vi xử lý. 130 Biên soạn: Phạm Quang Trí

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 f
TIMER
là tần số xung clock của bộ định thời, f
OSC
là tần số xung clock của thạch anh. Theo như
trên đã trình bày, ta có:
( )
(
)
( )
( )
( )
s
KHz
TIMER
f
TIMER
T
KHz
MHz
OSC
f
TIMER
fMHz
OSC
f
µ
085,1
6,921
11
6,921
12
0592,11
12
0592,11
===
===→=


( )
(
)
( )
( )
( )
s
MHz
TIMER
f
TIMER
T
MHz
MHz
OSC
f
TIMER
fMHz
OSC
f
µ
1
1
11
1
12
12
12
12
===
===→=


( )
(
)
( )
( )
( )
s
MHz
TIMER
f
TIMER
T
MHz
MHz
OSC
f
TIMER
fMHz
OSC
f
µ
75,0
333,1
11
333,1
12
16
12
16
===
===→=


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 ngồ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:
2
)(1,0
TIMER
f
MAXTT
f =

f
TIMER
: tần số xung clock định thời.
f
T0,T1(MAX)
: tần số kích thích tối đa cho phép tại T0 và T1.
Chương 4: Hoạt động của bộ định thời (Timer). Trường ðH Cơng nghiệp Tp.HCM.
Giáo trình Vi xử lý. 131 Biên soạn: Phạm Quang Trí


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

( )
(
)
( )
KHz
KHz
TIMER
f
MAXTT
fMHz
OSC
f 8,460
2
6,921
2
)(1,0
0592,11 ===→=

( )
(
)
( )
KHz
MHz
TIMER
f
MAXTT
fMHz
OSC
f 500
2
1
2
)(1,0
12 ===→=

( )
(
)
( )
KHz
MHz
TIMER
f
MAXTT
fMHz
OSC
f 5,666
2
333,1
2
)(1,0
16 ===→=

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 ngồ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 f
OSC
= 12MHz.
t ( s)
INT0\

Chương 4: Hoạt động của bộ định thời (Timer). Trường ðH Cơng nghiệp Tp.HCM.
Giáo trình Vi xử lý. 132 Biên soạn: Phạm Quang Trí
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):
On-chip
Osc.
÷ 12
TL1 TH1 TF1
C/T
TR1
GATE
0 = Up
1 = Down
0 = Up
1 = Down
8051
INT1
(P3.3)
T1
(P3.5)
12
MHz
Hoạt động ở chế độ 1 củ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

Không có nhận xét nào:

Đăng nhận xét