找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1722|回复: 8
收起左侧

又有一个c语言的程序问题想问

[复制链接]
ID:1101371 发表于 2024-2-5 13:43 来自触屏版 | 显示全部楼层 |阅读模式
学习板上的数码管显示60然后是59,感觉是只执行了num2等于0,num2等于1,到了num2等于1就停了。然后我加了个if(num2等于1等于)
num2等于0,在那个switch语句后面for循环里面,然后学习板上的结果也不对。
把num2等于0放到那个第79行case1那句,break前面,也不太对。所有的程序在上个帖子上,根据实验结果来看就是for循环这段num2到1了没回到0。想问问大佬这段代码改怎么改?谢谢大家了!
IMG_20240205_134035.jpg
回复

使用道具 举报

ID:1109793 发表于 2024-2-5 18:29 | 显示全部楼层
上个帖子说了,你的num1在第一次等于20以后一直加知道65535之后才会再次出现==20的情况,所以减到59就需要等很久才能到58的
回复

使用道具 举报

ID:1101371 发表于 2024-2-6 10:24 来自触屏版 | 显示全部楼层
xiaobendan001 发表于 2024-2-5 18:29
上个帖子说了,你的num1在第一次等于20以后一直加知道65535之后才会再次出现==20的情况,所以减到59就需要 ...

我理解了,并且通过实验验证了,是因为那个num1的函数没写到中断里面中断程序运行的时时序和主程序的有可能会有冲突
回复

使用道具 举报

ID:458247 发表于 2024-2-6 12:59 | 显示全部楼层
Pikachu233 发表于 2024-2-6 10:24
我理解了,并且通过实验验证了,是因为那个num1的函数没写到中断里面中断程序运行的时时序和主程序的有可 ...

中断可能进了两三次了,你主程序才运行完一轮,对时序要求严格的函数,是需要放在中断里面的,但是中断里面也不能放太多东西,不然主程序没得跑了,都跑中断服务函数了。另外就是延时函数能不用就不用
回复

使用道具 举报

ID:1109793 发表于 2024-2-6 13:04 | 显示全部楼层
Pikachu233 发表于 2024-2-6 10:24
我理解了,并且通过实验验证了,是因为那个num1的函数没写到中断里面中断程序运行的时时序和主程序的有可 ...

不是那样的,在你得到==20之后,要让他=0这样就从新开始了
回复

使用道具 举报

ID:1101371 发表于 2024-2-6 13:44 来自触屏版 | 显示全部楼层
xiaobendan001 发表于 2024-2-6 13:04
不是那样的,在你得到==20之后,要让他=0这样就从新开始了

是的,要让它重新开始循环,不然会加很久
回复

使用道具 举报

ID:1110745 发表于 2024-2-6 13:53 | 显示全部楼层
进入死循环了,要让他重新启动
回复

使用道具 举报

ID:883242 发表于 2024-2-8 03:09 | 显示全部楼层
看你下面是main()那么这段代码是中断处理程序,里面不要用for,也不要用delay()
回复

使用道具 举报

ID:1110982 发表于 2024-2-27 13:39 | 显示全部楼层

中断处理函数的循环有问题
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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