Ðề tài: CCS C for PIC16F877A
View Single Post
Old 02-04-2006, 11:27 AM   #13
nhh
Đệ tử 9 túi
 
nhh's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 174
:
Send a message via Yahoo to nhh
Talking Timer

Hi....!

Trong Pic16f877a có 3 timer :
+ Timer0 : 8 bit
+ Timer1 : 16 bit
+ Timer2 : 8 bit
Timer dùng cho nhiều ứng dụng : định thời, capture, pwm, ...

1.Timer0

Thanh ghi tác động:

Các lệnh:
Code:
setup_TIMER_0(mode);
setup_COUNTERS (rtcc_state, ps_state); // hay setup_WDT()
set_TIMER0(value); // hay set_RTCC(value) :xác định giá trị ban đầu (8bit) cho Timer0
get_TIMER0(); // hay get_RTCC() :trả về số nguyên (8bit) của Timer0
Trong đó mode là một hoặc hai constant (nếu dùng hai thì chèn dấu "|"ở giữa) được định nghĩa trong file 16F877A.h gồm :

RTCC_INTERNAL : chọn xung clock nội
RTCC_EXT_L_TO_H : chọn bit cạnh lên trên chân RA4
RTCC_EXT_H_TO_L : chọn bit cạnh xuống trên chân RA4

RTCC_DIV_2 :chia prescaler 1:2
RTCC_DIV_4 1:4
RTCC_DIV_8 1:8
RTCC_DIV_16 1:16
RTCC_DIV_32 1:32
RTCC_DIV_64 1:64
RTCC_DIV_128 1:128
RTCC_DIV_256 1:256

rtcc_state là một trong những constant sau:

RTCC_INTERNAL
RTCC_EXT_L_TO_H
RTCC_EXT_H_TO_L

ps_state là một trong những constant sau:

RTCC_DIV_2
RTCC_DIV_4
RTCC_DIV_8
RTCC_DIV_16
RTCC_DIV_32
RTCC_DIV_64
RTCC_DIV_128
RTCC_DIV_256
WDT_18MS
WDT_36MS
WDT_72MS
WDT_144MS
WDT_288MS
WDT_576MS
WDT_1152MS
WDT_2304MS

Mình cũng chưa hiểu ý nghĩa của hàm WDT_..., ko biết có phải khai báo như trên thì sau khoảng thời gian ms bao nhiêu đó đặt sau WDT_ thì sẽ reset lại Pic ?????

2.Timer1

Thanh ghi tác động:

Các lệnh:
Code:
setup_TIMER_1(mode);	
set_TIMER1(value);	  	// xác định giá trị ban đầu (16bit) cho Timer1
get_TIMER1();               	// trả về số nguyên (16bit) của Timer1
mode gồm (có thể kết hợp bằng dấu "|"):

T1_DISABLED : tắt Timer1
T1_INTERNAL : xung clock nội (Fosc/4)
T1_EXTERNAL : xung clock ngoài trên chân RC0
T1_EXTERNAL_SYNC : xung clock ngoài đồng bộ
T1_CLK_OUT
T1_DIV_BY_1
T1_DIV_BY_2
T1_DIV_BY_4
T1_DIV_BY_8

3.Timer2

Thanh ghi tác động:

Các lệnh:
Code:
setup_TIMER_2(mode, period, postscale);
set_TIMER2(value);        	// xác định giá trị ban đầu (8bit) cho Timer2
get_TIMER2();              	// trả về số nguyên  8bit
Với mode gồm (co the ket hop bang dau "|"):

T2_DISABLED
T2_DIV_BY_1
T2_DIV_BY_4
T2_DIV_BY_16

period là số nguyên từ 0-255, xác định giá trị xung reset
postscale là số nguyên 1-16, xác định reset bao nhiêu lần trước khi ngắt.
__________________
Ngày mai bắt đầu từ ngày hôm nay

Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này:
http://www.picvietnam.com/forum//showthread.php?t=1263

thay đổi nội dung bởi: nhh, 02-04-2006 lúc 11:34 AM.
nhh vẫn chưa có mặt trong diễn đàn