ATtiny85编程问题(关于中断的问题),求教各位大神~~~

部分相关代码:(以下代码都在一个main.c文件中)int LED_Switch = 0; //是否开灯的标志位;int i = 0; //延时计数; (全局变量)/*--------------------------------------------------------------------------------------------------------------------------*/int main(void){ LED_Init(); ADC_Init(); INT_Init(); sei(); //使能全局中断; //Sleep_Mode_Enable(); while(1) { if (LED_Switch == 1) { LED_Switch = 0; LED0_off; } }}//-------------------------------------------------------------ISR(INT0_vect){ if (ATtiny85_ADC() > 0) { LED_Switch = 1; i = 0; LED0_on; }}//-------------------------------------------------------------void INT_Init(void){ DDRB &= ~_BV(PB2); //Pin INT0(PD2) must be input PORTB |= _BV(PB2); //Enable pin INT0 pull-up resistor GIMSK |= _BV(INT0); //使能外部中断0 MCUCR = 0x00; //外部中断触发方式,低电平触发;}//-------------------------------------------------------------为什么每次进中断(中断时按键触发的)后在while(1)循环中不能进入if (LED_Switch == 1) 呢? 我明明在中断设过标志位的,难道它出中断后自动清零了?本人新手,求大神指教!!!
2026年09月22日 10:52
有1个网友回答
网友(1):

1.不知你的T1的工作方式0还是1,因为是0 的话,10ms初值也不是3C0BH,如果是1,那TMOD最低位少了个0 ,应为00010000B 。这样,6M晶振下,定时器溢出 时间 是100ms
2.试过可以跳出