yzwzfyz 发表于 2017-6-16 12:13 那我要是用T1进行24秒或者14秒的倒计时,打断那里应该怎么写程序? |
图可以。 所提问题也都能实现,只有一个要注意的地方:“用一个按键完成这两个任务”: 当此键按下时,你有下列四个选择项,你必须有选择或区分的方式。 1、甲乙两件事都不处理; 2、甲乙两件事都处理; 3、做甲不做乙; 4、不做甲做乙。 |
uchar jiema(unsigned char key) { uchar n; switch(key) { case 24: n= 1; break; case 40: n= 2; break; case 72: n= 3; break; case 136: n= 4; break; case 20: n= 5; break; case 36: n= 6; break; case 68: n= 7; break; case 132: n= 8; break; case 18: n= 9; break; case 34: n= 10; break; case 66: n= 11; break; case 130: n= 12; break; case 17: n= 13; break; case 33: n= 14; break; case 65: n= 15; break; case 129: n= 16; break; default: break; } return n; } 还想问一下,这里是如何定义的键盘号? 键盘换到P1口的话,case后的数会改变吗 |
void chuli(uchar key) { if(key==1) bifeng[0]++; second24=24; T1_num=0; if(key==2) bifeng[0]=bifeng[0]+2; second24=24; T1_num=0; if(key==3) bifeng[0]=bifeng[0]+3; second24=24; T1_num=0; if(key==5) bifeng[1]++; second24=24; T1_num=0; if(key==6) bifeng[1]=bifeng[1]+2; second24=24; T1_num=0; if(key==7) bifeng[1]=bifeng[1]+3; second24=24; T1_num=0; if(key==4) if(bifeng[0]!=0) bifeng[0]--; if(key==8) if(bifeng[1]!=0) bifeng[1]--; if(key==14) { if(jieshu<4) jieshu++; else jieshu=1; } if(key==13) { TR0=~TR0; if(TR0==1&&second==0&&minute==0&&T0_num==0) { speaker=1; T0_num=0; second=0; minute=12; } } if(key==12) { TR1=~TR1; } if(key==11) { foul[0]++; } if(key==12) { foul[1]++; } if(key==9) { pause[0]++; } if(kry==10) { pause[1]++; } } |
void T0_init() { EA=1; TMOD=0x11; TH0=(65536-46080)/256; TL0=(65536-46080)%256; ET0=1; TR0=0; TH1=(65536-46080)/256; TL1=(65536-46080)%256; ET1=1; TR1=0; } void T0_interrupt(void) interrupt 1 using 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; T0_num++; if(T0_num==20) { T0_num=0; if(second==0) { minute--; second=59; } else { second--; if(second==0&&minute==0) { TR0=0; speaker=0; } } } } void T1_interrupt(void) interrupt 3 using 0 { TH1=(65536-50000)/256; TL1=(65536-50000)%256; T1_num++; if(T1_num==20) { T1_num=0; if(second24!=0) second24--; else { TR1=0; second24=24; buzzer(1); } } } #endif |