Mình có 1 đoạn code trong thư viện mikroc viết như sau:
++các bạn để ý phần màu đỏ và xanh.nếu GIE_bit = 0; thì mình hiểu là các ngắt khác bị dis hết (gồm ngắt adc,timer.....)
như vậy thì ko hợp lý lắm.
++ngoài ra nếu phần màu xanh GIE_bit = 0; thì nó sẽ thực hiện xong phần( void interrupt_low(void) rồi mới đến phần (void interrupt(hight)) ) dù cho tại lúc đang thực hien ( void interrupt_low(void) có ngắt ở (void interrupt(hight))xen vào
như vậy vô hình dung ngắt ưu tiên ko có tác dụng
. mà chỉ là ngắt lần lượt.
các bạn có kinh nghiệm sử dụng mikro for pic cho góp ý cho mình với để thực hiện được chức năng ngắt ưu tiên trong pic18.
thank you!
Code:
void interrupt(void){ //high priority interrupt routine
GIE_bit = 0; //disable global interrupts
if (INT0IF_bit){ //if interrupt on RB0/INT0 pin
xu ly A.....
}
}
INT0IF_bit = 0; //clear flag bit
}
GIE_bit = 1; //enable interrupts
}
void interrupt_low(void){ //low priority interrupt routine
GIE_bit = 0; //disable global interrupts
if (TMR0IF_bit){ //if TMR0 overflow interrupt
TMR0H = 0x0B;
TMR0L = 0xDC;
xu ly B....
TMR0IF_bit = 0; //clear overflow flag bit
}
GIE_bit = 1; //enable interrupts
}
như vậy thì ko hợp lý lắm.
++ngoài ra nếu phần màu xanh GIE_bit = 0; thì nó sẽ thực hiện xong phần( void interrupt_low(void) rồi mới đến phần (void interrupt(hight)) ) dù cho tại lúc đang thực hien ( void interrupt_low(void) có ngắt ở (void interrupt(hight))xen vào
như vậy vô hình dung ngắt ưu tiên ko có tác dụng
. mà chỉ là ngắt lần lượt.các bạn có kinh nghiệm sử dụng mikro for pic cho góp ý cho mình với để thực hiện được chức năng ngắt ưu tiên trong pic18.
thank you!

Comment