📄 main.c
字号:
#include<8279setting.h>
#include<reg52.h>
#include<ABSACC.h>
#include<clock.h>
#include<memerycheck.h>
#define uchar unsigned char
#define uint unsigned int
uchar idata function=0,updata=1;//0-正常记时间 1-设定时间
uchar idata clock_seting[6]={10,10,10,10,10,10};//装载当前时间和设定时间
uchar idata clock_curent[6]={1,2,3,4,0,1};//装载当前时间和设定时间
uchar idata postion=5;
uchar idata half=0;
void dispsettingtime(void);//显示时间
void dispcurrenttime(void);//显示时间
void operate(uchar key);//按键操作
void inputtime(uchar key);//修改时间
void cancel(void );//取消输入
void sure(void);//确认输入
main()
{
init_8279();
IE=0x00;/*关中断*/
IT0=1; /*选择负跳变触发*/
TMOD=0X01;/*计数模式*/
IP=0X02; /*优先级*/
TL0=0XAF;//初值0.05秒
TH0=0X3C;
SP=0X60;
IE=0x83;/*开中断*/
TR0=1;
while(1)
{
if(updata==1)
{
add_second(clock_curent);
updata=0;
if(function==0)
dispcurrenttime();
}
}
}
void service_second(void) interrupt 1 /*外部中断置标志*/
{
TR0=0;
TL0=0XAF;
TH0=0X3C;
TR0=1;
half++;
if(half==20)
{
updata=1;
half=0;
}
}
void service_int0(void) interrupt 0 /*外部中断置标志*/
{
uchar key;
key=keyin_8279();
operate(key);
}
void operate(uchar key)//按键操作
{
switch(key)
{
case 'a': function=(++function)%2;
if(function==1)
dispsettingtime();
else
dispcurrenttime();
break;
case 'b': sure(); break;
case 'c': cancel(); break;
case 'd': break;
case 'e': break;
case 'f': break;
default : if(function==1) inputtime(key);break;
}
}
void sure(void)
{
uchar i;
if(function==1)
{ postion++;
if(postion!=6)
{
i=0;
while(i<postion)
{clock_curent[i]=0;i++;}
while(i<6)
{clock_curent[i]=clock_seting[i];i++;}
}
for(i=0;i<6;i++)
clock_seting[i]=10;
postion=5;
function=0;
}
}
void cancel(void)
{
uchar i;
dispcurrenttime();
for(i=0;i<6;i++)
clock_seting[i]=10;
function=0;
}
void inputtime(uchar key)//修改时间
{
switch(postion)
{
case 5: if(key<=2)
{clock_seting[5]=key;postion--;}
break;
case 4: if((clock_seting[5]==2)&&(key>4))
;
else
{clock_seting[4]=key;postion--;}
break;
case 3:
case 1:
if(key<6)
{clock_seting[postion]=key;postion--;}
break;
case 2:
case 0: clock_seting[postion]=key; postion--;
break;
}
dispsettingtime();
}
void dispcurrenttime(void)//显示时间
{
if(clock_curent[5]==0)
disp(7,11); //首位0消隐
else
disp(7,clock_curent[5]);//小时
disp(6,clock_curent[4]);
disp(5,10);
disp(4,clock_curent[3]);//分钟
disp(3,clock_curent[2]);
disp(2,10);
disp(1,clock_curent[1]);//秒钟
disp(0,clock_curent[0]);
}
void dispsettingtime(void)//显示时间
{
disp(7,clock_seting[5]);
disp(6,clock_seting[4]);
disp(5,10);
disp(4,clock_seting[3]);//分钟
disp(3,clock_seting[2]);
disp(2,10);
disp(1,clock_seting[1]);//秒钟
disp(0,clock_seting[0]);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -