物理与电信工程学院
} else { display(total_num);
}
}
}
unsigned char check_car(void) { unsigned char ext_1=0; unsigned char int_1=0; unsigned char ext_2=0; unsigned char int_2=0; unsigned char return_flag=0; EXT_LINE = 1;
INT_LINE = 1; //设置为读 ext_1 = EXT_LINE;
int_1 = INT_LINE;//读取状态 if((0==ext_1)&&(0==int_1))//没有车 { ;
}
else if((1==ext_1)&&(1==int_1))//车在门口,还没有出去 { ;
}
else if((1==ext_1)&&(0==int_1)) { delay_ms(1000);//延时
ext_2 = EXT_LINE;
21
物理与电信工程学院
int_2 = INT_LINE;//读取状态
if((0==ext_1)&&(1==int_1)) //有车进入 { remain_num--; return_flag = 1;
}
else //异常 { ;//do nothing }
}
else // if((0==ext_1)&&(1==int_1)) { delay_ms(1000);//延时 ext_2 = EXT_LINE;
int_2 = INT_LINE;//读取状态
if((1==ext_1)&&(0==int_1)) //有车出去 { remain_num++; return_flag = 1;
}
else //异常 { ;
}
}
return return_flag;
}
void delay_ms(unsigned int ms) // Fosc=11.0592MHz {
22
物理与电信工程学院
unsigned char i; for(;ms>0;ms--) { for(i=0;i<124;i++) { ;
}
}
}
//中断 用于关门
void time_0(void) interrupt 1 { unsigned char ext_1=0; unsigned char int_1=0; EXT_LINE = 1;
INT_LINE = 1; //设置为读 ext_1 = EXT_LINE;
int_1 = INT_LINE;//读取状态
if((0==ext_1)&&(0==int_1))//没有车 关门 { CLOSE_DOOR; //关闭定时器的程序 ET0=0; TR0=0;
//end of \关闭定时器的程序\
}
else //有车 继续定时检查 {
TH0=0XFF;
停止计时23
物理与电信工程学院
TL0=0;
}
}
//增加键中断
void key_0(void) interrupt 0 { total_num++;
if(total_num } } //减少键中断 void key_1(void) interrupt 2 { total_num--; if(total_num } //显示程序 void display(unsigned char va) { bai=va/100; //处理数据 shi=va0/10; ge=va; 24 物理与电信工程学院 gew=1; //数码管显示车位 shiw=1; baiw=1; SEG=seg7code[bai]; baiw=0; Delay_ms(2); baiw=1; SEG=seg7code[shi]; shiw=0; Delay_ms(2); shiw=1; SEG=seg7code[ge]&0x7f; gew=0; Delay_ms(2); gew=1; } 25