Tải bản đầy đủ (.pdf) (39 trang)

Bài giảng lý thuyết vi xử lý -Chương 4: Hoạt động của bộ định thời potx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (462.03 KB, 39 trang )

ÐẠI HỌC CÔNG NGHIỆP TP. HỒ CHÍ MINHÐẠI HỌC CÔNG NGHIỆP TP. HỒ CHÍ MINH
KHOA CÔNG NGHỆ ðIỆN TỬKHOA CÔNG NGHỆ ðIỆN TỬ
BỘ MÔN ðIỆN TỬ CÔNG NGHIỆPBỘ MÔN ðIỆN TỬ CÔNG NGHIỆP
BÀI GIẢNG LÝ THUYẾTBÀI GIẢNG LÝ THUYẾT
VI XỬ LÝVI XỬ LÝ
TP. HỒ CHÍ MINHTP. HỒ CHÍ MINH
THÁNG 09THÁNG 09 20092009
VI XỬ LÝVI XỬ LÝ
GiáoGiáo viên: PHẠM QUANG TRÍviên: PHẠM QUANG TRÍ
ÐẠI HỌC CÔNG NGHIỆP TP. HỒ CHÍ MINHÐẠI HỌC CÔNG NGHIỆP TP. HỒ CHÍ MINH
KHOA CÔNG NGHỆ ðIỆN TỬKHOA CÔNG NGHỆ ðIỆN TỬ
BỘ MÔN ðIỆN TỬ CÔNG NGHIỆPBỘ MÔN ðIỆN TỬ CÔNG NGHIỆP
CHƯƠNG 4CHƯƠNG 4
HOẠT ðỘNG CỦA BỘ HOẠT ðỘNG CỦA BỘ
ðỊNH THỜIðỊNH THỜI
 CácCác ứngứng dụngdụng củacủa bộbộ ñịnhñịnh thờithời::
•• ỨngỨng dụngdụng ñịnhñịnh thờithời giangian ((TIMERTIMER))
•• ỨngỨng dụngdụng ñếmñếm sựsự kiệnkiện ((COUNTERCOUNTER))
•• ỨngỨng dụngdụng tạotạo tốctốc ñộñộ baudbaud chocho portport nốinối tiếptiếp (tốc(tốc ñộñộ truyềntruyền dữdữ liệuliệu kiểukiểu
nốinối
tiếp)tiếp)

HOẠT ðỘNG CỦA BỘ ðỊNH THỜIHOẠT ðỘNG CỦA BỘ ðỊNH THỜI
GIỚI THIỆU CHUNGGIỚI THIỆU CHUNG
nốinối
tiếp)tiếp)

 CấuCấu trúctrúc ñơnñơn giảngiản củacủa bộbộ ñịnhñịnh thờithời::
HOẠT ðỘNG CỦA BỘ ðỊNH THỜIHOẠT ðỘNG CỦA BỘ ðỊNH THỜI
GIỚI THIỆU CHUNGGIỚI THIỆU CHUNG
 CácCác SFRSFR sửsử dụngdụng trongtrong bộbộ ñịnhñịnh thờithời::


•• TMODTMOD:: QuiQui ñịnhñịnh chếchế ñộñộ hoạthoạt ñộngñộng chocho bộbộ ñịnhñịnh thờithời (Timer(Timer Mode)Mode)
•• TCONTCON:: ðiềuðiều khiểnkhiển hoạthoạt ñộngñộng chocho bộbộ ñịnhñịnh thờithời (Timer(Timer Control)Control)
••
THxTHx
vàvà
TLxTLx
(với(với
xx
==
00
,,
11
))
::
ChứaChứa
giágiá
trịtrị
thờithời
giangian
ñịnhñịnh
thờithời
hoặchoặc
sốsố
xungxung
HOẠT ðỘNG CỦA BỘ ðỊNH THỜIHOẠT ðỘNG CỦA BỘ ðỊNH THỜI
GIỚI THIỆU CHUNGGIỚI THIỆU CHUNG
••
THxTHx
vàvà
TLxTLx

(với(với
xx
==
00
,,
11
))
::
ChứaChứa
giágiá
trịtrị
thờithời
giangian
ñịnhñịnh
thờithời
hoặchoặc
sốsố
xungxung
ñếmñếm ñượcñược củacủa từngtừng bộbộ ñịnhñịnh thờithời
 CấuCấu trúctrúc TMODTMOD::
HOẠT ðỘNG CỦA BỘ ðỊNH THỜIHOẠT ðỘNG CỦA BỘ ðỊNH THỜI
THANH GHI TMOD (TIMER MODE)THANH GHI TMOD (TIMER MODE)
 VíVí dụdụ minhminh họahọa::
•• ChoCho biếtbiết giágiá trịtrị cầncần nạpnạp chocho thanhthanh ghighi TMODTMOD ñểñể::
•• Timer 0: Bộ ñịnh thời gian 16 bit, ñược ñiều khiển bằng phần mềm (Timer 0: Bộ ñịnh thời gian 16 bit, ñược ñiều khiển bằng phần mềm (bit TR0bit TR0).).
•• Timer 1: Bộ ñếm xung 13 bit, ñược ñiều khiển bằng phần cứng (Timer 1: Bộ ñếm xung 13 bit, ñược ñiều khiển bằng phần cứng (chân INT0chân INT0).).
 Phân tích:Phân tích:
•• (1): Chế ñộ 16 bit.(1): Chế ñộ 16 bit.  M1 = 0, M0 = 1.M1 = 0, M0 = 1.
•• (2): Bộ ñịnh thời gian.(2): Bộ ñịnh thời gian.  C/T C/T = 0.= 0.
••

(3): ðiều khiển bằng phần mềm.(3): ðiều khiển bằng phần mềm.

GATE = 0.GATE = 0.
HOẠT ðỘNG CỦA BỘ ðỊNH THỜIHOẠT ðỘNG CỦA BỘ ðỊNH THỜI
THANH GHI TMOD (TIMER MODE)THANH GHI TMOD (TIMER MODE)
T0T0
••
(3): ðiều khiển bằng phần mềm.(3): ðiều khiển bằng phần mềm.

GATE = 0.GATE = 0.
•• (4): Chế ñộ 13 bit.(4): Chế ñộ 13 bit.  M1 = 0, M0 = 0.M1 = 0, M0 = 0.
•• (5): Bộ ñếm xung.(5): Bộ ñếm xung.  C/T C/T = 1.= 1.
•• (6): ðiều khiển bằng phần cứng.(6): ðiều khiển bằng phần cứng.  GATE = 1.GATE = 1.
T0T0
T1T1
(TMOD) = C1H(TMOD) = C1H
 VíVí dụdụ minhminh họahọa::
•• ChoCho biếtbiết giágiá trịtrị cầncần nạpnạp chocho thanhthanh ghighi TMODTMOD ñểñể::
•• Timer 0: Không sử dụng.Timer 0: Không sử dụng.
•• Timer 1: Bộ ñịnh thời gian 8 bit tự nạp lại, ñược ñiều khiển bằng phần mềm Timer 1: Bộ ñịnh thời gian 8 bit tự nạp lại, ñược ñiều khiển bằng phần mềm
((bit TR1bit TR1).).
 Phân tích:Phân tích:
•• Timer 0 không sử dụng, nên ta có thiết lập nó ở bất cứ chế ñộ nào. Thông 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.thường ñể dễ dàng ta nên cho: GATE=0, C/T = 0, M1 = 0 và M0 = 0.
HOẠT ðỘNG CỦA BỘ ðỊNH THỜIHOẠT ðỘNG CỦA BỘ ðỊNH THỜI
THANH GHI TMOD (TIMER MODE)THANH GHI TMOD (TIMER MODE)
T0T0
thường ñể dễ dàng ta nên cho: GATE=0, C/T = 0, M1 = 0 và M0 = 0.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.(4): Chế ñộ 8 bit tự ñộng nạp lại.  M1 = 1, M0 = 0.M1 = 1, M0 = 0.
•• (5): Bộ ñịnh thời gian.(5): Bộ ñịnh thời gian.  C/T C/T = 0.= 0.

•• (6): ðiều khiển bằng phần mềm.(6): ðiều khiển bằng phần mềm.  GATE = 0.GATE = 0.
T0T0
T1T1
(TMOD) = 20H(TMOD) = 20H
 CấuCấu trúctrúc TCONTCON::
HOẠT ðỘNG CỦA BỘ ðỊNH THỜIHOẠT ðỘNG CỦA BỘ ðỊNH THỜI
THANH GHI TCON (TIMER CONTROL)THANH GHI TCON (TIMER CONTROL)
 ChếChế ñộñộ 00 (Mode(Mode 00 –– 1313 bitbit Timer)Timer)::
HOẠT ðỘNG CỦA BỘ ðỊNH THỜIHOẠT ðỘNG CỦA BỘ ðỊNH THỜI
CÁC CHẾ ðỘ ðỊNH THỜICÁC CHẾ ðỘ ðỊNH THỜI
Hình minh họa Timer 0 ở chế ñộ Timer 13 bit.
 ChếChế ñộñộ 11 (Mode(Mode 11 –– 1616 bitbit Timer)Timer)::
HOẠT ðỘNG CỦA BỘ ðỊNH THỜIHOẠT ðỘNG CỦA BỘ ðỊNH THỜI
CÁC CHẾ ðỘ ðỊNH THỜICÁC CHẾ ðỘ ðỊNH THỜI
Hình minh họa Timer 0 ở chế ñộ Timer 16 bit.
 ChếChế ñộñộ 22 (Mode(Mode 22 –– AutoAuto ReloadReload Timer)Timer)::
HOẠT ðỘNG CỦA BỘ ðỊNH THỜIHOẠT ðỘNG CỦA BỘ ðỊNH THỜI
CÁC CHẾ ðỘ ðỊNH THỜICÁC CHẾ ðỘ ðỊNH THỜI
Hình minh họa Timer 0 ở chế ñộ Timer tự ñộng nạp lại.
 ChếChế ñộñộ 33 (Mode(Mode 33 –– SplitSplit Timer)Timer)::
HOẠT ðỘNG CỦA BỘ ðỊNH THỜIHOẠT ðỘNG CỦA BỘ ðỊNH THỜI
CÁC CHẾ ðỘ ðỊNH THỜICÁC CHẾ ðỘ ðỊNH THỜI
Hình minh họa Timer 0 ở chế ñộ Timer chia sẻ.
 CácCác khoảngkhoảng thờithời giangian ñịnhñịnh thờithời::
•• KhoảngKhoảng thờithời giangian ñịnhñịnh thờithời ngắnngắn nhấtnhất:: 11 TT
TIMERTIMER
•• KhoảngKhoảng thờithời giangian ñịnhñịnh thờithời dàidài nhấtnhất::
•• ≤≤ 1010 TT
TIMERTIMER
⇒⇒ DùngDùng cáccác lệnhlệnh

•• ≤≤ 256256 TT
TIMERTIMER
⇒⇒ DùngDùng bộbộ ñịnhñịnh thờithời 88 bitbit tựtự ñộngñộng nạpnạp lạilại
•• ≤≤ 6553665536 TT
TIMERTIMER
⇒⇒ DùngDùng bộbộ ñịnhñịnh thờithời 1616 bitbit
••
>>
6553665536

TT
TIMERTIMER
⇒⇒
DùngDùng
bộbộ
ñịnhñịnh
thờithời
1616
bitbit
++
cáccác
vòngvòng
lặplặp

HOẠT ðỘNG CỦA BỘ ðỊNH THỜIHOẠT ðỘNG CỦA BỘ ðỊNH THỜI
CÁC CHẾ ðỘ ðỊNH THỜICÁC CHẾ ðỘ ðỊNH THỜI
••
>>
6553665536


TT
TIMERTIMER
⇒⇒
DùngDùng
bộbộ
ñịnhñịnh
thờithời
1616
bitbit
++
cáccác
vòngvòng
lặplặp

TT
TIMERTIMER
((µµs): chu kỳ xung clock ñịnh thời.s): chu kỳ xung clock ñịnh thời.
ff
OSCOSC
(MHz): tần số thạch anh.(MHz): tần số thạch anh.
 CácCác bướcbước cơcơ bảnbản ñểñể khởikhởi ñộngñộng TimerTimer::
 Chọn chế ñộ hoạt ñộng cho Timer, cho bit Chọn chế ñộ hoạt ñộng cho Timer, cho bit GATE = 0GATE = 0 và và C/T = 0C/T = 0::
