找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

这段C语言代码哪里有错误 我用debug运行了一下发现箭头一直在if(cnt>=500)这行

查看数: 3078 | 评论数: 14 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-8-14 23:02

正文摘要:

新人请教一下 请问这段代码哪里有错误 我用debug运行了一下发现箭头一直在if(cnt>=500)这行 在群里问了没有得到满意的解答 请问有没有大佬能告知一下是哪里出错了

回复

ID:76471 发表于 2020-8-17 08:00
ベアトリス 发表于 2020-8-15 23:34
unsigned int cnt不是0到65525吗?

啊,我看错了
ID:814295 发表于 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;
应该没问题吧
ID:805376 发表于 2020-8-16 12:43
看上去没啥大问题 你的P1和数码管是怎么接的?
ID:700528 发表于 2020-8-16 11:31
while (表达式),表达式始终为true,所以一直循环
ID:814561 发表于 2020-8-16 08:19
一直在中断函数里循环
ID:814295 发表于 2020-8-15 23:36
青桑叶 发表于 2020-8-15 10:11
一直中断没出来.供参考

请问大佬我中断哪里写错了
ID:814295 发表于 2020-8-15 23:34
panzishi123456 发表于 2020-8-15 11:17
cnt有符号,正数范围不能超255

unsigned int cnt不是0到65525吗?
ID:814295 发表于 2020-8-15 23:33
蓝魄 发表于 2020-8-15 08:16
因为if(cnt>=500)在死循环while(1)里,所以你单步执行要中断500次才能进入到if里面的程序,所以cnt在500 ...

我中断应该设置的是2ms进一次(不知道大佬能不能看一下代码) 但我debug运行时就一直指在if(cnt>=500)这行 我数码管也是第一个只在闪烁
ID:814418 发表于 2020-8-15 14:47
好像一直在中断函数里循环,没跳回去
ID:76471 发表于 2020-8-15 11:17
cnt有符号,正数范围不能超255
ID:814373 发表于 2020-8-15 11:10
死循环中断500次才到if里面的程序,挑不出来
ID:280512 发表于 2020-8-15 10:11
一直中断没出来.供参考
ID:807591 发表于 2020-8-15 09:26
说不定你的cnt 定义的是 8bit的变量 怎么可能大于500
ID:86926 发表于 2020-8-15 08:16
因为if(cnt>=500)在死循环while(1)里,所以你单步执行要中断500次才能进入到if里面的程序,所以cnt在500之前就会一直在判断,所以就一直在if这里,而中断会使程序跳转到中断函数,至于单步多少次就算你的中断计算次数了

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表