Chuong 4 hoat dong dinh thoi

6
Chương 4: Hot động ca bđịnh thi (TIMER/COUNTER) AT89C51 có 2 bộ định thi 16 bit (Timer 0 và Timer 1) có thhot động các chế độ khác nhau và có khnăng định thi hay đếmskin. Khi hot động định thi (timer), bTimer / Counter sphát ra các xung định thi gian. khi đếm skin (counter), bTimer / Counter nhn xung đếm tbên ngoài. Chương 4: Hot động ca bđịnh thi Quá trình điu khin hot động ca Timer / Counter được thc hin thông qua các thanh ghi sau: Thanh ghi Địa chbyte Địa chbit TCON 88h 88h - 8Fh TMOD 89h Không TL0 90h Không TL1 91h Không TH0 92h Không TH1 93h Không Chương 4: Hot động ca bđịnh thi TMOD (Timer Mode Register) 8 bit bao gm: 4 bit thp dùng để thiếtlp chế độ hot động cho Timer 0, 4 bit cao dùng để thiết lp chế độ hot động cho Timer 1. 4.1. Thanh ghi chế độ định thi (TMOD) Hai bit M0 và M1 trong trong thanh ghi TMOD squyết định chế độ định thi làm vic. 4.1. Thanh ghi chế độ định thi (TMOD) M1 M0 Kiu Chc năng 0 0 0 Chế độ định thi 13 bit 0 1 1 Chế độ định thi 16 bit 1 0 2 Chế độ tđộng np li 8 bit 1 1 3 Chế độ định chia s: Timer 0: được tách ra làm 2 timer 8 bit Timer 8 bit TL0 được điu khin bi các bit ca Mode Timer 0. Timer 8 bit TH0 được điu khin bi các bit ca Mode Timer 1. Timer 1: không hot động Mode 3.

Transcript of Chuong 4 hoat dong dinh thoi

Chương 4: Hoạt động của bộ định thời

(TIMER/COUNTER)

• AT89C51 có 2 bộ định thời 16 bit (Timer 0 và Timer 1) có

thể hoạt động ở các chế độ khác nhau và có khả năng

định thời hay đếm sự kiện.

• Khi hoạt động định thời (timer), bộ Timer / Counter sẽ

phát ra các xung định thời gian.

• khi đếm sự kiện (counter), bộ Timer / Counter nhận xung

đếm từ bên ngoài.

Chương 4: Hoạt động của bộ định thời

Quá trình điều khiển hoạt động của Timer / Counter

được thực hiện thông qua các thanh ghi sau:

Thanh ghi Địa chỉ byte Địa chỉ bit

TCON 88h 88h - 8Fh

TMOD 89h Không

TL0 90h Không

TL1 91h Không

TH0 92h Không

TH1 93h Không

Chương 4: Hoạt động của bộ định thời

TMOD (Timer Mode Register) 8 bit bao gồm: 4 bit thấp dùng

để thiết lập chế độ hoạt động cho Timer 0, 4 bit cao dùng đểthiết lập chế độ hoạt động cho Timer 1.

4.1. Thanh ghi chế độ định thời (TMOD) Hai bit M0 và M1 trong trong thanh ghi TMOD sẽ quyết

định chế độ định thời làm việc.

4.1. Thanh ghi chế độ định thời (TMOD)

M1 M0 Kiểu Chức năng

0 0 0 Chế độ định thời 13 bit

0 1 1 Chế độ định thời 16 bit

1 0 2 Chế độ tự động nạp lại 8 bit

1 1 3

Chế độ định chia sẻ:

Timer 0: được tách ra làm 2 timer 8 bit

• Timer 8 bit TL0 được điều khiển bởi các

bit của Mode Timer 0.

• Timer 8 bit TH0 được điều khiển bởi các

bit của Mode Timer 1.

Timer 1: không hoạt động ở Mode 3.

Chương 4: Hoạt động của bộ định thời

TCON (Timer Control Register) chứa các bit trạng thái và các

bit điều khiển cho Timer 0 và Timer 1.

4.2. Thanh ghi điều khiển định thời (TCON)

Bit Ký hiệu Địa chỉ Chức năng

7 TF1 8FH

Cờ báo tràn timer 1. Được Set khi Timer 1

tràn. Được xoá bởi phần mềm hoặc phần

cứng khi chuyển đến chương trình con xửlý ngắt.

6 TR1 8EH

Cho phép Timer 1 hoạt động (= 1) hay

