标题: 这段C语言代码哪里有错误 我用debug运行了一下发现箭头一直在if(cnt>=500)这行 [打印本页]

作者: ベアトリス    时间: 2020-8-14 23:02
标题: 这段C语言代码哪里有错误 我用debug运行了一下发现箭头一直在if(cnt>=500)这行
新人请教一下 请问这段代码哪里有错误 我用debug运行了一下发现箭头一直在if(cnt>=500)这行 在群里问了没有得到满意的解答 请问有没有大佬能告知一下是哪里出错了

U31PEZGK_1F3V{E0A8DQR)X.png (95.75 KB, 下载次数: 72)

U31PEZGK_1F3V{E0A8DQR)X.png

{F788{`5G0CUPA_[0NB8A9S.png (111.75 KB, 下载次数: 63)

{F788{`5G0CUPA_[0NB8A9S.png

作者: 蓝魄    时间: 2020-8-15 08:16
因为if(cnt>=500)在死循环while(1)里,所以你单步执行要中断500次才能进入到if里面的程序,所以cnt在500之前就会一直在判断,所以就一直在if这里,而中断会使程序跳转到中断函数,至于单步多少次就算你的中断计算次数了
作者: szb314    时间: 2020-8-15 09:26
说不定你的cnt 定义的是 8bit的变量 怎么可能大于500
作者: 青桑叶    时间: 2020-8-15 10:11
一直中断没出来.供参考
作者: zzzzz@    时间: 2020-8-15 11:10
死循环中断500次才到if里面的程序,挑不出来
作者: panzishi123456    时间: 2020-8-15 11:17
cnt有符号,正数范围不能超255
作者: 枫城落    时间: 2020-8-15 14:47
好像一直在中断函数里循环,没跳回去
作者: ベアトリス    时间: 2020-8-15 23:33
蓝魄 发表于 2020-8-15 08:16
因为if(cnt>=500)在死循环while(1)里,所以你单步执行要中断500次才能进入到if里面的程序,所以cnt在500 ...

我中断应该设置的是2ms进一次(不知道大佬能不能看一下代码) 但我debug运行时就一直指在if(cnt>=500)这行 我数码管也是第一个只在闪烁
作者: ベアトリス    时间: 2020-8-15 23:34
panzishi123456 发表于 2020-8-15 11:17
cnt有符号,正数范围不能超255

unsigned int cnt不是0到65525吗?
作者: ベアトリス    时间: 2020-8-15 23:36
青桑叶 发表于 2020-8-15 10:11
一直中断没出来.供参考

请问大佬我中断哪里写错了
作者: JACK26974    时间: 2020-8-16 08:19
一直在中断函数里循环

作者: 依利达    时间: 2020-8-16 11:31
while (表达式),表达式始终为true,所以一直循环
作者: disorder    时间: 2020-8-16 12:43
看上去没啥大问题 你的P1和数码管是怎么接的?
作者: ベアトリス    时间: 2020-8-16 19:07
disorder 发表于 2020-8-16 12:43
看上去没啥大问题 你的P1和数码管是怎么接的?

#include<reg52.h>

sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
应该没问题吧
作者: panzishi123456    时间: 2020-8-17 08:00
ベアトリス 发表于 2020-8-15 23:34
unsigned int cnt不是0到65525吗?

啊,我看错了




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1