找回密码
 立即注册

QQ登录

只需一步,快速开始

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

解决了DS1302时钟点按秒闪烁的问题,不用定时器也不用延时函数,只需函数内计数

[复制链接]
跳转到指定楼层
楼主
ID:796012 发表于 2024-3-8 13:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void md()/*秒点准确无误,不多不少,刚好亮灭60次*/
{
        unsigned int d,s,i;
        i=1500;/*亮点时长,晶振不同,数值不同*/
  if(TIME[0]%2==1)/*单秒*/
        {
                d++;
                if(d<i)
                {
     COM2_DC_L=dm[disp[9]]+0x80;
                }
                else
                {
                 COM2_DC_L=dm[disp[9]];
                }
        }
        if(TIME[0]%2==0)/*双秒*/
        {
    d=0;
          s++;
          if(s<i)
          {
     COM2_DC_L=dm[disp[9]]+0x80;
          }
          else
                {
                 COM2_DC_L=dm[disp[9]];
                }        
        }
          if(TIME[0]%2==1)/*单秒*/
        {
                s=0;/*因为时序问题,清零需要放在自加后面*/
        }
}

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:161164 发表于 2024-3-8 16:52 | 只看该作者
为啥不用定时器?
回复

使用道具 举报

板凳
ID:796012 发表于 2024-3-9 10:53 | 只看该作者
lkc8210 发表于 2024-3-8 16:52
为啥不用定时器?

这是在函数内计数了。只是不用另外设置定时器
回复

使用道具 举报

地板
ID:401564 发表于 2024-3-9 22:42 | 只看该作者
用处不大
定时器作为单片机常用功能之一,你肯定得学会用
一旦你会用了,封装成一个函数,后期的代码复制就行了
而对于时钟秒闪这种东西,0.8秒一次和1秒一次,其实区别不大,给人感觉都是"1秒"闪一次,差不多就行
而你这个方法,也没感觉比定时器好到哪里去,反而是增加了代码的逻辑,让代码更复杂而已
回复

使用道具 举报

5#
ID:213173 发表于 2024-3-10 06:41 | 只看该作者
玉萌业余发展 发表于 2024-3-9 10:53
这是在函数内计数了。只是不用另外设置定时器

用定时器设定一个时长,通常0.5s。当TIME[0]发生变化即触发闪秒。
回复

使用道具 举报

6#
ID:796012 发表于 2024-3-10 11:26 | 只看该作者
Y_G_G 发表于 2024-3-9 22:42
用处不大
定时器作为单片机常用功能之一,你肯定得学会用
一旦你会用了,封装成一个函数,后期的代码复制就 ...

哦。好吧
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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