MOV TMOD, #MOV TMOD, # (1)… (1)…
 Chọn khoảng thời gian ñịnh thời cho Timer:Chọn khoảng thời gian ñịnh thời cho Timer:
MOV THMOV THxx, #, # (2)… (2)…
MOV TLMOV TLxx, #, # (3)… (3)…

Cho Timer chạy:Cho Timer chạy:
HOẠT ðỘNG CỦA BỘ ðỊNH THỜIHOẠT ðỘNG CỦA BỘ ðỊNH THỜI
ỨNG DỤNG LẬP TRÌNH ðỊNH THỜI GIANỨNG DỤNG LẬP TRÌNH ðỊNH THỜI GIAN

Cho Timer chạy:Cho Timer chạy:
SETB TRSETB TRxx
 Kiểm tra cờ báo tràn:Kiểm tra cờ báo tràn:
JNB TFJNB TFxx, $, $
 Dừng Timer:Dừng Timer:
CLR TRCLR TRxx
 Xóa cờ báo tràn:Xóa cờ báo tràn:
CLR TFCLR TFxx
 CácCác bướcbước cơcơ bảnbản ñểñể khởikhởi ñộngñộng TimerTimer::
•• xx:: SốSố thứthứ tựtự củacủa TimerTimer sửsử dụngdụng
 VíVí dd::
ChọnChọn sửsử dụngdụng TimerTimer 00  xx == 00
ChọnChọn sửsử dụngdụng TimerTimer 11  xx == 11
HOẠT ðỘNG CỦA BỘ ðỊNH THỜIHOẠT ðỘNG CỦA BỘ ðỊNH THỜI
ỨNG DỤNG LẬP TRÌNH ðỊNH THỜI GIANỨNG DỤNG LẬP TRÌNH ðỊNH THỜI GIAN
 CácCác bướcbước cơcơ bảnbản ñểñể khởikhởi ñộngñộng TimerTimer::
•• ((11)):: GiáGiá trịtrị nàynày phụphụ thuộcthuộc vàovào TimerTimer ñượcñược chọnchọn vàvà chếchế ñộñộ hoạthoạt ñộngñộng củacủa
TimerTimer ñóñó
 VíVí dd::
ChọnChọn TimerTimer 00 // ModeMode 11 cc ……((11))…… == 0101HH
ChọnChọn TimerTimer 11 // ModeMode 22  ……((11))…… == 2020HH
ChọnChọn TimerTimer 11 // ModeMode 11 vàvà TimerTimer 00 // ModeMode 22  ……((11))…… == 1212HH
HOẠT ðỘNG CỦA BỘ ðỊNH THỜIHOẠT ðỘNG CỦA BỘ ðỊNH THỜI
ỨNG DỤNG LẬP TRÌNH ðỊNH THỜI GIANỨNG DỤNG LẬP TRÌNH ðỊNH THỜI GIAN
 CácCác bướcbước cơcơ bảnbản ñểñể khởikhởi ñộngñộng TimerTimer::
•• ((22),), ((33)):: GiáGiá trịtrị nàynày (N)(N) phụphụ thuộcthuộc vàovào khoảngkhoảng thờithời giangian cầncần ñịnhñịnh thờithời
•• GiáGiá trịtrị trêntrên phảiphải thoảthoả mãnmãn ñiềuñiều kiệnkiện sausau::
••
ChCh
ññ

88
bitbit
::
NN
==

255255

→→
→→
→→


11

HOẠT ðỘNG CỦA BỘ ðỊNH THỜIHOẠT ðỘNG CỦA BỘ ðỊNH THỜI
ỨNG DỤNG LẬP TRÌNH ðỊNH THỜI GIANỨNG DỤNG LẬP TRÌNH ðỊNH THỜI GIAN
t
DELAY
(us): Thời gian ñịnh thời.
f
OSC
(MHz): Tần số thạch anh.
N: Giá trị nạp cho THx / TLx.
••
ChCh
ññ
88
bitbit
::

