Trích:
Nguyên văn bởi Hiepnv101
void Init_TMR1(void)
{
TMR1 = 0; //Xoa so dem trong TMR1
PR1 = 0x7A12; //Nguong tran la 1 giay tuong ung voi clock = 32 MHz
_T1IF = 0; //Xoa co ngat cua Timer 1
T1CON = 0x8030; //Dung fcy lam clock, prescale = 1:256
_T1IE = 1; //Cho phep ngat khi Timer 1 tran
}
Theo em nghĩ là bộ đếm sẽ đếm giá trị từ PR1 đến giá trị 65535, khi vượt qua giá trị này sẽ tạo ngắt Timer1. Anh Nam đặt giá trị 7A12 vào PR1 liệu đã tạo ra ngắt đúng 1giây không ?
|
Không phải đâu ban, Timer sẽ đếm từ 0 cho tới giá trị PRx, giá tri của bộ đếm Timer sẽ lưu vào TMRx ,(x ở đây là chỉ số timer x=1 ,2..) và khi TMRx = PRx thì ngắt Timer sẽ được gọi (nếu bạn set bit _TxIE ), đồng thời reset giá trị trong thanh ghi TMRx về zero,và lặp lại công việc như trên mãi.
Trân trọng!
à mà dạo này Picvietnam thấy sa sút qua thầy Nam ơi !