单片机控制门禁系统
程序代码如下:
unsigned char Buff[30];
/*解码缓冲区*/
unsigned char readbit()
/*检测数据位子程序*/
{
unsigned int mk=TIME10;
/*装入超时值,TIME10=600,*/
TL0=TH0=0;
/*初始化计时器*/
TR0=1;
/*开始计时*/
while(--mk)
/*超时机制,防止死等*/
if(bitin!=INPORT)
/*有跳变 INPORT=P0.0*/
break;
TR0=0;
/*停止计时*/
if(mk==0)
/*超时退出*/
return 0;
bitin=INPORT;
/*保存状态*/
mk=TH0*256+TL0;
/*计算这样跳变的脉宽*/
if((mk>TIME05)&&(mk<=TIME10))
/*一个周期*/
return 1;
if((mk>=TIME00)&&(mk<=TIME05))
/*半个周期*/
return 2;
return 0;
/*出错*/
}
readdata()函数实现读取一个完整的数据位的子程序,注意应用这个函数时需要在循环中
不断查询,程序代码如下:
unsigned char readdata()
/*读一个完整的数据位子程序*/
{
switch(readbit())
{
评论0