NN
==

255255

→→
→→
→→


11

 VíVí dụdụ::
MOV TH1, #(MOV TH1, #( 255)255) →→ ñịnh thời 255.ñịnh thời 255.TT
TIMERTIMER
•• ChCh ññ 1313 bitbit:: NN == 81918191 →
→→
→→
→→
→ 11
 VíVí dụdụ::
MOVMOV TLTL11,, ##LOWLOW(( 80008000)) →→ ñịnhñịnh thờithời 80008000 TT
TIMERTIMER
MOVMOV THTH11,, ##HIGHHIGH(( 80008000))
•• ChCh ññ 1616 bitbit:: NN == 6553565535 →
→→
→→
→→
→ 11
 VíVí dụdụ::

MOVMOV TLTL11,, ##LOWLOW(( 1000010000)) →→ ñịnhñịnh thờithời 1000010000 TT
TIMERTIMER
MOVMOV THTH11,, ##HIGHHIGH(( 1000010000))
 CácCác bướcbước cơcơ bảnbản ñểñể khởikhởi ñộngñộng CounterCounter::
 Chọn chế ñộ hoạt ñộng cho Counter, cho bit Chọn chế ñộ hoạt ñộng cho Counter, cho bit GATE = 0GATE = 0 và và C/T = 1C/T = 1::
MOV TMOD, #MOV TMOD, # (1)… (1)…
 Xoá các giá trị chứa trong thanh ghi THx và TLx :Xoá các giá trị chứa trong thanh ghi THx và TLx :
MOV THMOV THxx, #00H, #00H
MOV TLMOV TLxx, #00H, #00H

Cho Counter chạy:Cho Counter chạy:
HOẠT ðỘNG CỦA BỘ ðỊNH THỜIHOẠT ðỘNG CỦA BỘ ðỊNH THỜI
ỨNG DỤNG LẬP TRÌNH ðẾM XUNGỨNG DỤNG LẬP TRÌNH ðẾM XUNG
Cho Counter chạy:Cho Counter chạy:
SETB TRSETB TRxx
 Kiểm tra cờ báo tràn ñể xử lý trường hợp số ñếm bị tràn.Kiểm tra cờ báo tràn ñể xử lý trường hợp số ñếm bị tràn.
 ðọc số xung ñếm ñược trong thanh ghi ðọc số xung ñếm ñược trong thanh ghi THxTHx và và TLxTLx
 Dừng Timer:Dừng Timer:
CLR TRCLR TRxx
 Xóa cờ báo tràn:Xóa cờ báo tràn:
CLR TFCLR TFxx
 LậpLập trìnhtrình ñịnhñịnh thờithời dùngdùng vòngvòng lặplặp (không(không dùngdùng Timer)Timer)::
•• DùngDùng 11 vòngvòng lặplặp DJNZDJNZ::
HOẠT ðỘNG CỦA BỘ ðỊNH THỜIHOẠT ðỘNG CỦA BỘ ðỊNH THỜI
VÍ DỤ LẬP TRÌNH ðỊNH THỜI GIANVÍ DỤ LẬP TRÌNH ðỊNH THỜI GIAN
 ðoạn lệnh:
MOV R0, # [n]…
DJNZ R0, $
 LậpLập trìnhtrình ñịnhñịnh thờithời dùngdùng vòngvòng lặplặp (không(không dùngdùng Timer)Timer)::
•• DùngDùng 11 vòngvòng lặplặp DJNZDJNZ::

HOẠT ðỘNG CỦA BỘ ðỊNH THỜIHOẠT ðỘNG CỦA BỘ ðỊNH THỜI
VÍ DỤ LẬP TRÌNH ðỊNH THỜI GIANVÍ DỤ LẬP TRÌNH ðỊNH THỜI GIAN
 ðoạn lệnh:
MOV R0, # [n]…
DJNZ R0, $
 Thời gian ñịnh thời:
[n]: Số lần lặp.
t
DELAY
(us)
: Thời gian ñịnh thời.
t
DELAY
(us)
: Thời gian ñịnh thời.
f
OSC
(MHz): Tần số thạch anh.
 Công thức chính xác:
