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后返回還是不能保存狀態(tài) 希望能再幫看一下作者: 大漠落日 時間: 2022-10-27 09:13
我真服了,還有這么面目可憎的程序,沒有一點條理,也沒有注釋,我看了半天,掃描顯示正常,仿真時鍵盤也不太對,你是抄的人家程序吧,處理內(nèi)循環(huán)有問題,編譯報錯 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,大小寫不統(tǒng)一,并且,定義的沒有返回值 ,這里寫成有返回值 的調(diào)用形式,作者: Y_G_G 時間: 2022-10-28 14:32
雖然很多人都會C
但閱讀別人的代碼,是要一定時間去適應(yīng)的
你一上來就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;
}
這段會再優(yōu)化一下:
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
需要對時間參數(shù)賦值