合泰单片机驱动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]