ベアトリス 发表于 2020-8-15 23:34 啊,我看错了 |
disorder 发表于 2020-8-16 12:43 #include<reg52.h> sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; 应该没问题吧 |
看上去没啥大问题 你的P1和数码管是怎么接的? |
while (表达式),表达式始终为true,所以一直循环 |
一直在中断函数里循环 |
青桑叶 发表于 2020-8-15 10:11 请问大佬我中断哪里写错了 |
panzishi123456 发表于 2020-8-15 11:17 unsigned int cnt不是0到65525吗? |
蓝魄 发表于 2020-8-15 08:16 我中断应该设置的是2ms进一次(不知道大佬能不能看一下代码) 但我debug运行时就一直指在if(cnt>=500)这行 我数码管也是第一个只在闪烁 |
好像一直在中断函数里循环,没跳回去 |
cnt有符号,正数范围不能超255 |
死循环中断500次才到if里面的程序,挑不出来 |
一直中断没出来.供参考 |
说不定你的cnt 定义的是 8bit的变量 怎么可能大于500 |
因为if(cnt>=500)在死循环while(1)里,所以你单步执行要中断500次才能进入到if里面的程序,所以cnt在500之前就会一直在判断,所以就一直在if这里,而中断会使程序跳转到中断函数,至于单步多少次就算你的中断计算次数了 |