在我的代码中,我有两个中断,一个来自 TMR0 的溢出,另一个是按下按钮时。
这是 MikroC 中的代码:
int compt = 0;
int seconds = 10 ;
int enable = 0;
void interrupt(){
if (INTCON.INTF) {
PORTD = 9;
enable = 1;
seconds = 10;
INTCON.INTF = 0;
}
if (INTCON.TMR0IF) {
compt++;
INTCON.TMR0IF = 0;
TMR0 = 0x06;
}
}
void main() {
TRISB = 0x01;
PORTB = 0;
PORTD = 0;
TRISD = 0x00;
INTCON = 0xB0;
OPTION_REG = 0x44;
TMR0 = 0x06;
while(1){
if (compt == 625){
if (enable) seconds--;
compt = 0;
}
if (seconds > 0 && enable == 1) {
PORTD = seconds;
PORTB.RB1 = 1;
} else {
enable = 0;
PORTB.RB1 = 0;
PORTD = 0;
}
}
}
我想用我的代码实现的目标如下图所示:
当我按下其中一个按钮时,倒计时开始并且 LED 亮起直到倒计时结束,如果用户在倒计时仍未达到 0 时按下按钮,它将重新开始,直到倒计时再次达到 0,然后LED 应关闭。
我在这里面临的是,来自 RBIE 的中断只工作一次,第二次按下按钮时,什么也没有发生。
我不确定 TMR0F 是否与此有关,尝试了很多东西,但无法使其工作。
我希望你能看到我没有注意到的东西,并帮助我。