标题: 又有一个c语言的程序问题想问 [打印本页]

作者: Pikachu233    时间: 2024-2-5 13:43
标题: 又有一个c语言的程序问题想问
学习板上的数码管显示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 (1.2 MB, 下载次数: 78)

IMG_20240205_134035.jpg

作者: xiaobendan001    时间: 2024-2-5 18:29
上个帖子说了,你的num1在第一次等于20以后一直加知道65535之后才会再次出现==20的情况,所以减到59就需要等很久才能到58的
作者: Pikachu233    时间: 2024-2-6 10:24
xiaobendan001 发表于 2024-2-5 18:29
上个帖子说了,你的num1在第一次等于20以后一直加知道65535之后才会再次出现==20的情况,所以减到59就需要 ...

我理解了,并且通过实验验证了,是因为那个num1的函数没写到中断里面中断程序运行的时时序和主程序的有可能会有冲突
作者: yzw846562238    时间: 2024-2-6 12:59
Pikachu233 发表于 2024-2-6 10:24
我理解了,并且通过实验验证了,是因为那个num1的函数没写到中断里面中断程序运行的时时序和主程序的有可 ...

中断可能进了两三次了,你主程序才运行完一轮,对时序要求严格的函数,是需要放在中断里面的,但是中断里面也不能放太多东西,不然主程序没得跑了,都跑中断服务函数了。另外就是延时函数能不用就不用
作者: xiaobendan001    时间: 2024-2-6 13:04
Pikachu233 发表于 2024-2-6 10:24
我理解了,并且通过实验验证了,是因为那个num1的函数没写到中断里面中断程序运行的时时序和主程序的有可 ...

不是那样的,在你得到==20之后,要让他=0这样就从新开始了
作者: Pikachu233    时间: 2024-2-6 13:44
xiaobendan001 发表于 2024-2-6 13:04
不是那样的,在你得到==20之后,要让他=0这样就从新开始了

是的,要让它重新开始循环,不然会加很久
作者: yin9715    时间: 2024-2-6 13:53
进入死循环了,要让他重新启动
作者: Hephaestus    时间: 2024-2-8 03:09
看你下面是main()那么这段代码是中断处理程序,里面不要用for,也不要用delay()
作者: 1678065900    时间: 2024-2-27 13:39

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





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