Trích:
Nguyên văn bởi ngocthanh07
Bạn có thể post nguyên cái code của bạn ko, bạn hỏi nguời khác, mà bạn cứ cắt xén câu hỏi như vậy, nguời ta phải đoán bạn làm gì rồi, chưa làm gì rồi
rất là khó
Code:
/* service routine for timer 0 interrupt */
void interrupt
timer0_isr(void)
{
if(reload == 0){
// effect a change on PORTB whenever our desired period is reached.
// Note this timing will contain a margin of error.
reload = RELOADS + 1;
seconds++;
PORTB++; // effect a change on PORTB
}
reload--;
T0IF = 0;
}
Đó là một ví dụ về ngắt timer 0 trong HT PIC, tớ không rành về cách viết HT PIC, nhưng liệu bạn có chắc chuơng trình của bạn sẽ nhảy vào ngắt không.
Tớ up cho bạn mổ cái file manual của HT PIC, trong chuơng năm nguời ta có 1 ví dụ về timer1 thì phải.
|
hi! cám ơn ngocthanh07
đêm qua mình ngồi suy nghi lại và đọc thêm 1 số bài.hóa ra mình thiếu cho phép ngắt ngoaij vi PEIE=1, vì tmer1 là mọt ngoại vi.
mình đã bổ xung và timer1 chạy ngon lành cành đào vui quá

)
nhưng lại có thêm 1 vấn đề nữa
khi mình dùng timer0 và timer1 cùng 1 lúc, thì trình dịch báo lỗi (symbol "interrupt_function" defined more than) có nghĩa là khai báo hàm ngắt quá 1 lần.
mính gọi hai hàm ngắt liên tục như thế này
void interrupt inter0(void)
{
//thực hiện lênh1.
}
void interrupt inter1(void)
{
//thực hiện lênh2.
}
có ki nào xung đột ko nhỉ mà khi dịch thì nó báo lỗi hoài?