Giá trị của vòng lặp [n] phải nằm trong khoảng từ 0 - 255
 LậpLập trìnhtrình ñịnhñịnh thờithời dùngdùng vòngvòng lặplặp (không(không dùngdùng Timer)Timer)::
•• DùngDùng 22 vòngvòng lặplặp DJNZDJNZ::
HOẠT ðỘNG CỦA BỘ ðỊNH THỜIHOẠT ðỘNG CỦA BỘ ðỊNH THỜI
VÍ DỤ LẬP TRÌNH ðỊNH THỜI GIANVÍ DỤ LẬP TRÌNH ðỊNH THỜI GIAN
 ðoạn lệnh:
MOV R1, # [n1]…
LOOP1:
MOV R0, # [n2]…
DJNZ R0, $
DJNZ

R1, LOOP1
DJNZ
R1, LOOP1
 LậpLập trìnhtrình ñịnhñịnh thờithời dùngdùng vòngvòng lặplặp (không(không dùngdùng Timer)Timer)::
•• DùngDùng 22 vòngvòng lặplặp DJNZDJNZ::
HOẠT ðỘNG CỦA BỘ ðỊNH THỜIHOẠT ðỘNG CỦA BỘ ðỊNH THỜI
VÍ DỤ LẬP TRÌNH ðỊNH THỜI GIANVÍ DỤ LẬP TRÌNH ðỊNH THỜI GIAN
 ðoạn lệnh:
MOV R0, # [n1]…
LOOP1:
MOV R1, # [n2]…
DJNZ R1, $
DJNZ
R0, LOOP1
 Thời gian ñịnh thời:
[n1], [n2]: Số lần lặp.
t
DELAY
(us)
: Thời gian ñịnh thời.
DJNZ
R0, LOOP1
t
DELAY
(us)
: Thời gian ñịnh thời.
f
OSC
(MHz): Tần số thạch anh.
 Công thức chính xác:

Giá trị của vòng lặp [n] phải nằm trong khoảng từ 0 - 255
 LậpLập trìnhtrình ñịnhñịnh thờithời dùngdùng vòngvòng lặplặp (không(không dùngdùng Timer)Timer)::
•• DùngDùng 33 vòngvòng lặplặp DJNZDJNZ::
HOẠT ðỘNG CỦA BỘ ðỊNH THỜIHOẠT ðỘNG CỦA BỘ ðỊNH THỜI
VÍ DỤ LẬP TRÌNH ðỊNH THỜI GIANVÍ DỤ LẬP TRÌNH ðỊNH THỜI GIAN
 ðoạn lệnh:
MOV R2, # [n1]…
LOOP2:
MOV R1, # [n2]…
LOOP1:
MOV
R0, # [n3]…
MOV
R0, # [n3]…
DJNZ R0, $
DJNZ R1, LOOP1
DJNZ R2, LOOP2
 LậpLập trìnhtrình ñịnhñịnh thờithời dùngdùng vòngvòng lặplặp (không(không dùngdùng Timer)Timer)::
•• DùngDùng 33 vòngvòng lặplặp DJNZDJNZ::
HOẠT ðỘNG CỦA BỘ ðỊNH THỜIHOẠT ðỘNG CỦA BỘ ðỊNH THỜI
VÍ DỤ LẬP TRÌNH ðỊNH THỜI GIANVÍ DỤ LẬP TRÌNH ðỊNH THỜI GIAN
 ðoạn lệnh:
MOV R2, # [n1]…
LOOP2:
MOV R1, # [n2]…
LOOP1:
MOV
R0, # [n3]…
 Thời gian ñịnh thời:
[n1], [n2], [n3]: Số lần lặp.

t
DELAY
(us)
: Thời gian ñịnh thời.
MOV
R0, # [n3]…
DJNZ R0, $
DJNZ R1, LOOP1
DJNZ R2, LOOP2
t
DELAY
(us)
: Thời gian ñịnh thời.
f
OSC
(MHz): Tần số thạch anh.
 Công thức chính xác:
Giá trị của vòng lặp [n] phải nằm trong khoảng từ 0 - 255

×