Nguyên lý hoạt động cơ bản của một bộ Timer: 1 Chế độ định thời:

Một phần của tài liệu Giáo trình hợp ngữ - Lập trình PIC 16F877A (Trang 79 - 81)

. Lệnh trở về đầu dòng thứ nhất: mã lệnh

0100 0782 ADDWF 0x2 ,F 74: ADDWF PCL,F

5.2 Nguyên lý hoạt động cơ bản của một bộ Timer: 1 Chế độ định thời:

Mỗi bộ timer có một hoặc nhiều thanh ghi chứa giá trị đếm của nó (tùy thuộc vào độ dài của timer), ta giả sử tên thanh ghi là TMR có độ dài là n byte (n=1 với timer0, n=2 với timer1), hay giá trị đếm tối đa là 0 (Chuyển từ 28n 1 về 0). Khi giá trị của TMR đạt đến giá trị này, vi điều khiển sẽ set bit cờ của bộ timer đó lên mức 1. Người dùng sẽ biết được thời điểm này bằng cách kiểm tra bit cờ.

Khi được cài đặt hoạt động trong chế độ định thời:

- Giá trị của thanh ghi TMR sẽ tự động tăng lên 1 đơn vị sau mỗi chu kì lệnh của vi điều khiển: TMR=TMR+1

- Khi giá trị của TMR đạt đến giá trị tối đa (Đối với timer0: từ 255 cộng thêm 1 chuyển về 0, đối với timer1: từ 65535 cộng 1 chuyển về 0) , bit cờ của Timer (Đối với Timer0, tên bit cờ là TMR0IF, vị trí là bit số 2 của

thanh ghi INTCON; Đối với Timer1, tên bit cờ là TMR1IF, vị trí là bit số 0 của thanh ghi PIR1) sẽ được set lên mức 1

Giả sử vi điều khiển dùng thạch anh tần số 4MHz, như vậy:

Chu kỳ lệnh= 4 chu kì thạch anh= =1µs

Vậy TMR sẽ tự động tăng lên 1 đơn vị sau một chu kì lệnh tức sau 1µs. Nếu ban đầu ta gán cho TMR= x. Thì sau khoảng thời gian n x

8

2 (µs) giá trị TMR sẽ đạt giá trị tối đa của nó là 0 (chuyển từ 255+1->0) . Thời điểm này được xác định thông qua trạng thái của bit cờ.

Ngược lại, ta muốn thực hiện định thời khoảng thời gian t sau một sự kiện 1 như sau:

- Sự kiện 1

- Tạo khoảng thời gian trễ t - Sự kiện 2

Ta làm các bước: - Sự kiện 1

- Gán giá trị ban đầu cho TMR = 28nt

- Khi bit cờ = 1, thực hiện sự kiện 2. Thật vậy, sau 1 (µs) TMR tăng lên 1 đơn vị

Để tăng giá trị cho TMR từ 28nt đến giá trị 0 (chuyển từ 255 +1 về 0) (khi bit cờ được set lên 1) mất 28n (28nt) = t (µs)

Vậy khoảng thời gian từ sau sự kiện 1 (khi TMR bắt đầu được gán) đến sự kiện 2 (ngay sau khi bit cờ được set) là t (µs) đúng như u cầu của ta.

Ví dụ: Để định thời 200 (µs) dùng Timer0 (8 bit; n=1; giá trị tối đa là 255) ta cho

TMR0= 256-200=56 Như vậy:

Sau 1 µs đầu tiên. TMR0=TMR0+1=57 Sau 2 µs . TMR0=TMR0+1=58

-------

Sau 200 µs, TMR0=TMR0+1= 255+1= 0 (TMR0 có giá trị lớn nhất là 255)

Một phần của tài liệu Giáo trình hợp ngữ - Lập trình PIC 16F877A (Trang 79 - 81)