int key16()
{
int key_value=0;
key=0xf7;
if(key!=0xf7)
{
delay(10);
switch(key)
{
case 0x77: key_value=1;break;
case 0xb7: key_value=5;break;
case 0xd7: key_value=9;break;
case 0xe7: key_value=13;break;
}
}
while(key!=0xf7);
key=0xfb;
if(key!=0xfb)
{
delay(10);
switch(key)
{
case 0x7b: key_value=2;break;
case 0xbb: key_value=6;break;
case 0xdb: key_value=10;break;
case 0xeb: key_value=14;break;
}
}
while(key!=0xfb);
key=0xfd;
if(key!=0xfd)
{
delay(10);
switch(key)
{
case 0x7d: key_value=3;break;
case 0xbd: key_value=7;break;
case 0xdd: key_value=11;break;
case 0xed: key_value=15;break;
}
}
while(key!=0xfd);
key=0xfe;
if(key!=0xfe)
{
delay(10);
switch(key)
{
case 0x7e: key_value=4;break;
case 0xbe: key_value=8;break;
case 0xde: key_value=12;break;
case 0xee: key_value=16;break;
}
}
while(key!=0xfe);
return key_value;
}
void Key16_16(void)
{
unsigned char num;
num=key16();
switch(num)
{
case 1: TempData[wei_change]=0x3f; break;
case 2: TempData[wei_change]=0x06; break;
case 3: TempData[wei_change]=0x5b; break;
case 4: TempData[wei_change]=0x4f; break;
case 5: TempData[wei_change]=0x66; break;
case 6: TempData[wei_change]=0x6d; break;
case 7: TempData[wei_change]=0x7d; break;
case 8: TempData[wei_change]=0x07; break;
case 9: TempData[wei_change]=0x7f; break;
case 10: TempData[wei_change]=0x6f; break;
default:break;
}
}
else if(key==KEY2)
{
switch(wei_change)
{
case 0: hour_H=key16_16();
break;
case 1: hour_L=key16_16();
break;
case 2: TempData[2]=key16_16();
break;
case 3: minute_H=key16_16();
break;
case 4: minute_L=key16_16();
break;
case 5: TempData[5]=key16_16();
break;
case 6: second_H=key16_16();
break;
case 7: second_L=key16_16();
break;
void Timer1() interrupt 3
{
static u8 i;
TH1=0Xd8;
TL1=0Xf0;
i++;
if(i==50)
{
switch(wei_change)
{
case 0: TempData[0]=0x00;break;
case 1: TempData[1]=0x00;break;
case 2: TempData[2]=0x00;break;
case 3: TempData[3]=0x00;break;
case 4: TempData[4]=0x00;break;
case 5: TempData[5]=0x00;break;
case 6: TempData[6]=0x00;break;
case 7: TempData[7]=0x00;break;
}
}
if(i==100)
{
i=0;
switch(wei_change)
{
case 0: TempData[0]=dofly_DuanMa[hour_H];break;
case 1: TempData[1]=dofly_DuanMa[hour_L];break;
case 2: TempData[2]=0x40;break;
case 3: TempData[3]=dofly_DuanMa[minute_H];break;
case 4: TempData[4]=dofly_DuanMa[minute_L];break;
case 5: TempData[5]=0x40;break;
case 6: TempData[6]=dofly_DuanMa[second_H];break;
case 7: TempData[7]=dofly_DuanMa[second_L];break;
}
}
}
void main (void)
{
Init_Timer0();
Timer1Init();
while (1)
{
DigDisplay();
key16_16();
datapros();
}
}
最后更新完hour/minute/second后返回还是不能保存状态 希望能再帮看一下作者: 大漠落日 时间: 2022-10-27 09:13
我真服了,还有这么面目可憎的程序,没有一点条理,也没有注释,我看了半天,扫描显示正常,仿真时键盘也不太对,你是抄的人家程序吧,处理内循环有问题,编译报错 case 0: hour_H=key16_16();
break;
case 1: hour_L=key16_16();
break;
case 2: TempData[2]=key16_16();
break;
case 3: minute_H=key16_16();
break;
case 4: minute_L=key16_16();
break;
case 5: TempData[5]=key16_16();
break;
case 6: second_H=key16_16();
break;
case 7: second_L=key16_16();
这部分引用的key16_16();// 这里写key,定义时写的是Key,大小写不统一,并且,定义的没有返回值 ,这里写成有返回值 的调用形式,作者: Y_G_G 时间: 2022-10-28 14:32
虽然很多人都会C
但阅读别人的代码,是要一定时间去适应的
你一上来就duang一堆代码上来...........作者: 名字不是重点 时间: 2022-10-29 16:22
别的不说,这段代码,我会去建表查表:
switch(num)
{
case 1: TempData[wei_change]=0x3f; break;
case 2: TempData[wei_change]=0x06; break;
case 3: TempData[wei_change]=0x5b; break;
case 4: TempData[wei_change]=0x4f; break;
case 5: TempData[wei_change]=0x66; break;
case 6: TempData[wei_change]=0x6d; break;
case 7: TempData[wei_change]=0x7d; break;
case 8: TempData[wei_change]=0x07; break;
case 9: TempData[wei_change]=0x7f; break;
case 10: TempData[wei_change]=0x6f; break;
default:break;
}
这段会再优化一下:
switch(wei_change)
{
case 0: TempData[0]=0x00;break;
case 1: TempData[1]=0x00;break;
case 2: TempData[2]=0x00;break;
case 3: TempData[3]=0x00;break;
case 4: TempData[4]=0x00;break;
case 5: TempData[5]=0x00;break;
case 6: TempData[6]=0x00;break;
case 7: TempData[7]=0x00;break;
} ==>TempData[wei_change]=0x00; 作者: zilihangjian 时间: 2022-11-1 13:52
修改后要对 hour/minute/second赋值的作者: 郑汉松 时间: 2022-11-1 18:03
需要对时间参数赋值