📄 key.c
字号:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit key1 = P3^4;
sbit key4 = P3^7;
sbit key2 = P3^5;
sbit key3 = P3^6;
bit key1_s,key4_s,key2_s,key3_s;
uchar key1_flag;
uchar time_tmp[9];
uchar i,cs;
void key(void)
{
//设定键按下,第一次跳年,同时年闪烁,第二次调月,月闪烁,一次类推
if(key1 == 0)
{
delay(300);
if(key1 == 0)
{
delay(300);
key1_s = 1;
}
}
if(key1 == 1 && key1_s == 1)
{
key1_s = 0;
key1_flag++;
cs++;
if(key1_flag >= 10)
key1_flag = 1;
if(cs == 1)
{
time_tmp[0] = year;
time_tmp[1] = moon;
time_tmp[2] = date;
time_tmp[3] = xingqi;
time_tmp[4] = hour;
time_tmp[5] = min;
time_tmp[6] = sec;
}
}
//确认键按下,正常显示
if(key1_flag >= 1 && key1_flag < 10)
{
if(key4 == 0)
{
delay(300);
if(key4 == 0)
{
delay(300);
key4_s = 1;
}
}
if(key4 == 1 && key4_s == 1)
{
key4_s = 0;
key1_flag = 0;
cs = 0;
for(i = 0;i < 7;i++)
{
time_tmp[i] = DEC_BCD_conv(time_tmp[i]);
}
write_ds1302_add_dat(0x8e,0x00); //写允许
write_ds1302_add_dat(0x8c,time_tmp[0]); //写年
write_ds1302_add_dat(0x88,time_tmp[1]); //写月
write_ds1302_add_dat(0x86,time_tmp[2]); //写日
write_ds1302_add_dat(0x8a,time_tmp[3]); //写周
write_ds1302_add_dat(0x84,time_tmp[4]); //写时
write_ds1302_add_dat(0x82,time_tmp[5]); //写分
write_ds1302_add_dat(0x80,time_tmp[6]); //写秒
write_ds1302_add_dat(0x8e,0x80);
}
//加键按下
if(key2 == 0)
{
delay(300);
if(key2 == 0)
{
delay(300);
key2_s = 1;
}
}
if(key2 == 1 && key2_s == 1)
{
key2_s = 0;
time_tmp[key1_flag - 1]++;
if(time_tmp[0] > 99)time_tmp[0] = 0;
if(time_tmp[1] > 12)time_tmp[1] = 1;
if(time_tmp[2] > 31)time_tmp[2] = 1;
if(time_tmp[3] > 7)time_tmp[3] = 1;
if(time_tmp[4] > 23)time_tmp[4] = 0;
if(time_tmp[5] > 59)time_tmp[5] = 0;
if(time_tmp[6] > 59)time_tmp[6] = 0;
if(time_tmp[7] > 23)time_tmp[7] = 0;
if(time_tmp[8] > 59)time_tmp[8] = 0;
}
if(key3 == 0)
{
delay(300);
if(key3 == 0)
{
delay(300);
key3_s = 1;
}
}
if(key3 == 1 && key3_s == 1)
{
key3_s = 0;
if(time_tmp[0] <= 1)time_tmp[0] = 100;
if(time_tmp[1] <= 1)time_tmp[1] = 13;
if(time_tmp[2] <= 1)time_tmp[2] = 32;
if(time_tmp[3] <= 1)time_tmp[3] = 8;
if(time_tmp[4] <= 0)time_tmp[4] = 24;
if(time_tmp[5] <= 0)time_tmp[5] = 60;
if(time_tmp[6] <= 0)time_tmp[6] = 60;
if(time_tmp[7] <= 0)time_tmp[7] = 24;
if(time_tmp[8] <= 0)time_tmp[8] = 60;
time_tmp[key1_flag - 1]--;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -