作业:
简易10秒免单计数器
1、在前四位数码管上显示目标时间,即“10.00”表示定时时间10秒钟。
2、后四位显示当前的计时00.00,最小单位为10ms。
3、按下开始按钮后,每10ms最末尾的数字+1;直到按下结束按钮后停止计数。
这一个部分感谢:严西湖***大佬提供的代码思路,他的代码可以实现p34按键按下开始和停止计时,如果在10s的区间,数码管会有相应的显示,没有清零数码管的操作。参照他的代码,完善了一下我自己的代码。
我用p34按钮开始和停止计时,p33按钮进行复位。(这里我试了实验箱上的P32,33,34,35,能正常操作的只有p33\34,代码改为p33/35就不能正常开始计时,不知道哪位大佬知道原因)
挑战成功则数码管下方的led流水灯显示。
数码管数字小数点位=用数字位+小数点位,如:
Display_Seg( SEG_NUMB[0]+SEG_NUMB[18], ~T_NUM[1] )
描述 数字 0 .
这里一个知识点就是用一个暂停标志位pauseTag来控制计数函数计数或者停止
最开始pauseTag==1表示暂停,p34按下时,pauseTag==0,表示开始
void key_task(void){
if(P34==0){
key_vol++;
if(key_vol==5){
if(pauseTag==1){ //如果暂停,则开始
pauseTag=0;
}
else if(pauseTag==0){ //如果开始,则暂停
pauseTag=1;
if(miao==10 &&haomiao>50||miao==9 && haomiao>50){
win=1;
}
}
}
}
else if(P33==0){
key_vol++;
if(key_vol==5){
pauseTag==1;
haomiao=0;
miao=0;
win=0;
P0=0xFF;
}
}
else {
key_vol=0;
}
}
void CountUp(void){
if(pauseTag==0){
haomiao++;
if(haomiao>100){
haomiao=0;
miao++;
if(miao>15){
miao=0;
}
}
}
}
附件:test.rar