Ðề tài: timer của PIC18
View Single Post
Old 12-11-2007, 05:23 PM   #6
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Tôi khởi tạo Timer 1 như thế này:
Code:
//Timer 1 initialisation
void Init_TMR1(void) {
	T1CON = 0xB0;		//Timer 1 is a 16-bit timer, 1:8 prescale
	TMR1H = 0xFF;		//Count number for 1 ms period @ 8 MHz clock
	TMR1L = 0x06;
	PIR1bits.TMR1IF = 0;		//Clear TMR1 interrupt flag
	IPR1bits.TMR1IP = 0;
	PIE1bits.TMR1IE = 1;		//Enable TMR1 interrupt
	T1CONbits.TMR1ON = 1;		//Turn Timer 1 on
}
Đoạn code xử lý ngắt như sau:
Code:
	if (PIR1bits.TMR1IF == 1) {
		PIE1bits.TMR1IE = 0;
		TMR1H = 0xFF;		//Count number for 1 ms period @ 8MHz clock
		TMR1L = 0x06;
		flag2 |= 1;
		PIE1bits.TMR1IE = 1;
		PIR1bits.TMR1IF = 0;
	}
Tất cả code chỉ nằm trong 1 tập tin (có chứa main và các chương trình con, chương trình xử lý ngắt khác). Mọi sự diễn ra bình thường, cờ flag2 bị đổi trạng thái mỗi 1 ms, với tần số clock là 8 MHz (thử bằng phần cứng, đo thời gian bằng DSO).

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn