智能仪表综合课程设计
4.2.4 加分子程序 void keyjiafen1()
{ 当检测到RXD按键按下时,调用延时子程序 if(RXD==0) 实现消除按键抖动功能,即,当 delay(1);,
{ if(RXD==0) { while(RXD==0); x++;
}
}
if(TXD==0) { delay(1); if(TXD==0) {
while(TXD==0); y++;
}
} }
4.2.5减分子程序 void keyjianfen1()
{
if(WR==0) { delay(1);
检测到按键按下时候,延时,按键仍按下,说明 按键确实按下,非抖动,A对应加分 检测TXD加分按键时候按下,B加分 减分按键检测子程序,其基本算法及功能与加分相同17
智能仪表综合课程设计
if(WR==0) {
while(WR==0); x--; }
} if(RD==0) { delay(1); if(RD==0)
{
while(RD==0); y--; }
} }
4.2.6 调整时间子程序
调整时间子程序,使时间快速倒退或快进,实现回表功能,同时回表之后能自动暂停,程序如下: void key2() {
if(INT0==0)
{
delay(10);
if(INT0==0) 回表子程序,检测到INT0按下时,使时间回倒
{
chuzanting==0; chuzanting==0; zanting=1;为附加变量,当回表按键 zanting=1; 松开时,表暂停,这两个变量用来调用暂停
n++;
18
智能仪表综合课程设计
if(n==60)
{
m++; n=1; }
} }
if(INT1==0) 快表子程序,检测到INT1按下时,使倒计加快, { 通常情况下与回表子程序配合使用,即当回表 回过的时候,按此键调整时间 delay(10); chuzanting==0; zanting=1;作用同上 if(INT1==0)
{
chuzanting==0; zanting=1; n--; }
} }
void shijian() 该程序使回表和快表按键松开时候能自动暂停 {
if(zanting==1&&INT0==1&&INT1==1&&chuzanting==0 ) {
EA=0; zanting==1&&INT0==1&&INT1==1&&chuzanting==0作用为 zanting=0; 当按键松开的时候,调用暂停程序条件
huzanting=0; zanting=0;chuzanting=0,初始化,以便下次回表和快表
while(1) 按键松开时候仍能调用暂停程序
{
display(m,n,x,y);
19
智能仪表综合课程设计
if(P1_0==0) 当检测暂停键按下,开中断,跳出暂停 {
delay(1); if(P1_0==0) {
while(P1_0==0); EA=1;
break; } } } } }
4.2.7 半场交换比分子程序 void key3() {
int temp; 定义中间变量temp,检测到有按键按下时候 if(zidong==1&&jie==1) 通过temp交换甲队,乙队两队比赛分数 {
temp=x; zidong==1&&jie==1是判断半场的条件 y=temp;
display(m,n,x,y); 刷新数码管 zidong=0;
bujin=0;
} }
4.2.8 比赛暂停子程序
void key4()
20