新人求教,如何实现万年历电子闹钟,当闹钟响的时候,时钟要任然走。

[复制链接]
 楼主| song757747969 发表于 2013-12-11 23:30 | 显示全部楼层 |阅读模式
我设计了一个带闹钟的万年历,但是但闹钟响的时候,时钟就不走了,我尝试了用中断,可是单片机只能一次用一个中断,用delay函数就得要把delay函数执行完之后,时钟才走,希望各位能给点指导。谢谢!
hopewise 发表于 2013-12-12 08:15 | 显示全部楼层
//**************时间管理********************
void time_man(void)
{   
          if(f_yuyue_on==1)                                                                                                           //预约功能
             {         
                if((hour==hour1)&&(minute==minute1)&&(secs==0))          
            {
                                  L_dio=ON;                                                                                   //预约时间到,则接通负载
                                  N_dio=ON;
                                  f_heat_on=1;                                                                                           //显示加热动态图标
                                  buz_set(5,5100);                                                                                   //并响5声
                                  menu_set=0;
                                  tsec_key=0;
                        }  
                        else  if((hour==hour2)&&(minute==minute2)&&(secs==0))
            {                                                                                     
                                  L_dio=OFF;                                                                                           //工作时间到,则关闭负载
                                  N_dio=OFF;
                                  if(f_heat_on==1) buz_set(5,100);                                                   //并响5声
                                  f_heat_on=0;                                                                                           //关闭加热动态图标显示
                                  f_yuyue_on=0;
                                  yuyue_led=OFF;
                        }  
         }       
             
}          
ayb_ice 发表于 2013-12-12 08:16 | 显示全部楼层
根本没有状态机的概念
hopewise 发表于 2013-12-12 08:24 | 显示全部楼层
这是时间轮的程序结构,比如主周期为10ms,在另1个实时时钟管理函数计算时钟(包含hour,minute和secs).hour1,minute1和hour2,minute2分别是设定的预约和定时
 楼主| song757747969 发表于 2013-12-12 13:51 | 显示全部楼层
hopewise 发表于 2013-12-12 08:24
这是时间轮的程序结构,比如主周期为10ms,在另1个实时时钟管理函数计算时钟(包含hour,minute和secs).hour1,m ...

新人听不懂啊 ,
 楼主| song757747969 发表于 2013-12-12 13:51 | 显示全部楼层
ayb_ice 发表于 2013-12-12 08:16
根本没有状态机的概念

确实没有,慢慢学习中
 楼主| song757747969 发表于 2013-12-12 13:54 | 显示全部楼层
hopewise 发表于 2013-12-12 08:15
//**************时间管理********************
void time_man(void)
{   

但是在响5声的同时,时钟应该也不会走啊
ayb_ice 发表于 2013-12-12 13:56 | 显示全部楼层
song757747969 发表于 2013-12-12 13:54
但是在响5声的同时,时钟应该也不会走啊

想想高速公路上的车流就明白了
hopewise 发表于 2013-12-14 08:09 | 显示全部楼层
时间轮的程序结构相当于电脑操作系统,想一下电脑是怎么工作的---我们一边可以看电影,一边可以打字编写文件,一边画PCB板等等,好像它们是同时执行的,其实不是这样的,某个时刻只能执行某个动作,时间轮的程序结构轮流执行所有的子函数,比如按键扫描,接着显示函数,然后时间管理........,下面是个主程序结构.我自己搞的电子钟,有时间显示,闹种,预约,定时,温度显示(用RTC),误差0.5秒/每天,没有进行时间校正操作.本论坛也有具体的完整程序例子,好像是啥"我的第1次调试经厉"
while(1)
{
           if(t_us >= 80)                                  //10ms
           {
                        t_us = 0;
                       I2CReadDate_SD2405();            //读时钟芯片内容(时间)
               key_scan();                             //按键扫描
             display_man();                            //显示管理
             key_deal();                             //按键处理
             translate();                             //共阴数据转换成共阳数据再显示
                display(show_LED2);               //显示驱动
              buz_man();                           //蜂鸣器管理
              time_man();                    //时间管理
              led_man();                             //led指示灯管理
              ReadADC();                     //读AD值
              ADC_Filter();                     //AD滤波
              rtc_man();                             //实时时钟管理
           }
     }
adef_13 发表于 2013-12-14 10:22 | 显示全部楼层
学习一下
brucedon 发表于 2015-12-9 12:48 | 显示全部楼层
hopewise 发表于 2013-12-14 08:09
时间轮的程序结构相当于电脑操作系统,想一下电脑是怎么工作的---我们一边可以看电影,一边可以打字编写文件, ...

有没有这方面的完整程序,或者资料,正想学习这方面的知识呢,以前听老师说过,用单片机的时间片轮转模拟多任务的环境,,,,求资料!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

26

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部