找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

单片机计时程序有点小毛病!

查看数: 2654 | 评论数: 14 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-7-16 22:13

正文摘要:

以前程序是从9999开始倒计时开始的,现在按下键,不是从9999开始计时的

回复

ID:278457 发表于 2022-8-6 17:20
zhangxl 发表于 2022-7-17 17:20
viod servic_init(void)
{
  sec=9999;

,一起努力
ID:278457 发表于 2022-8-6 17:19
zhangxl 发表于 2022-7-17 11:44
我是新手,别的没看明白,没看到楼主对sec赋值,不知道是不是赋值的问题?另外
LEDBuf[0]=sec/1000   LEDB ...

没事,这本来就是交流,取长补短
ID:824490 发表于 2022-7-19 16:56
这代码似乎不大对,main()中没有大循环,却在键扫中加入while(1)。看成不明白。
ID:824490 发表于 2022-7-19 16:51
wei1130 发表于 2022-7-17 20:22
但是规范写法就这样

不!
While(1)是无条件循环。没有退出的条件,如果代码中没有相应的处理,很容易死在里边的。
ID:824490 发表于 2022-7-19 16:49
这么多while(1),你确定代码不会陷死在里边,出不来吗?
ID:1039802 发表于 2022-7-17 20:22
lkc8210 发表于 2022-7-17 17:39

但是规范写法就这样
ID:161164 发表于 2022-7-17 17:39

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

ID:698558 发表于 2022-7-17 17:24
zhangxl 发表于 2022-7-17 17:20
viod servic_init(void)
{
  sec=9999;

这个可能不太对,你可已在调用Service_int()之前加上sec=9999;
ID:698558 发表于 2022-7-17 17:20
本帖最后由 zhangxl 于 2022-7-17 17:25 编辑

viod servic_init(void)
{
  sec=9999;
     while(1)
     {
        取数
      }
}
应该这样吧,中断时时的在减sec值。我今天遇到了相同的情况。
ID:121859 发表于 2022-7-17 13:14
初始化时TR1=0,SEC=9999;按键后才TR1=1;就可以了
ID:698558 发表于 2022-7-17 11:44
我是新手,别的没看明白,没看到楼主对sec赋值,不知道是不是赋值的问题?另外
LEDBuf[0]=sec/1000   LEDBuf[1]=sec%1000/100
LEDBuf[2]=sec%100/10   LEDBuf[3]=sec%100
这样取数会不会更好一点儿
新手有说错不要见怪
ID:278457 发表于 2022-7-16 22:32
随机数倒计时
ID:278457 发表于 2022-7-16 22:15
现在从9998或是9997开始计时.
ID:278457 发表于 2022-7-16 22:14
是9998开始的,这是什么毛病.

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

Powered by 单片机教程网

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