找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1524|回复: 14
打印 上一主题 下一主题
收起左侧

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

[复制链接]
跳转到指定楼层
楼主
以前程序是从9999开始倒计时开始的,现在按下键,不是从9999开始计时的

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

51hei图片20220716221005.png

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

51hei图片20220716221109.png

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

51hei图片20220716221637.png

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

51hei图片20220716221656.png

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

51hei图片20220716221753.png

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

51hei图片20220716221903.png

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

51hei图片20220716222415.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:278457 发表于 2022-7-16 22:14 | 只看该作者
是9998开始的,这是什么毛病.
回复

使用道具 举报

板凳
ID:278457 发表于 2022-7-16 22:15 | 只看该作者
现在从9998或是9997开始计时.
回复

使用道具 举报

地板
ID:278457 发表于 2022-7-16 22:32 | 只看该作者
随机数倒计时
回复

使用道具 举报

5#
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
这样取数会不会更好一点儿
新手有说错不要见怪
回复

使用道具 举报

6#
ID:121859 发表于 2022-7-17 13:14 | 只看该作者
初始化时TR1=0,SEC=9999;按键后才TR1=1;就可以了
回复

使用道具 举报

7#
ID:698558 发表于 2022-7-17 17:20 | 只看该作者
本帖最后由 zhangxl 于 2022-7-17 17:25 编辑

viod servic_init(void)
{
  sec=9999;
     while(1)
     {
        取数
      }
}
应该这样吧,中断时时的在减sec值。我今天遇到了相同的情况。
回复

使用道具 举报

8#
ID:698558 发表于 2022-7-17 17:24 | 只看该作者
zhangxl 发表于 2022-7-17 17:20
viod servic_init(void)
{
  sec=9999;

这个可能不太对,你可已在调用Service_int()之前加上sec=9999;
回复

使用道具 举报

9#
ID:161164 发表于 2022-7-17 17:39 | 只看该作者

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

回复

使用道具 举报

10#
ID:1039802 发表于 2022-7-17 20:22 来自手机 | 只看该作者
lkc8210 发表于 2022-7-17 17:39

但是规范写法就这样
回复

使用道具 举报

11#
ID:824490 发表于 2022-7-19 16:49 | 只看该作者
这么多while(1),你确定代码不会陷死在里边,出不来吗?
回复

使用道具 举报

12#
ID:824490 发表于 2022-7-19 16:51 | 只看该作者
wei1130 发表于 2022-7-17 20:22
但是规范写法就这样

不!
While(1)是无条件循环。没有退出的条件,如果代码中没有相应的处理,很容易死在里边的。
回复

使用道具 举报

13#
ID:824490 发表于 2022-7-19 16:56 | 只看该作者
这代码似乎不大对,main()中没有大循环,却在键扫中加入while(1)。看成不明白。
回复

使用道具 举报

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

没事,这本来就是交流,取长补短
回复

使用道具 举报

15#
ID:278457 发表于 2022-8-6 17:20 | 只看该作者
zhangxl 发表于 2022-7-17 17:20
viod servic_init(void)
{
  sec=9999;

,一起努力
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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