⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 idcard.h

📁 时钟芯片H1380控制程序
💻 H
字号:
#define	ENABLE_TIMER0		TR0=1;
#define	DISABLE_TIMER0		TR0=0;
BYTE ch;
bit b_byte;
BYTE ID_state;
BYTE id_sum;
BYTE id_num[10];
long unsigned int id_card_num;
void Mydelay_50us(void)  //延时大概50us
{
  	DISABLE_TIMER0  TH0=TL0=0;  ENABLE_TIMER0
	while(TL0<30);  
}


void Serial_SimulatRe(void)
{
    BYTE i;
	b_byte=0;
    if(!B_RFIN){            //起始位0,共扫描3次,
       Mydelay_50us();
       if(!B_RFIN){
          Mydelay_50us();
          if(!B_RFIN){
             Mydelay_50us();
             if(!B_RFIN){
                Mydelay_50us();
   		     }else {return;}// 出错,退出
          }else{return;}
        }else{return;}
	}else{return;}
    for(i=0;i<8;i++){     //扫描第一到第八位,每位扫描三次。
       ch=ch>>1;
       Mydelay_50us();
       if(B_RFIN){        //为1,
          Mydelay_50us();
          if(B_RFIN){
             Mydelay_50us();
             if(B_RFIN){
                Mydelay_50us();
                ch=ch|0x80;
             }else {return;}  //出错,退出
          }else{return;}
       }else {             //为0;
          Mydelay_50us();
          if(!B_RFIN){
            Mydelay_50us();
            if(!B_RFIN){
              Mydelay_50us();
              ch=ch&0x7f;
            }else{return;}  //出错,退出
          }else {return;}
       }
    }
    Mydelay_50us();
	if(!B_RFIN){   //停止位
	   return;
	}
	b_byte=1;
}
void IT1_int(void) interrupt 2   //D0
{
	EX1=0;             //禁止init1中断
    Serial_SimulatRe();//接收一BYTE,
	if(b_byte){
	   switch(ID_state){// 判断命令,格式:0xff+0x06+ID(3B)+校验和
	     case 0:
		   if(ch==0xFF){//头,0xFF
		     ID_state=1;
		   }else ID_state=0;
		   break;
		 case 1:        //命令
		   ID_buf[0]=ch;
		   ID_state=2;
		   break;
		 case 2:        //ID
		   ID_buf[id_sum+1]=ch;
		   id_sum++;
		   if(id_sum==3){
		     id_sum=0;
			 ID_state=3;
           }
		   break;
		 case 3:      //效验和
		   if(ch==((ID_buf[0]+ID_buf[1]+ID_buf[2]+ID_buf[3])%0x100)){
		     ID_state=0;
			 b_Command_In=1;
			 EX1=0;
			 return;
		   }else{
		   	 ID_state=0;
			 id_sum=0;
		   }
		   break;
	   }
	}else{
		EX1=1;
		return;
	}
    EX1=1;           //开中断
}

void change(void)
{
	id_card_num=ID_buf[1]*65536+ID_buf[2]*256+ID_buf[3];
	id_num[0]=id_card_num/1000000000;	
	id_card_num=id_card_num%1000000000;
	id_num[1]=id_card_num/100000000;	
	id_card_num=id_card_num%100000000;
	id_num[2]=id_card_num/10000000;	
	id_card_num=id_card_num%10000000;
	id_num[3]=id_card_num/1000000;	
	id_card_num=id_card_num%1000000;
	id_num[4]=id_card_num/100000;	
	id_card_num=id_card_num%100000;
	id_num[5]=id_card_num/10000;	
	id_card_num=id_card_num%10000;
	id_num[6]=id_card_num/1000;	
	id_card_num=id_card_num%1000;
	id_num[7]=id_card_num/100;	
	id_card_num=id_card_num%100;
	id_num[8]=id_card_num/10;	
	id_num[9]=id_card_num%10;
}

void IDmodule_Process(void)
{
	uchar i;
	if(b_Command_In)
	{
		BEEP_ON
		delay();
		BEEP_OFF
		b_Command_In=0;
		change();
		for(i=0;i<10;i++)
		{
			dishz(6,24+8*i,id_num[i]);
		}
		for(i=3;i>0;i--)
			delay();
		lcdclear(0x00,0x00);
		xianshi();
		EX1=1;
	}
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -