你测试中断,就要一个空的while(1); 在那里候着,啥事都让中断干,才行。你while里,只要an2没有按下,就关灯,循环还那么快,中断了都不知道。 |
问题解决了:其实并不是没有进入中断,只是因为速度太快了,LED测试时肉眼看不出来,实际已经进入中断了的。8F系列速度确实比15W系列的快了,导致在15W系列上可以用的程序到8F系列却用不了, 通过增加延时时间,或者在中断服务程序里加个跳转函数处理即可解决。 谢谢@pcbboy 的指点 ![]() |
pcbboy 发表于 2019-12-6 13:25 好的,我改一下看看 |
你那个中断里面不处理自然看不到反应了。比如LED取反啥的也好啊。 STC自己的范例为你参考: #include "reg51.h" #include "intrins.h" sbit P10 = P1^0; sbit P11 = P1^1; void INT1_Isr() interrupt 2 { if (INT1) //判断上升沿和下降沿 { P10 = !P10; //测试端口 } else { P11 = !P11; //测试端口 } } void main() { IT1 = 0; //使能INT1上升沿和下降沿中断 EX1 = 1; //使能INT1中断 EA = 1; while (1); } |