ngừng (= 0). Được Set và xóa bằng phần

mềm.

5 TF0 8DH Cờ báo tràn timer 0.

4 TR0 8CH Điều khiển hoạt động của Timer 0.

4.2. Thanh ghi điều khiển định thời (4 bit thấp)

Bit Ký hiệu Địa chỉ Chức năng

3 IE1 8BH

Dùng cho các ngắt ngoài 0 và 1

(Nghiên cứu trong chương sau)

2 IT1 8AH

1 IE0 89H

0 IT0 88H

Mỗi lần có xung đếm, giá trị trong thanh ghi 13 bit tăng

lên 1. Khi giá trị này thay đổi từ 1 1111 1111 1111b đến 0

thì bộ đếm tràn làm cho TFx được đặt lên mức 1.

4.3. Các chế độ định thời và cờ tràn

4.3.1. Chế độ 0 (chế độ định thời 13 bit)

(5 bits)

TLx

(5 bits) (8 bits)

THx

(8 bits)TFx

Timer

clockCờ tràn

Bao gồm 8 bit của thanh ghi THx và 5 bit của thanh ghi

TLx còn 3 bit cao của thanh ghi TLx không sử dụng.

4.3. Các chế độ định thời và cờ tràn

4.3.1. Chế độ 1 (chế độ định thời 16 bit)

(8 bits)

TLx

(8 bits) (8 bits)

THx

(8 bits)TFx

Timer

clockCờ tràn

Mỗi lần có xung, giá trị trong thanh ghi 16 bit tăng lên 1.

Khi giá trị này thay đổi từ 1111 1111 1111 1111b đến 0 thì

bộ đếm tràn làm cho TFx được đặt lên mức 1.

Chế độ 1 giống như chế độ 0 nhưng sử dụng 16 bit bao gồm

8 bit của THx và 8 bit của TLx.

4.3. Các chế độ định thời và cờ tràn

4.3.3. Chế độ 2 (chế độ tự nạp lại 8 bit)

(8 bits)

TLx

(8 bits)

(8 bits)

THx

(8 bits)

TFxTimer

clockCờ tràn

Nạp lại

Chế độ này sử dụng thanh ghi TLx để chứa giá trị đếm

còn thanh ghi THx chứa giá trị nạp lại cho thanh ghi TLx.

(8 bits)

TLx

(8 bits)

(8 bits)

THx

(8 bits)

TFxTimer

clockCờ tràn

Nạp lại

Khi giá trị trong thanh ghi TLx thay đổi từ

1111 1111b đến 0 thì cờ TFx được set lên mức 1, đồng

thời giá trị trong thanh ghi THx được chuyển vào

thanh ghi TLx. Giá trị đếm trong TLx và THx chỉ

được nạp một lần khi khởi động timer.

4.3. Các chế độ định thời và cờ tràn

4.3.1. Chế độ 3 (chế độ định thời chia sẻ)

(8 bits)

TLx

(8 bits) (8 bits)

THx

(8 bits)

Timer

clock

(8 bits)

TH0

(8 bits)TF1Timer

clockCờ tràn

(8 bits)

TL0

(8 bits)TF0

Timer

clock

Cờ tràn

4.3. Các chế độ định thời và cờ tràn

4.3.1. Chế độ 3 (chế độ định thời chia sẻ)

Chế độ này sử dụng các thanh ghi TL0 và TH0 nhưcác bộ định thời độc lập trong đó:

• TL0 điều khiển bằng các thanh ghi của timer 0.

Khi TL0 chuyển từ giá trị 1111 1111b đến 0 thì

TF0 được đặt lên mức1.

• TH0 điều khiển bằng các thanh ghi của timer 1.

Khi TH0 chuyển từ 1111 1111b đến 0 thì TF1

được đặt lên mức 1.

4.4. Nguồn xung clock định thời 4.5. Khởi động, dừng và điều khiển các bộ định thời

Bit TRx trong thanh ghi TCON được điều khiển bởi

phần mềm để cho phép khởi động hoặc dừng làm việc.

• Khởi động bộ định thời được thực hiện bằng lệnh:

SETB TR0

SETB TR1

• Ngừng định thời được thực hiện bằng lệnh:

CLR TR0

CLR TR1

4.6. Khoảng thời gian ngắn và dài

Khoảng thời gian Kỹ thuật

10 µµµµs Điều chỉnh phần mềm

256 µµµµs Chế độ định thời 8 bit (chế độ 2)

