admin 发表于 2020-7-21 09:31:25

合泰单片机驱动DS1302时钟芯片 源代码


void main()
{
        u8 secbak=0;
        bit workmode=0;
        bit setoption=0;
        bit flash=0;
       
        _wdtc=0xa8;//关闭看门狗
       
        _csel=0;//比较器共用脚C+ 和C-用作io
        _cos=1;//设置pa3管脚为IO,而不是比较器输出
        _acerl=0;//管脚复用功能,不选择为AD
       
        keyinit();
        lcdinit();
        DS1302_init();
        _tbc=0xc4;//时基信号tbc=fsys/4溢出周期:t=2^12/tbc=2.048ms
        _tb0e=1;//允许时基中断
        _emi=1;//打开总中断
       

       
       
       
        while(1)
        {
               
                if(workmode==0)//正常显示模式
                {
                        DS1302_ReadTime();
                        dispnum(hour*100+min);
                        if(sec!=secbak)
                        {
                                secbak=sec;
                                flash=~flash;
                                dispmark(SECPOINT,flash);               
                        }       
                }
                else//设置模式
                {
                        if(f500ms)
                        {
                                flash=~flash;       
                                f500ms=0;
                        }
                        if(setoption==0)
                        {
                                if(flash)
                                disphour(hour);       
                                else
                                disphour(0xff);       
                        }
                        else
                        {
                                if(flash)
                                dispmin(min);       
                                else
                                dispmin(0xff);                       
                        }
                       
                       
                       
                }
               

                keyscan();
                if(KeyPress==1)//短按
                {
                        switch(KeyVal)
                        {
                                case KEY1://进入&退出设置
                                        workmode=~workmode;
                                        if(workmode==0)
                                        {
                                                DS1302_WriteTime();       
                                        }
                                break;       
                                case KEY2://切换设置项
                                        if(workmode)
                                        {
                                                setoption=~setoption;
                                        }
                               
                                break;
                                case KEY3://+
                                        if(workmode)
                                        {
                                                if(setoption==0)
                                                {
                                                        if(++hour>23)hour=0;       
                                                }
                                                else
                                                {
                                                        if(++min>59)min=0;       
                                                }
                                               
                                        }
                               
                                break;
                                case KEY4://-
                                        if(workmode)
                                        {
                                                if(setoption==0)
                                                {
                                                        if(--hour==0xff)hour=23;       
                                                }
                                                else
                                                {
                                                        if(--min==0xff)min=59;       
                                                }
                                               
                                        }
                                break;
                        }
                       
                        KeyPress=0;
                }
               
                delay_ms(10);
        }
}




页: [1]
查看完整版本: 合泰单片机驱动DS1302时钟芯片 源代码