标题: 单片机计时程序有点小毛病! [打印本页]

作者: shenqiwei    时间: 2022-7-16 22:13
标题: 单片机计时程序有点小毛病!
以前程序是从9999开始倒计时开始的,现在按下键,不是从9999开始计时的

51hei图片20220716221005.png (8.91 KB, 下载次数: 30)

51hei图片20220716221005.png

51hei图片20220716221109.png (9.21 KB, 下载次数: 43)

51hei图片20220716221109.png

51hei图片20220716221637.png (31.93 KB, 下载次数: 42)

51hei图片20220716221637.png

51hei图片20220716221656.png (4.41 KB, 下载次数: 45)

51hei图片20220716221656.png

51hei图片20220716221753.png (7.9 KB, 下载次数: 37)

51hei图片20220716221753.png

51hei图片20220716221903.png (19.11 KB, 下载次数: 40)

51hei图片20220716221903.png

51hei图片20220716222415.png (7.6 KB, 下载次数: 43)

51hei图片20220716222415.png

作者: shenqiwei    时间: 2022-7-16 22:14
是9998开始的,这是什么毛病.
作者: shenqiwei    时间: 2022-7-16 22:15
现在从9998或是9997开始计时.
作者: shenqiwei    时间: 2022-7-16 22:32
随机数倒计时
作者: zhangxl    时间: 2022-7-17 11:44
我是新手,别的没看明白,没看到楼主对sec赋值,不知道是不是赋值的问题?另外
LEDBuf[0]=sec/1000   LEDBuf[1]=sec%1000/100
LEDBuf[2]=sec%100/10   LEDBuf[3]=sec%100
这样取数会不会更好一点儿
新手有说错不要见怪
作者: zhxiufan    时间: 2022-7-17 13:14
初始化时TR1=0,SEC=9999;按键后才TR1=1;就可以了

作者: zhangxl    时间: 2022-7-17 17:20
本帖最后由 zhangxl 于 2022-7-17 17:25 编辑

viod servic_init(void)
{
  sec=9999;
     while(1)
     {
        取数
      }
}
应该这样吧,中断时时的在减sec值。我今天遇到了相同的情况。
作者: zhangxl    时间: 2022-7-17 17:24
zhangxl 发表于 2022-7-17 17:20
viod servic_init(void)
{
  sec=9999;

这个可能不太对,你可已在调用Service_int()之前加上sec=9999;
作者: lkc8210    时间: 2022-7-17 17:39

  1. While(1)
  2. {
  3.         While(1)
  4.         {
  5.                 While(1)
  6.                 {
  7.                         //这写法令人极度不适
  8.                 }
  9.         }
  10. }
复制代码


作者: wei1130    时间: 2022-7-17 20:22
lkc8210 发表于 2022-7-17 17:39

但是规范写法就这样
作者: 名字不是重点    时间: 2022-7-19 16:49
这么多while(1),你确定代码不会陷死在里边,出不来吗?
作者: 名字不是重点    时间: 2022-7-19 16:51
wei1130 发表于 2022-7-17 20:22
但是规范写法就这样

不!
While(1)是无条件循环。没有退出的条件,如果代码中没有相应的处理,很容易死在里边的。
作者: 名字不是重点    时间: 2022-7-19 16:56
这代码似乎不大对,main()中没有大循环,却在键扫中加入while(1)。看成不明白。
作者: shenqiwei    时间: 2022-8-6 17:19
zhangxl 发表于 2022-7-17 11:44
我是新手,别的没看明白,没看到楼主对sec赋值,不知道是不是赋值的问题?另外
LEDBuf[0]=sec/1000   LEDB ...

没事,这本来就是交流,取长补短
作者: shenqiwei    时间: 2022-8-6 17:20
zhangxl 发表于 2022-7-17 17:20
viod servic_init(void)
{
  sec=9999;

,一起努力




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