65536 µµµµs Chế độ định thời 16 bit (chế độ 1)

Không giới hạn Chế độ định thời + vòng lặp

4.7. Các ứng dụng của bộ định thời

Các bước thực hiện để điều khiển hoạt động của timer:

• Nạp giá trị cho thanh ghi TMOD để xác định chế độ hoạt động.

• Nạp giá trị đếm trong các thanh ghi THx, TLx.

• Đặt các bit TR0, TR1 = 1 (cho phép timer hoạt động) hay xoá

các bit này về 0 (Timer dừng hoạt động).

• Trong quá trình timer chạy, thực hiện kiểm tra các bit TF0, TF1

để xác định timer đã tràn hay chưa.

• Sau khi timer tràn, nếu thực hiện kiểm tra tràn bằng phần mềm

thì phải thực hiện xoá TF0 hay TF1 để có thể tiếp tục hoạt động.

4.7. Các ứng dụng của bộ định thời

Ví dụ 1: Viết chương trình tạo sóng vuông tần số 10 KHz

tại chân P1.0 dùng timer 0 (tần số thạch anh là 12MHz).

Giải: Do fOSC = 12MHz nên chu kỳ máy = 1 µs.

f = 10 KHz ⇒ T = 1/f = 0.1 ms = 100 µs

⇒ một chu kỳ sóng vuông chiếm khoảng thời gian

100 chu kỳ máy.

⇒ thời gian tồn tại mức cao là 50 chu kỳ máy.

4.7. Các ứng dụng của bộ định thời

Do giá trị đếm là 50 (ứng với 50 chu kỳ máy) nên chỉcần dùng chế độ 8 bit (có thể đếm từ 1 đến 256) cho timer

0 (chế độ 2).

Nội dung thanh ghi TMOD = 0000 0010b (02h)

Giá trị đếm là 50 và do timer 0 đếm lên nên giá trịcần nạp cho TH0 là -50.

Chương trình thực hiện như sau:

ORG 0000H ; Địa chỉ bắt đầu

MOV TMOD, #02h ; Thiết lập chế độ định thời

MOV TH0, #(-50) ; Nạp giá trị cho TH0

MOV TL0, #(-50) ; Nạp giá trị cho TL0

Loop1:SETB TR0 ; Cho phép timer 0 hoạt động

Loop: JNB TF0, Loop ; Nếu Timer chưa tràn thì chờ

CLR TF0 ; Xóa cờ tràn

CLR TR0

CPL P1.0 ; Đảo bit P1.0 để tạo xung vuông

SJMP Loop1

END

4.7. Các ứng dụng của bộ định thời

Ví dụ 2: Viết chương trình tạo sóng vuông tần số 1 KHz tại

chân P1.0 dùng timer 1.

Giải: f = 1KHz ⇒ T = 1/f = 1 ms = 1000 µs

Giá trị đếm là 500 (ứng với 500 chu kỳ máy)

⇒ dùng chế độ 13 (chế độ 0) bit hoặc 16 bit (chế độ 1).

Chương trình thực hiện như sau:

ORG 0000H ; Địa chỉ bắt đầu

MOV TMOD, #10h ; Thiết lập chế độ 1 của Timer 1

Loop: MOV TH1, #HIGH (-500) ; Nạp byte cao của -500

MOV TL1, #LOW (-500) ; Nạp byte thấp của -500

SETB TR1 ; Cho phép timer 0 hoạt động

Wait: JNB TF1, Wait ; Nếu Timer chưa tràn thì chờ

CLR TF1 ; Xóa cờ tràn

CPL P1.0 ; Đảo bit P1.0 để tạo xung vuông

CLR TR1

SJMP Loop

END

4.7. Các ứng dụng của bộ định thời

Ví dụ 1: Viết chương điều khiển 8 đèn LED sáng/tắt

trong 1 giây.

Chương trình thực hiện như sau:

ORG 0000H

MOV TMOD, #01H ;Timer0 chế độ

Loop: MOV P0, #00H

CALL Delay1s

MOV P0, #0FFH

CALL Delay1s

SJMP Loop

Chương trình Delay 1 giây:

Delay1s:

MOV R7,#50 ; Lặp 20 lần

Loop1: MOV TH0, #HIGH(-20000)

MOV TL0, #LOW(-20000)

SETB TR0

Wait: JNB TF0, Wait

CLR TF0

CLR TR0

DJNZ R7, Loop1

RET