KHOA CÔNG NGHỆ ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP GIÁO TRÌNH VI XỬ LÝ Chương 4: Hoạt ñộng của bộ ñịnh thời (Timer). Trường ðH Công nghiệp Tp. CHƯƠNG 4 HOẠT ðỘNG CỦA BỘ ðỊNH THỜI (TIMER) I. MỞ ðẦU: Boä ñònh Laø chuoãi caùc FF (moãi FF laø 1 maïch chia 2).
thôøi Ngoõ vaøo: nhaän tín hieäu xung clock töø nguoàn xung. • Tần số: tần số xung ngõ ra bằng tần số xung ngõ vào chia cho 2N. • 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). f f o Tần số: f = IN = IN OUT 216 65536 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 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).
Trường ðH Công nghiệp Tp. thấy tầng thứ nhất (Q0) chia 2 tần số xung clock, tầng thứ hai (Q1) 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 Q2 = 1, Q1 = 0, Q0 = 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 Q2 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 luôn luôn ở 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 ngoà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.
Giáo trình Vi xử lý. 120 Biên soạn: Phạm Quang Trí Chương 4: Hoạt ñộng của bộ ñịnh thời (Timer). Trường ðH Công nghiệp Tp. 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: Bit 7 6 5 4 3 2 1 0 TMOD: Timer Mode Register 0 M0: Bit choïn cheá ñoä hoaït ñoäng cho boä ñònh thôøi. M1: Bit choïn cheá ñoä hoaït ñoäng cho boä ñònh thôøi. C/T: Bit choïn chöùc naêng ñeám hoaëc ñònh thôøi.
C/T=1: Boä ñònh thôøi laø boä ñeám (Counter). C/T=0: Boä ñònh thôøi laø boä ñònh khoaûng thôøi gian (Timer). GATE: Bit ñieàu khieån coång. GATE=0: Boä ñònh thôøi hoaït ñoäng khi bit TR0=1 (ñieàu khieån baèng phaàn meàm).
GATE=1: Boä ñònh thôøi hoaït ñoäng khi chaân INT0\=1 (ñieàu khieån baèng phaàn cöùng). 1 M0: Bit choïn cheá ñoä hoaït ñoäng cho boä ñònh thôøi. M1: Bit choïn cheá ñoä hoaït ñoäng cho boä ñònh thôøi. C/T: Bit choïn chöùc naêng ñeám hoaëc ñònh thôøi.
C/T=1: Boä ñònh thôøi laø boä ñeám (Counter). C/T=0: Boä ñònh thôøi laø boä ñònh khoaûng thôøi gian (Timer). GATE: Bit ñieàu khieån coång. GATE=0: Boä ñònh thôøi hoaït ñoäng khi bit TR1=1 (ñieàu khieån Hình 4.1: baèng phaàn meàm).
Thanh ghi choïn GATE=1: Boä ñònh thôøi hoaït ñoäng khi chaân INT1\=1 (ñieàu cheá ñoä ñònh thôøi. khieån baèng phaàn cöùng). • Các chế ñộ hoạt ñộng của bộ ñịnh thời: Giáo trình Vi xử lý. 121 Biên soạn: Phạm Quang Trí Chương 4: Hoạt ñộng của bộ ñịnh thời (Timer).
Trường ðH Công nghiệp Tp. • 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 INT 1 ). Giải Phân tích: (1): Chế ñộ 16 bit.
(2): Bộ ñịnh thời gian. (3): ðiều khiển bằng phần mềm. (4): Chế ñộ 13 bit. (5): Bộ ñếm xung.
(6): ðiều khiển bằng phần cứng. • 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.
(2): Không sử dụng. (3): Không sử dụng. 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, C / T = 0, M1 = 0 và M0 = 0.
(4): Chế ñộ 8 bit tự ñộng nạp lại. (5): Bộ ñịnh thời gian. (6): ðiều khiển bằng phần mềm. Giáo trình Vi xử lý.
122 Biên soạn: Phạm Quang Trí Chương 4: Hoạt ñộng của bộ ñịnh thời (Timer). Trường ðH Công nghiệp Tp. • 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 thích: M1 = 1, M0 = 0. (4): Chế ñộ 8 bit tự ñộng nạp lại. (5): Bộ ñịnh thời gian. (6): ðiều khiển bằng phần cứng.
(1): Chế ñộ 16 bit. (2): Bộ ñếm xung. (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 INT 1 ). • 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 thích: M1 = 1, M0 = 0.
(4): Chế ñộ 8 bit tự ñộng nạp lại. (5): Bộ ñịnh thời gian. (6): ðiều khiển bằng phần mềm. (1): Chế ñộ 16 bit.
(2): Bộ ñịnh thời gian. (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).
Giáo trình Vi xử lý. 123 Biên soạn: Phạm Quang Trí Chương 4: Hoạt ñộng của bộ ñịnh thời (Timer). Trường ðH Công nghiệp Tp. 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 ngoà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. Giáo trình Vi xử lý.
124 Biên soạn: Phạm Quang Trí Chương 4: Hoạt ñộng của bộ ñịnh thời (Timer). Trường ðH Công nghiệp Tp. 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.TTimer nghĩa là từ 1. • 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). Giáo trình Vi xử lý.
125 Biên soạn: Phạm Quang Trí Chương 4: Hoạt ñộng của bộ ñịnh thời (Timer). Trường ðH Công nghiệp Tp. 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.TTimer nghĩa là từ 1. • 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). Giáo trình Vi xử lý. 126 Biên soạn: Phạm Quang Trí Chương 4: Hoạt ñộng của bộ ñịnh thời (Timer).
Trường ðH Công nghiệp Tp. 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.TTimer nghĩa là từ 1. • 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). Giáo trình Vi xử lý. 127 Biên soạn: Phạm Quang Trí Chương 4: Hoạt ñộng của bộ ñịnh thời (Timer). Trường ðH Công nghiệp Tp.
Chế ñộ ñịnh thời chia xẻ (Chế ñộ 3): Timer TH1 TL1 clock Timer TF0 TL0 clock TF1 TH0 /12FOSC Overflow x = 0, 1: Boä ñònh thôøi 0, 1.