Có thể dùng một timer khác xem, sợ rằng nó bị lẫn lộn không chạy. Mà cái chương trình của cậu đơn giản thì cần gì phải ngắt timer, ngắt nhiều mà không kiểm soát được thì nó chạy linh tinh ngay. Check 5s đơn giản dùng delay cũng được rồi
Code:
void check_5s() { dem=0; detect_5s=0; do { dem++; delay_ms(50); if(dem>=100)detect_5s=1; // 50 x100 = 5000ms = 5s } while(!button); }
Code:
interrupt [EXT_INT0] void ext_int0_isr(void) { // Place your code here check_5s(); if(detect_5s) { learn_mode=1; den_mode=0; delay_ms(200); den_mode=1; } else { kenh++; if(kenh>4) { kenh=0; learn_mode=0; PORTB=0; } } }
Comment