只发布了主函数的内容
其余的会上传资源
#include "include.h"
uchar jiemian,kbd_num,time=1,led=0xff,jidian=0x00;
uint wendu,wencan=23,ji_flag=0;
bit mode;
void Delay100ms() //@12.000MHz
{
unsigned char i, j, k;
_nop_();
_nop_();
i = 5;
j = 144;
k = 71;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void Delay1000ms() //@12.000MHz
{
unsigned char i, j, k;
_nop_();
_nop_();
i = 46;
j = 153;
k = 245;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void read_()
{
if(flag_500ms>=250)
{
flag_500ms=0;
wendu=DS18b20_read();
}
if(flag_100ms>=50)
{
flag_100ms=0;
DS1302_read();
}
}
void kbd_scan()
{
kbd_num=kbd_read();
switch(kbd_num)
{
case 1:time=1;break;
case 12:
jiemian++;
if(jiemian>=3)
jiemian=0;
break;
case 13:
if(mode==0) {mode=1;}
else if(mode==1) {mode=0;}
break;
case 16:
if(jiemian==2)
{
if(wencan<99)
wencan++;
else
wencan=10;
}
break;
case 17:
if(jiemian==2)
{
if(wencan>10)
wencan--;
else
wencan=99;
}
else if(jiemian==1)
{
time=0;
}
break;
break;
default :
break;
}
}
void Jm()
{
if(jiemian==0)
{
setsmgdat(21,1,20,20,20,wendu/1000,wendu%1000/100+10,wendu%100/10);
}
else if(jiemian==1)
{
if(time==0)
setsmgdat(21,2,20,ds1302_hex[12],ds1302_hex[13],22,ds1302_hex[14],ds1302_hex[15]);
else if(time==1)
setsmgdat(21,2,20,ds1302_hex[10],ds1302_hex[11],22,ds1302_hex[12],ds1302_hex[13]);
}
else if(jiemian==2)
{
setsmgdat(21,3,20,20,20,20,wencan/10,wencan%10);
}
}
void other()
{
if(mode==0)
{
led=0xfd;
Delay1000ms();
if(wendu>wencan*100)
{
jidian=0xff;
led=0xfb;
Delay100ms();
led=0xff;
}
else
{
jidian=0x00;
led=0xff;
}
}
else if(mode==1)
{
if(ds1302_hex[12]==0&&ds1302_hex[13]==0&&ds1302_hex[14]==0&&ds1302_hex[15]==0)
{
jidian=0xff;
led=0xfe;
ji_flag++;
if(ji_flag>5000)
{
ji_flag=0;
led=0xff;
jidian=0x00;
}
}
else
{
jidian=0x00;
}
}
}
void allinit()
{
P0=0xff;HC_138(4);
P0=0x00;HC_138(5);
P0=0xff;HC_138(6);
P0=0xff;HC_138(7);
Timer2Init();
DS1302_init();
}
void main()
{
allinit();
while(1)
{
kbd_scan();
read_();
Jm();
other();
}
}