找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1742|回复: 14
收起左侧

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

[复制链接]
ID:814295 发表于 2020-8-14 23:02 | 显示全部楼层 |阅读模式
新人请教一下 请问这段代码哪里有错误 我用debug运行了一下发现箭头一直在if(cnt>=500)这行 在群里问了没有得到满意的解答 请问有没有大佬能告知一下是哪里出错了
U31PEZGK_1F3V{E0A8DQR)X.png
{F788{`5G0CUPA_[0NB8A9S.png
回复

使用道具 举报

ID:86926 发表于 2020-8-15 08:16 | 显示全部楼层
因为if(cnt>=500)在死循环while(1)里,所以你单步执行要中断500次才能进入到if里面的程序,所以cnt在500之前就会一直在判断,所以就一直在if这里,而中断会使程序跳转到中断函数,至于单步多少次就算你的中断计算次数了
回复

使用道具 举报

ID:807591 发表于 2020-8-15 09:26 | 显示全部楼层
说不定你的cnt 定义的是 8bit的变量 怎么可能大于500
回复

使用道具 举报

ID:280512 发表于 2020-8-15 10:11 | 显示全部楼层
一直中断没出来.供参考
回复

使用道具 举报

ID:814373 发表于 2020-8-15 11:10 | 显示全部楼层
死循环中断500次才到if里面的程序,挑不出来
回复

使用道具 举报

ID:76471 发表于 2020-8-15 11:17 来自手机 | 显示全部楼层
cnt有符号,正数范围不能超255
回复

使用道具 举报

ID:814418 发表于 2020-8-15 14:47 | 显示全部楼层
好像一直在中断函数里循环,没跳回去
回复

使用道具 举报

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: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:36 | 显示全部楼层
青桑叶 发表于 2020-8-15 10:11
一直中断没出来.供参考

请问大佬我中断哪里写错了
回复

使用道具 举报

ID:814561 发表于 2020-8-16 08:19 | 显示全部楼层
一直在中断函数里循环
回复

使用道具 举报

ID:700528 发表于 2020-8-16 11:31 | 显示全部楼层
while (表达式),表达式始终为true,所以一直循环
回复

使用道具 举报

ID:805376 发表于 2020-8-16 12:43 | 显示全部楼层
看上去没啥大问题 你的P1和数码管是怎么接的?
回复

使用道具 举报

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:76471 发表于 2020-8-17 08:00 来自手机 | 显示全部楼层
ベアトリス 发表于 2020-8-15 23:34
unsigned int cnt不是0到65525吗?

啊,我看错了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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