程序始終無法實現(xiàn)器件狀態(tài)變化時間存儲,時鐘部分時間的存儲時正常的,請好心人幫我看看看吧!應該主要的問題是在鍵盤掃描部分,求助:
void keyscan() //鍵盤掃描函數(shù) { uint temp,i=0; P1=0xfe; temp=P1; temp=temp&0xf0; if(temp!=0xf0) { delay(10); if(temp!=0xf0) { temp=P1; switch(temp) { case 0xee: //切換顯示 { key1=0; TR2=0; keynum++; if(keynum==1|keynum==2|keynum==3) { y=0; factor=0; display1(shi,fen,miao); } if(keynum==4|keynum==5|keynum==6) { factor=1; display1(year,month,date); } if(keynum==7) { factor=2; display2(week); } if(keynum==8|keynum==9|keynum==1) { factor=3; display1(one,two,three); } if(keynum==11) { TR2=1; countyear=0; factor=0; display1(shi,fen,miao); keynum=0; } /*i=miao; if(key1==1) { //count2=0; if(((miao-i)==10)&&key1==1) { TR2=1; countyear=0; factor=0; display1(shi,fen,miao); keynum=0; } } if(key1==0) { //count2=0; if(((miao-i)==10)&&key1==0) { TR2=1; countyear=0; factor=0; display1(shi,fen,miao); keynum=0; } }*/ break; } case 0x7e: //按鍵減 { key2=0; switch(keynum) { case 1: miao--; if(miao==-1) miao=59; write_add(6,miao); break; case 2: fen--; if(fen==-1) fen=59; write_add(5,fen); break; case 3: shi--; if(shi==-1) shi=23; write_add(4,shi); break; case 4: date--; if(date==-1) date=30; write_add(3,date); break; case 5: month--; if(month==-1) month=12; write_add(2,month); break; case 6: year--; if(year==-1) year=99; write_add(1,year); break; case 7: week--; if(week==0) week=7; write_add(7,week); break; case 8: three--; if(three==-1) three=59; write_add(10,three); break; case 9: two--; if(two==-1) two=59; write_add(9,two); break; case 10: one--; if(one==-1) one=23; write_add(8,one); break; } break; } case 0xbe: { //按鍵加 key3=0; switch(keynum) { case 1: miao++; if(miao==60) miao=0; write_add(6,miao); break; case 2: fen++; if(fen==60) fen=0; write_add(5,fen); break; case 3: shi++; if(shi==24) shi=0; write_add(4,shi); break; case 4: date++; if(date==31) date=0; write_add(3,date); break; case 5: month++; if(month==13) month=1; write_add(2,month); break; case 6: year++; if(year==100) year=0; write_add(1,year); break; case 7: week++; if(week==8) week=1; write_add(7,week); break; case 8: three++; if(three==60) three=0; write_add(10,three); break; case 9: two++; if(two==60) two=0; write_add(9,two); break; case 10: one++; if(one==24) one=0; write_add(8,one); break; } break; } case 0xde: key4=0; break; } while(temp!=0xf0) //按鍵釋放 { temp=P1; temp=temp&0xf0; } delay(120); //延時,不然一個鍵按下可能會出現(xiàn)減幾個數(shù)的情況 } } P1=0xfd; //第2列鍵盤掃描 temp=P1; temp=temp&0xf0; if(temp!=0xf0) { delay(10); if(temp!=0xf0) { temp=P1; switch(temp) { case 0xed: key5=0; TR2=0; n++; switch(n) { case 1: //切換顯示開機次數(shù) {factor=13;displaykai();} break; case 2: { if(number==1) {factor=4;displayhh(cc[0],shi3[0],fen3[0],miao3[0]);} if(number==2) {factor=5;displayhh(cc[1],shi3[1],fen3[1],miao3[1]);} if(number==3) {factor=6;displayhh(cc[2],shi3[2],fen3[2],miao3[2]);} if(number==4) { n=0; TR2=1; countyear=0; factor=0; display1(shi,fen,miao); } } break; case 3: { //切換顯示第一路器件變化 if(number==1) {factor=7;display3(1,state1[0],k6[0],shi1[0],fen1[0],miao1[0]);} if(number==2) {factor=8;display3(1,state1[1],k6[1],shi1[1],fen1[1],miao1[1]);} if(number==3) {factor=9;display3(1,state1[2],k6[2],shi1[2],fen1[2],miao1[2]);} if(number==4) { n=0; TR2=1; countyear=0; factor=0; display1(shi,fen,miao); } } break; case 4: //切換顯示第二路器件變化 { if(number==1) {factor=10;display3(2,state2[0],k7[0],shi2[0],fen2[0],miao2[0]);} if(number==2) {factor=11;display3(2,state2[1],k7[1],shi2[1],fen2[1],miao2[1]);} if(number==3) {factor=12;display3(2,state2[2],k7[2],shi2[2],fen2[2],miao2[2]);} if(number==4) { n=0; TR2=1; countyear=0; factor=0; display1(shi,fen,miao); } } break; } if(n>4) { n=0; TR2=1; countyear=0; factor=0; display1(shi,fen,miao); } break; case 0xdd: //按鍵5定義為三路器件的近三次記錄的切換顯示 key5=0; number++; if(number>4)number=0; break; case 0xbd: //第一路器件,偶數(shù)次為開,基數(shù)次為關 key6=0; k6[x]++; if(k6[x]>99)k6[x]=0; if(k6[x]%2!=0) state1[x]=d[1]; if(k6[x]%2==0) state1[x]=d[0]; write_add(address1,state1[x]);delay0(); write_add(address1+1,k6[x]);delay0(); write1(address1+2,shi,fen,miao); address1=address1+5; if(address1==40)address1=25; write_add(56,address1); x++; if(x>2)x=0; break; case 0x7d: //第二路器件,偶數(shù)次為開,基數(shù)次為關 key7=0; k7[yy]++; if(k7[yy]>99)k7[yy]=0; if(k7[yy]%2!=0) state2[yy]=d[1]; if(k7[yy]%2==0) state2[yy]=d[0]; write_add(address2,state2[yy]);delay0(); write_add(address2+1,k7[yy]);delay0(); write1(address2+2,shi,fen,miao); address2=address2+5; if(address2==55)address2=40; write_add(57,address2); yy++; if(yy>2)yy=0; break;} while(temp!=0xf0) {temp=P1; temp=temp&0xf0;} delay(120); }}}
歡迎光臨 (http://www.zg4o1577.cn/bbs/) | Powered by Discuz! X3.1 |