📄 key.h
字号:
/**************************************************************************
THE KEY LIB
COPYRIGHT (c) 2008 BY CHENSS.
-- ALL RIGHTS RESERVED --
File Name: DISPLAY.H
Author: NET.XICP.CHENSS
Created: 2008/1/25
Modified: NO
Revision: 1.0
***************************************************************************/
#ifndef _KEY_H_
#define _KEY_H_
#include<reg52.h>
#include"buffer.h"
//#include"display.h"
//#define DELAY_TIME 1000
void keySET(void);
void keyADD(void);
void alarmCarry(void);
void keyNEXT(void);
void dealCarry(void);
void delay(uint);
//void initClock(void);
uchar nowP1;
void key(void)
{
//uchar nowP1;
dealCarry();
nowP1=P1;
nowP1&=0x07;
switch(nowP1)
{
case 0:
notADD=1;
notNEXT=1;
notSET=1;
if(keyIndex<10)
{
keyIndex=0;
//initD(15);
isFlick=0;
canReport=~canReport;
isFlicker=canReport;
timertemp[0]=88;
timertemp[1]=88;
timertemp[2]=88;
temp=timertemp;
nowP1=P1;
nowP1&=0x07;
while(nowP1==0x00)
{
nowP1=P1;
nowP1&=0x07;
}
isFlick=1;
}
break;
case 1:
notNEXT=1;
notSET=1;
if(keyIndex<10)
{
keyIndex=1;
temp=alarm3;
}
break;
case 2:
notADD=1;
notSET=1;
if(keyIndex<10)
{
keyIndex=2;
temp=alarm2;
}
break;
case 3: //SET键按下
if(notSET)
{
keySET();
}
notSET=0;
break;
case 4:
notADD=1;
notNEXT=1;
if(keyIndex<10)
{
keyIndex=4;
temp=alarm1;
}
break;
case 5: //NEXT键按下
if(notNEXT)
{
keyNEXT();
}
notNEXT=0;
break;
case 6: //ADD键按下
if(keyIndex==33¬ADD)
{
keyADD();
nowP1=P1;
nowP1&=0x07;
delay(15000);
}else if(keyIndex==33)
{
keyADD();
delay(1500);
}else if(notADD)
{
keyADD();
}
notADD=0;
break;
case 7: //无键按下
notSET=1;
notNEXT=1;
notADD=1;
if(keyIndex<10)
{
keyIndex=7;
temp=time;
}else if(keyIndex==33)
{
canFlickerSet=1;
}
break;
}
}
void keySET(void)
{
switch(keyIndex)
{
case 7: //已经过无键
keyIndex=30; //开始进行设置
timer[0]=0;
timer[1]=0;
timer[2]=0;
temp=timer; //记时器
isFlick=0;
isFlicker=1;
//EA=1;
//ET2=1;
//PT2=0;
//TH2=0xec;
//TL2=0x78; //准备好记时器
//TR2=0;
//delay(DELAY_TIME); //延时
break;
case 30:
keyIndex=33; //开始进行时钟的设置
isFlickerSet=1;
startTimer=0;
isFlick=1;
isLongTime=0;
timer[0]=0;
timer[1]=0;
timer[2]=0;
temp=time;
sourceIndex=0;
flickerIndex=2; //闪烁位
//delay(DELAY_TIME);
break;
case 33: //结束设置
keyIndex=8;
isFlickerSet=0; //不再闪烁
temp=time; //显示时钟
//delay(DELAY_TIME);
break;
}
}
void keyADD(void)
{
switch(keyIndex)
{
case 30:
startTimer=~startTimer;
isFlick=~isFlick;
isFlicker=1;
//delay(DELAY_TIME);
break;
case 33:
canFlickerSet=0;
isFlickerSet=0;
switch(sourceIndex)
{
case 0:
if(flickerIndex==2)
{
if(time[2]<30)
{
time[2]=0;
}else
{
time[2]=0;
time[1]+=1;
isCarry=1;
carry();
}
}else
{
time[flickerIndex]+=1;
carry();
}
break;
case 1:
temp[flickerIndex]+=1;
carry();
break;
case 2:
temp[flickerIndex]+=1;
carry();
break;
case 3:
alarmCarry();
break;
case 4:
alarmCarry();
break;
case 5:
alarmCarry();
break;
}
//delay(200);
//delayADD=1200;
break;
default:
temp=week;
break;
}
}
void alarmCarry(void)
{
switch(flickerIndex)
{
case 2:
if(temp[2]==30)
{
temp[2]=0;
}else
{
temp[2]+=5;
}
break;
case 1:
if(temp[1]==59)
{
temp[1]=0;
}else
{
temp[1]+=1;
}
break;
case 0:
if(temp[0]==23)
{
temp[0]=0;
}else
{
temp[0]+=1;
}
break;
}
}
void keyNEXT(void)
{
switch(keyIndex)
{
case 30:
if(temp==timertemp)
{
temp=timer;
}else if(!startTimer)
{
timer[0]=0;
timer[1]=0;
timer[2]=0;
isLongTime=0;
}else
{
timertemp[0]=timer[0];
timertemp[1]=timer[1];
timertemp[2]=timer[2];
temp=timertemp;
}
//delay(DELAY_TIME);
break;
case 33:
isFlickerSet=1;
if(sourceIndex==5&flickerIndex==0)
{
sourceIndex=0;
flickerIndex=2;
}else if(flickerIndex==0)
{
sourceIndex+=1;
flickerIndex=2;
}else if(sourceIndex==2)
{
sourceIndex+=1;
flickerIndex=2;
}else
{
flickerIndex-=1;
}
temp=source[sourceIndex];
//delay(DELAY_TIME);
break;
default :
keyIndex=5;
temp=date;
}
}
void dealCarry(void)
{
if(isCarry==1)
{
carry();
isCarry=0;
}
if(isTimerCarry==1)
{
TimerCarry();
isTimerCarry=0;
}
}
void delay(uint dx)
{
//uchar nowP1;
while(dx>1)
{
nowP1=P1;
nowP1&=0x07;
if(nowP1==0x07)
{
break;
}
dx--;
}
}
//***********************************************************************
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -