Ðề tài: CCS C for PIC16F877A
View Single Post
Old 02-03-2007, 03:07 PM   #11
hungnp
Đệ tử 1 túi
 
Tham gia ngày: May 2006
Bài gửi: 15
:
Nếu bạn muốn dùng 2 cái delay_ms() trong cả ngắt và main thì mình nghĩ không có cách nào đâu. nếu bạn cứ muốn dùng nó thì hãy tạo ra 2 hàm delay_ms1() và delay_ms2() và trong ngắt gọi một hàm và trong main gọi hàm còn lại.

Còn có một cách nữa mình nghĩ nó sẽ pro hơn đấy là.

mình xin viết lại một đoạn chương trình của bạn trong:
bạn khai báo một biến toàn cục như thế này nhé.
//=======
int1 bit_timer0_status;

#INT_TIMER1
void lapngat()
{
bit_timer0_status =1;
}

//===========
// và đưa công việc của bạn muốn thực hiện khi có ngắt vào đây.
//===========
void isr_timer0(void)
{
count++;
if (count==200)
while(true)
{
output_high(PIN_C1);
delay_ms(1000);
if(!input(PIN_B3)) break;
output_low(PIN_C1);
delay_ms(1000);
}

//===========
//và trong hàm main bạn phải làm thế này
//===========
void main(void)
{
if(bit_timer0_status)
{
//có thể cấm ngắt timer0.
//gọi hàm thực hiện công việc.
isr_timer0();
bit_timer0_status=0;
//bật ngắt trở lại
}
}

//ok?
hungnp vẫn chưa có mặt trong diễn đàn