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