📄 key.c
字号:
#define key_c
#include "main.h"
void key_scan(void)
{
if(0==(in_look_date()))
{
display_date();
}
else if(0==(in_look_temperature()))
{
display_temperature();
}
else if(0==(in_look_timer()))
{
do{
flash_control=0x01;
display_timer(1,timer0_hour,timer0_minute);
if(0==(in_shift())) key_delay();
}while(in_shift());
do{
flash_control=0x01;
display_timer(2,timer1_hour,timer1_minute);
if(0==(in_shift())) key_delay();
}while(in_shift());
do{
flash_control=0x01;
display_timer(3,timer2_hour,timer2_minute);
if(0==(in_shift())) key_delay();
}while(in_shift());
do{
flash_control=0x01;
display_timer(4,timer3_hour,timer3_minute);
if(0==(in_shift())) key_delay();
}while(in_shift());
do{
flash_control=0x01;
display_timer(5,timer4_hour,timer4_minute);
if(0==(in_shift())) key_delay();
}while(in_shift());
do{
flash_control=0x01;
display_timer(6,timer5_hour,timer5_minute);
if(0==(in_shift())) key_delay();
}while(in_shift());
}
else if(second<5) display_temperature();
else if(second<10) display_date();
else display_time();
if(0==(in_set_time()))
{
//年
do{
//年个位
do{
flash_control=0x80;
display_year();
if(0==(in_add())) key_delay();
if(0==(in_add()))
{
year++;
if((year&0x0f)>=0x0a) year&=0xf0;
}
if(0==(in_shift())) key_delay();
}while(in_shift());
//年十位
do{
flash_control=0x40;
display_year();
if(0==(in_add())) key_delay();
if(0==(in_add()))
{
year+=0x10;
if((year&0xf0)>=0xa0) year&=0x0f;
}
if(0==(in_shift())) key_delay();
}while(in_shift());
}while(in_shift());
//月-日-周
do{
//周
do{
flash_control=0x80;
display_date();
if(0==(in_add())) key_delay();
if(0==(in_add()))
{
week++;
if(week>=0x08) week=0;
}
if(0==(in_shift())) key_delay();
}while(in_shift());
//日个位
do{
flash_control=0x10;
display_date();
if(0==(in_add())) key_delay();
if(0==(in_add()))
{
day++;
if((day&0x0f)>=0x0a) day&=0xf0;
}
if(0==(in_shift())) key_delay();
}while(in_shift());
//日十位
do{
flash_control=0x08;
display_date();
if(0==(in_add())) key_delay();
if(0==(in_add()))
{
day+=0x10;
if((day&0xf0)>=0x40) day&=0x0f;
}
if(0==(in_shift())) key_delay();
}while(in_shift());
//月个位
do{
flash_control=0x02;
display_date();
if(0==(in_add())) key_delay();
if(0==(in_add()))
{
month++;
if((month&0x0f)>=0x0a) month&=0xf0;
}
if(0==(in_shift())) key_delay();
}while(in_shift());
//月十位
do{
flash_control=0x01;
display_date();
if(0==(in_add())) key_delay();
if(0==(in_add()))
{
month+=0x10;
if((month&0xf0)>=0x20) month&=0x0f;
}
if(0==(in_shift())) key_delay();
}while(in_shift());
}while(in_shift());
//时-分-秒
do{
//秒个位
do{
flash_control=0x80;
display_time();
if(0==(in_add())) key_delay();
if(0==(in_add()))
{
second++;
if((second&0x0f)>=0x0a) second&=0xf0;
}
if(0==(in_shift())) key_delay();
}while(in_shift());
//秒十位
do{
flash_control=0x40;
display_time();
if(0==(in_add())) key_delay();
if(0==(in_add()))
{
second+=0x10;
if((second&0xf0)>=0x60) second&=0x0f;
}
if(0==(in_shift())) key_delay();
}while(in_shift());
//分个位
do{
flash_control=0x10;
display_time();
if(0==(in_add())) key_delay();
if(0==(in_add()))
{
minute++;
if((minute&0x0f)>=0x0a) minute&=0xf0;
}
if(0==(in_shift())) key_delay();
}while(in_shift());
//分十位
do{
flash_control=0x08;
display_time();
if(0==(in_add())) key_delay();
if(0==(in_add()))
{
minute+=0x10;
if((minute&0xf0)>=0x60) minute&=0x0f;
}
if(0==(in_shift())) key_delay();
}while(in_shift());
//时个位
do{
flash_control=0x02;
display_time();
if(0==(in_add())) key_delay();
if(0==(in_add()))
{
hour++;
if((hour&0x0f)>=0x0a) hour&=0xf0;
}
if(0==(in_shift())) key_delay();
}while(in_shift());
//时十位
do{
flash_control=0x01;
display_time();
if(0==(in_add())) key_delay();
if(0==(in_add()))
{
hour+=0x10;
if((hour&0xf0)>=0x30) hour&=0x0f;
}
if(0==(in_ok())) key_delay();
}while(in_ok());
}while(in_ok());
ds1302_write_time();
}
if(0==(in_set_timer()))
{
//timer1
//分个位
do{
flash_control=0x80;
display_timer(1,timer0_hour,timer0_minute);
if(0==(in_add())) key_delay();
if(0==(in_add()))
{
timer0_minute++;
if((timer0_minute&0x0f)>=0x0a) timer0_minute&=0xf0;
}
if(0==(in_shift())) key_delay();
}while(in_shift());
//分十位
do{
flash_control=0x40;
display_timer(1,timer0_hour,timer0_minute);
if(0==(in_add())) key_delay();
if(0==(in_add()))
{
timer0_minute+=0x10;
if((timer0_minute&0xf0)>=0x60) timer0_minute&=0x0f;
}
if(0==(in_shift())) key_delay();
}while(in_shift());
//时个位
do{
flash_control=0x10;
display_timer(1,timer0_hour,timer0_minute);
if(0==(in_add())) key_delay();
if(0==(in_add()))
{
timer0_hour++;
if((timer0_hour&0x0f)>=0x0a) timer0_hour&=0xf0;
}
if(0==(in_shift())) key_delay();
}while(in_shift());
//时十位
do{
flash_control=0x08;
display_timer(1,timer0_hour,timer0_minute);
if(0==(in_add())) key_delay();
if(0==(in_add()))
{
timer0_hour+=0x10;
if((timer0_hour&0xf0)>=0x30) timer0_hour&=0x0f;
}
if(0==(in_shift())) key_delay();
}while(in_shift());
eeprom_write_byte((uchar *)(timer0_address+0),timer0_hour);
eeprom_write_byte((uchar *)(timer0_address+1),timer0_minute);
//timer2
//分个位
do{
flash_control=0x80;
display_timer(2,timer1_hour,timer1_minute);
if(0==(in_add())) key_delay();
if(0==(in_add()))
{
timer1_minute++;
if((timer1_minute&0x0f)>=0x0a) timer1_minute&=0xf0;
}
if(0==(in_shift())) key_delay();
}while(in_shift());
//分十位
do{
flash_control=0x40;
display_timer(2,timer1_hour,timer1_minute);
if(0==(in_add())) key_delay();
if(0==(in_add()))
{
timer1_minute+=0x10;
if((timer1_minute&0xf0)>=0x60) timer1_minute&=0x0f;
}
if(0==(in_shift())) key_delay();
}while(in_shift());
//时个位
do{
flash_control=0x10;
display_timer(2,timer1_hour,timer1_minute);
if(0==(in_add())) key_delay();
if(0==(in_add()))
{
timer1_hour++;
if((timer1_hour&0x0f)>=0x0a) timer1_hour&=0xf0;
}
if(0==(in_shift())) key_delay();
}while(in_shift());
//时十位
do{
flash_control=0x08;
display_timer(2,timer1_hour,timer1_minute);
if(0==(in_add())) key_delay();
if(0==(in_add()))
{
timer1_hour+=0x10;
if((timer1_hour&0xf0)>=0x30) timer1_hour&=0x0f;
}
if(0==(in_shift())) key_delay();
}while(in_shift());
eeprom_write_byte((uchar *)(timer1_address+0),timer1_hour);
eeprom_write_byte((uchar *)(timer1_address+1),timer1_minute);
//timer3
//分个位
do{
flash_control=0x80;
display_timer(3,timer2_hour,timer2_minute);
if(0==(in_add())) key_delay();
if(0==(in_add()))
{
timer2_minute++;
if((timer2_minute&0x0f)>=0x0a) timer2_minute&=0xf0;
}
if(0==(in_shift())) key_delay();
}while(in_shift());
//分十位
do{
flash_control=0x40;
display_timer(3,timer2_hour,timer2_minute);
if(0==(in_add())) key_delay();
if(0==(in_add()))
{
timer2_minute+=0x10;
if((timer2_minute&0xf0)>=0x60) timer2_minute&=0x0f;
}
if(0==(in_shift())) key_delay();
}while(in_shift());
//时个位
do{
flash_control=0x10;
display_timer(3,timer2_hour,timer2_minute);
if(0==(in_add())) key_delay();
if(0==(in_add()))
{
timer2_hour++;
if((timer2_hour&0x0f)>=0x0a) timer2_hour&=0xf0;
}
if(0==(in_shift())) key_delay();
}while(in_shift());
//时十位
do{
flash_control=0x08;
display_timer(3,timer2_hour,timer2_minute);
if(0==(in_add())) key_delay();
if(0==(in_add()))
{
timer2_hour+=0x10;
if((timer2_hour&0xf0)>=0x30) timer2_hour&=0x0f;
}
if(0==(in_shift())) key_delay();
}while(in_shift());
eeprom_write_byte((uchar *)(timer2_address+0),timer2_hour);
eeprom_write_byte((uchar *)(timer2_address+1),timer2_minute);
//timer4
//分个位
do{
flash_control=0x80;
display_timer(4,timer3_hour,timer3_minute);
if(0==(in_add())) key_delay();
if(0==(in_add()))
{
timer3_minute++;
if((timer3_minute&0x0f)>=0x0a) timer3_minute&=0xf0;
}
if(0==(in_shift())) key_delay();
}while(in_shift());
//分十位
do{
flash_control=0x40;
display_timer(4,timer3_hour,timer3_minute);
if(0==(in_add())) key_delay();
if(0==(in_add()))
{
timer3_minute+=0x10;
if((timer3_minute&0xf0)>=0x60) timer3_minute&=0x0f;
}
if(0==(in_shift())) key_delay();
}while(in_shift());
//时个位
do{
flash_control=0x10;
display_timer(4,timer3_hour,timer3_minute);
if(0==(in_add())) key_delay();
if(0==(in_add()))
{
timer3_hour++;
if((timer3_hour&0x0f)>=0x0a) timer3_hour&=0xf0;
}
if(0==(in_shift())) key_delay();
}while(in_shift());
//时十位
do{
flash_control=0x08;
display_timer(4,timer3_hour,timer3_minute);
if(0==(in_add())) key_delay();
if(0==(in_add()))
{
timer3_hour+=0x10;
if((timer3_hour&0xf0)>=0x30) timer3_hour&=0x0f;
}
if(0==(in_shift())) key_delay();
}while(in_shift());
eeprom_write_byte((uchar *)(timer3_address+0),timer3_hour);
eeprom_write_byte((uchar *)(timer3_address+1),timer3_minute);
//timer5
//分个位
do{
flash_control=0x80;
display_timer(5,timer4_hour,timer4_minute);
if(0==(in_add())) key_delay();
if(0==(in_add()))
{
timer4_minute++;
if((timer4_minute&0x0f)>=0x0a) timer4_minute&=0xf0;
}
if(0==(in_shift())) key_delay();
}while(in_shift());
//分十位
do{
flash_control=0x40;
display_timer(5,timer4_hour,timer4_minute);
if(0==(in_add())) key_delay();
if(0==(in_add()))
{
timer4_minute+=0x10;
if((timer4_minute&0xf0)>=0x60) timer4_minute&=0x0f;
}
if(0==(in_shift())) key_delay();
}while(in_shift());
//时个位
do{
flash_control=0x10;
display_timer(5,timer4_hour,timer4_minute);
if(0==(in_add())) key_delay();
if(0==(in_add()))
{
timer4_hour++;
if((timer4_hour&0x0f)>=0x0a) timer4_hour&=0xf0;
}
if(0==(in_shift())) key_delay();
}while(in_shift());
//时十位
do{
flash_control=0x08;
display_timer(5,timer4_hour,timer4_minute);
if(0==(in_add())) key_delay();
if(0==(in_add()))
{
timer4_hour+=0x10;
if((timer4_hour&0xf0)>=0x30) timer4_hour&=0x0f;
}
if(0==(in_shift())) key_delay();
}while(in_shift());
eeprom_write_byte((uchar *)(timer4_address+0),timer4_hour);
eeprom_write_byte((uchar *)(timer4_address+1),timer4_minute);
//timer6
//分个位
do{
flash_control=0x80;
display_timer(6,timer5_hour,timer5_minute);
if(0==(in_add())) key_delay();
if(0==(in_add()))
{
timer5_minute++;
if((timer5_minute&0x0f)>=0x0a) timer5_minute&=0xf0;
}
if(0==(in_shift())) key_delay();
}while(in_shift());
//分十位
do{
flash_control=0x40;
display_timer(6,timer5_hour,timer5_minute);
if(0==(in_add())) key_delay();
if(0==(in_add()))
{
timer5_minute+=0x10;
if((timer5_minute&0xf0)>=0x60) timer5_minute&=0x0f;
}
if(0==(in_shift())) key_delay();
}while(in_shift());
//时个位
do{
flash_control=0x10;
display_timer(6,timer5_hour,timer5_minute);
if(0==(in_add())) key_delay();
if(0==(in_add()))
{
timer5_hour++;
if((timer5_hour&0x0f)>=0x0a) timer5_hour&=0xf0;
}
if(0==(in_shift())) key_delay();
}while(in_shift());
//时十位
do{
flash_control=0x08;
display_timer(6,timer5_hour,timer5_minute);
if(0==(in_add())) key_delay();
if(0==(in_add()))
{
timer5_hour+=0x10;
if((timer5_hour&0xf0)>=0x30) timer5_hour&=0x0f;
}
if(0==(in_ok())) key_delay();
}while(in_ok());
eeprom_write_byte((uchar *)(timer5_address+0),timer5_hour);
eeprom_write_byte((uchar *)(timer5_address+1),timer5_minute);
}
}
void key_delay(void)
{
uint i=0;
uchar j=0;
for(i=0;i<0xffff;i++) for(j=0;j<0x78;j++);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -