这回分享的是第八届时钟表的做题思路。给自己留了5个小时,然而做题的效率还是不够。重在思路吧。、
void main() { init(); ds1302init(); while(1) { ds1302read(); wendu=temget(); timeset(); alarmset(); keyscan(); if(P33==0) { delayms(100); if(P33==0) { yi=20;er=20;san=20; si=20;wu=20; liu=wendu/10;qi=wendu%10;ba=12; } } display1(yi,er); display2(san,si); display3(wu,liu); display4(qi,ba); } } void timeset() { if(shezhi==0) { yi=TIME[2]/10;er=TIME[2]%10;san=19; si=TIME[1]/10;wu=TIME[1]%10;liu=19; qi=TIME[0]/10;ba=TIME[0]%10; } else if(shezhi==1) { if(TIME[0]%2==0) { yi=TIME[2]/10;er=TIME[2]%10;san=19; si=20;wu=20;liu=19; qi=20;ba=20;} else { yi=20;er=20;san=19; si=20;wu=20;liu=19; qi=20;ba=20; } if(jia==1) {jia=0;if(TIME[2]==24)TIME[2]=0;TIME[2]++;ds1302init();} if(jian==1) {jian=0;if(TIME[2]==0)TIME[2]=24;TIME[2]--;ds1302init();} } else if(shezhi==2) { if(TIME[0]%2==0){ yi=20;er=20;san=19; si=TIME[1]/10;wu=TIME[1]%10;liu=19; qi=20;ba=20;} else{ yi=20;er=20;san=19; si=20;wu=20;liu=19; qi=20;ba=20; } if(jia==1) {jia=0;TIME[1]++;if(TIME[1]==60)TIME[1]=0;ds1302init();} if(jian==1) {jian=0;TIME[1]--;if(TIME[1]==0)TIME[1]=59;ds1302init();} } else if(shezhi==3) { if(TIME[0]%2==0){ yi=20;er=20;san=19; si=20;wu=20;liu=19; qi=TIME[0]/10;ba=TIME[0]%10;} else{ yi=20;er=20;san=19; si=20;wu=20;liu=19; qi=20;ba=20; } if(jia==1) {jia=0;TIME[0]++;if(TIME[0]==60)TIME[0]=0;ds1302init();} if(jian==1) {jian=0;TIME[0]--;if(TIME[0]==0)TIME[0]=59;ds1302init();} } } void alarmset() { if(alarm==1) { yi=clock[2]/10;er=clock[2]%10;san=19; si=clock[1]/10;wu=clock[1]%10;liu=19; qi=clock[0]/10;ba=clock[0]%10; } else if(alarm==2) { if(TIME[0]%2==0) { yi=clock[2]/10;er=clock[2]%10;san=19; si=20;wu=20;liu=19; qi=20;ba=20;} else { yi=20;er=20;san=19; si=20;wu=20;liu=19; qi=20;ba=20; } if(jia==1) {jia=0;clock[2]++;if(clock[2]==24)clock[2]=0;} if(jian==1) {jian=0;clock[2]--;if(clock[2]==0)clock[2]=24;} } else if(alarm==3) { if(TIME[0]%2==0) { yi=20;er=20;san=19; si=clock[1]/10;wu=clock[1]%10;liu=19; qi=20;ba=20;} else { yi=20;er=20;san=19; si=20;wu=20;liu=19; qi=20;ba=20; } if(jia==1) {jia=0;clock[1]++;if(clock[1]==60)clock[1]=0;} if(jian==1) {jian=0;clock[1]--;if(clock[1]==0)clock[1]=59;} } else if(alarm==4) { if(TIME[0]%2==0) { yi=20;er=20;san=19; si=20;wu=20;liu=19; qi=clock[0]/10;ba=clock[0]%10;} else { yi=20;er=20;san=19; si=20;wu=20;liu=19; qi=20;ba=20; } if(jia==1) {jia=0;clock[0]++;if(clock[0]==60)clock[0]=0;} if(jian==1) {jian=0;clock[0]--;if(clock[0]==0)clock[0]=59;} }} void keyscan() { if(P30==0) { delayms(110); if(P30==0) { shezhi++; if(shezhi==4) shezhi=0; }while(!P30); } if(shezhi==0) { if(P31==0) { delayms(110); if(P31==0) { alarm++; if(alarm==5) alarm=0; }while(!P31); } } if((shezhi!=0)&&(alarm=2)&&(alarm=3)&&(alarm=4)) { if(P32==0) { delayms(110); if(P32==0) { jia=1; }while(!P32); } else if(P33==0) { delayms(110); if(P33==0) { jian=1; }while(!P33); } } }