亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? t2.c

?? 一個M1讀卡器的驅動程序
?? C
字號:
#include <AT89X52.h>
#include <INTRINS.H>
#include <string.h>

unsigned char  INBUF_LEN;   //數據長度
unsigned char  inbuf1[32];
unsigned char  count3;
unsigned int    i;
unsigned char   c0[9]={0x00,0x06,0x00,0x00,0x05,0x03,0x01,0x03,0x01};		   //初始相對卡號
unsigned char temp[9]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; 
unsigned char pass[6]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};
bit           flag=0;                             //是否進行下一步的標志	   

//*********************************************************************************//
unsigned char  ledcode[] ={0xee,   //0     
                           0x28,   //1
                           0xcd,   //2
                           0x6d,   //3
                           0x2b,   //4
                           0x67,   //5
                           0xe7,   //6
                           0x2c,   //7
                           0xef,   //8
                           0x6f,   //9
                           0xaf,   //A
                           0xe3,   //B
                           0xc6,   //C
                           0xe9,   //D
                           0xc7,   //E
                           0x87};  //F
//數碼管字符表																	   
//*********************************************************************************//

void delay(int j)	       // 延時
{
int a;
while (--j){a=1000;while(--a){;}}
}  

/***********************************************************************************/
void init_com(void) //初始化串口
{
	SCON=0x50;
	TMOD=0x20;//t0 timer
	TH1=0xfd;//9600bps
    TR1=1;
	ET1=0;
    ES=1;
  	EA=1; 
	IT0 =0;
    count3=0;           //串口計數清零
    INBUF_LEN=0x21;		//數據長度設為最大	
	
}


//向串口發送一個字符串,strlen為該字符串長度,連續發送
void send_string_com(unsigned char strlen)
{
 unsigned int t=0;
 RI=0;
 EA=0;
    do 
    {
        SBUF=inbuf1[t];
        while(TI==0);
		TI=0;
        t++;
    } while(t < strlen);
 EA=1;
}


//串口接收中斷函數 ,連續接收
void serial () interrupt 4 using 3 
{  
unsigned int k=0;
EA=0;
    if(RI)
    {
	    while(inbuf1[count3]!=0x0D)
		{
        RI = 0;	
		if (inbuf1[count3]==0x3C ) 
		{count3=0;inbuf1[count3]=0x3C;count3++;}
		else count3++;
        inbuf1[count3]=SBUF;
		while (RI==0&&k<6000){k++;}  
		}  
    }
EA=1;
//INBUF_LEN=count3+1;
count3=0;
}
/***************************************************************/
unsigned char BCC(unsigned char *str,unsigned int strlen)  //數據校驗
{ 
    unsigned char bcc1=0x00;
	i=0;
	while(i<strlen)
	{
	 bcc1^=str[i];
	 i++;
	}
	return bcc1;
}
/***************************************************************/

void searchcard()                              //這一步能正常通過了!
{
		  flag=0;
		  inbuf1[0]=0x3C;                 //下傳命令:3C 04 01 70 00(尋卡模式00(IDLE)或01(ALL)) 00 BCC(49) 0D
	      inbuf1[1]=0x04; 
		  inbuf1[2]=0x01;
		  inbuf1[3]=0x70;
		  inbuf1[4]=0x01;
		  inbuf1[5]=0x00;
		  inbuf1[6]=BCC(inbuf1,6);		  //校驗
		  inbuf1[7]=0x0D;   
		  INBUF_LEN=8; count3=0;         
          send_string_com(INBUF_LEN);           //向模塊發送命令
		  delay(100);				            //等待模塊回傳信息
//		  send_string_com(INBUF_LEN);
		  if ( inbuf1[1]==0x05) 
			{
			   temp[0]=inbuf1[2];					 //獲取相對卡號
			   temp[1]=inbuf1[3];
			   temp[2]=inbuf1[4];
			   temp[3]=inbuf1[5];
	           delay(50); 	  
			   flag=1;								 //尋卡成功,flag置位
		     }	else 
			 flag=0;
             count3=0;
			 return;
}


/**************************************************************/

void passcheck()                     //這一步好像有問題!不知道為什么!可能是延時太少么?
{		  
          unsigned int i;
		  flag=0;
		  inbuf1[0]=0x3C;						// 下傳命令:3C 0E 01 6C 六字節密碼 認證模式(00-A/01-B) 絕對塊號 四字節卡號 校驗位 0D
	      inbuf1[1]=0x0E; 						//eg:3C 0E 01 6C ff ff ff ff ff ff 00 02 74 09 49 C4 AD 0D
		  inbuf1[2]=0x01;
		  inbuf1[3]=0x6C;
		  for (i=0;i<6;i++){inbuf1[i+4]=pass[i];}
          inbuf1[10]=0x00;					       //認證模式(00-A/01-B) 使用A模式 只讀不寫
		  inbuf1[11]=0x01;					       //讀塊號1
		  for (i=0;i<4;i++) {inbuf1[i+12]=temp[i];}
		  inbuf1[16]=BCC(inbuf1,16);
		  inbuf1[17]=0x0D;   
		  INBUF_LEN=18;  count3=0;         
          send_string_com(INBUF_LEN);	        	 //向模塊發送命令
		  delay(100);								//等待模塊回傳信息
//		  send_string_com(INBUF_LEN);				//測試點
		  if  (inbuf1[1]==0x02) 				    //這里只是根據返回命令的特征進行簡單驗證,為了程序更加健壯,應該要進行bcc校驗
			   {
               delay(100);
		       flag=1;								 //密碼驗證成功,flag置位
			   } 
		 return;
}
/**************************************************************/

void readcard()
{
          
		
		  flag=0;						   
		  inbuf1[0]=0x3C;                            // 下傳命令:3C 04 01 66 00(絕對塊號) 00 BCC 0D
	      inbuf1[1]=0x04; 
		  inbuf1[2]=0x01;
		  inbuf1[3]=0x66;
		  inbuf1[4]=0x01;					    	 //絕對塊號
		  inbuf1[5]=0x00;
		  inbuf1[6]=BCC(inbuf1,6);
		  inbuf1[7]=0x0D;   
		  INBUF_LEN=8; 
		  count3=0;          
          send_string_com(INBUF_LEN);	         	//向模塊發送命令
		  delay(100);						       //等待模塊回傳信息
		  if (inbuf1[1]==0x12) 		 	   	   //這里只是根據返回命令的特征進行簡單驗證,為了程序更加健壯,應該要進行bcc校驗
			   {
           	   for (i=0;i<10;i++) 
			   {temp[i]=inbuf1[i+3];	 
			   inbuf1[i]=temp[i];}
	           delay(20);
		       flag=1;								 //尋卡成功,flag置位
			   }
//		   INBUF_LEN=0x08; count3=0;
//		   send_string_com(INBUF_LEN);
		   delay(20);
		   return;  

}
/**************************************************************/
void cardcheck()	 //驗證相對卡號
{ 
	flag=1;
    for(i=0;i<8;i++) 
	        {if (temp[i]!=c0[i]) 
			      flag=0;}
//	if (temp[8]>=c0[8])	 
//        	  c0[8]=temp[8];	  //卡號的最后一個字節是識別字節,用于用戶換自己的卡,大數有效
//	        	else flag=0;
	}



	
/**************************************************************/

void closecard()          //  關閉卡片:3C 04 01 68 00 00 51 0D
{
          inbuf1[0]=0x3C;                       
	      inbuf1[1]=0x04; 
		  inbuf1[2]=0x01;
		  inbuf1[3]=0x68;
		  inbuf1[4]=0x00;
		  inbuf1[5]=0x00;
		  inbuf1[6]=0x51;
		  inbuf1[7]=0x0D;
		  INBUF_LEN=0x08;  
		  count3=0;         
          send_string_com(INBUF_LEN);

}
/**************************************************************/
void main(){
    unsigned int state;															    
    init_com();  //初始化串口和中斷
	state=1;
	P1_7=1;
	P0=ledcode[0];
	delay(50);
    while(1)	 
    {	
//	    P1_2=0;	P0=ledcode[0];delay(50);
		switch(state){
		case 1:	  
		 P0=ledcode[state];delay(50);
		 searchcard(); 
		 if (flag) state++;else state=6;break;	
		//尋卡	           
         case 2:   
		 P0=ledcode[state];delay(50);
		 passcheck();
		  if (flag) state++;else state=6;break;      
	    //如果尋卡成功,獲取絕對卡號,進行密碼驗證
        case 3:   
		 P0=ledcode[state];delay(50);
		readcard();  
		 if (flag) state++;else state=6;break;  
		//如果密碼驗證成功,讀卡獲取,獲取相對卡號           
		case 4:    P0=ledcode[state];delay(50);
		cardcheck(); 
		 if (flag) state++;else state=6;break; 		           
		//	進行驗證
		case 5:  
		 P0=ledcode[state];delay(500); 
		 P1_7=0;delay(1000);P1_7=1;state++;break; 	
	   // p1.7指示電動門鎖執行開門動作 ,			  
		case 6:   P0=ledcode[state];delay(50); 
		closecard();state=1;break;                              
	   // 模擬時接led顯示 及接在外部中斷上,用以模擬正常開門時門磁動作 
	   }          	   	
     }


}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲小说春色综合另类电影| 欧美中文字幕一区| 一区二区中文字幕在线| 国产美女精品一区二区三区| 日韩一卡二卡三卡四卡| 国产精品自拍三区| 亚洲欧美日韩一区二区| 在线播放一区二区三区| 国产剧情一区在线| 午夜精品福利一区二区三区av | 另类调教123区| 国产精品成人午夜| 欧洲精品在线观看| 国产在线视频一区二区| 亚洲成人自拍一区| 国产三级欧美三级日产三级99 | 国产精品免费看片| 欧美一区二区三区免费观看视频 | 国产精品九色蝌蚪自拍| 欧美日韩一级片网站| 99视频精品在线| 国产精品影音先锋| 国产在线播放一区二区三区| 亚洲免费在线电影| 亚洲欧美影音先锋| 国产偷v国产偷v亚洲高清| 51精品国自产在线| 日本乱人伦aⅴ精品| 蜜臀av性久久久久蜜臀aⅴ流畅| 日韩无一区二区| 欧美日韩一级二级| 91官网在线观看| 91麻豆国产在线观看| 色悠悠亚洲一区二区| 91免费看视频| 国产成人av资源| 精品一区二区国语对白| 91精品国产福利在线观看| 91网址在线看| 国产精品亚洲视频| 免费人成黄页网站在线一区二区| 亚洲一区在线电影| 亚洲自拍偷拍图区| 亚洲国产日韩a在线播放性色| 国产日韩精品久久久| 国产精品美女一区二区在线观看| 久久久久久久久岛国免费| 国产精品视频你懂的| 亚洲精品国产第一综合99久久| 久久久亚洲国产美女国产盗摄 | 激情另类小说区图片区视频区| 美女高潮久久久| aaa亚洲精品| 日韩欧美在线123| 中文字幕在线一区二区三区| 亚洲一二三区不卡| 国产丶欧美丶日本不卡视频| 91在线国产观看| 欧美日韩黄色影视| 国产欧美一区二区精品秋霞影院| 亚洲特黄一级片| 久久国产生活片100| 国产综合色视频| 欧美日韩高清影院| 国产欧美一区二区精品久导航 | 久久久精品免费观看| 亚洲日本免费电影| 国产中文字幕精品| 欧美日产国产精品| 亚洲欧美自拍偷拍| 裸体一区二区三区| 欧美三片在线视频观看| 国产精品久久久久aaaa樱花| 日本成人在线不卡视频| 一本色道a无线码一区v| 国产午夜精品理论片a级大结局| 午夜日韩在线电影| 在线精品视频一区二区| 中文字幕一区视频| 成人一区二区视频| 久久久国产精品麻豆| 精品综合久久久久久8888| 欧美另类久久久品| 三级欧美韩日大片在线看| 在线一区二区视频| 亚洲成人免费av| 欧美日韩情趣电影| 亚洲影院久久精品| 88在线观看91蜜桃国自产| 成人国产视频在线观看| 日韩欧美色综合网站| 麻豆精品一区二区av白丝在线| 欧美一区在线视频| 韩国av一区二区| 欧美国产禁国产网站cc| 日韩电影免费在线看| 日韩精品一区二区在线观看| 美女诱惑一区二区| 久久久久久久综合| 日本精品视频一区二区三区| 日本午夜精品视频在线观看| 国产蜜臀97一区二区三区| 欧美色图片你懂的| 国产精品一二三区| 午夜精品爽啪视频| 欧美国产1区2区| 日韩欧美第一区| 欧洲色大大久久| 99精品久久99久久久久| 久99久精品视频免费观看| 亚洲欧美日韩在线不卡| 久久免费午夜影院| 91精品国产色综合久久久蜜香臀| 成人高清视频免费观看| 美女脱光内衣内裤视频久久网站| 亚洲乱码国产乱码精品精小说 | 久久91精品久久久久久秒播| 欧美国产成人精品| 日韩欧美一级精品久久| 欧美性生交片4| 欧美一级理论性理论a| 色婷婷久久久综合中文字幕| 国产成人丝袜美腿| 黄色日韩三级电影| 国产在线不卡一区| 蜜乳av一区二区三区| 青娱乐精品在线视频| 日韩激情视频在线观看| 日本最新不卡在线| 日韩av一区二区在线影视| 亚洲成人精品影院| 亚洲综合在线五月| 亚洲成人手机在线| 免费在线成人网| 激情综合五月天| 成熟亚洲日本毛茸茸凸凹| 国产成人av电影在线观看| 国产在线国偷精品免费看| 国产精品正在播放| 色婷婷综合久久久中文一区二区| 91丨九色丨国产丨porny| 色8久久精品久久久久久蜜| 欧美三区在线视频| wwww国产精品欧美| 亚洲欧美日韩国产综合在线| 亚洲最大色网站| 国产精品欧美久久久久无广告| 欧美国产综合色视频| 一区二区高清视频在线观看| 肉色丝袜一区二区| 成人激情综合网站| 91精品国产麻豆国产自产在线| 欧美成人vr18sexvr| 亚洲福利一区二区三区| 国产黄色精品视频| 欧美日韩久久不卡| 最好看的中文字幕久久| 日韩av一区二区在线影视| av一区二区三区四区| 欧美成人精品福利| 亚洲另类中文字| 国产一区二区按摩在线观看| 91麻豆精品国产91久久久| 国产精品看片你懂得| 美女视频黄久久| 欧美日韩激情一区二区三区| 亚洲欧洲精品一区二区三区| 免费久久精品视频| 欧美乱妇23p| 亚洲成人免费视频| 91免费视频网址| 综合色中文字幕| 粉嫩蜜臀av国产精品网站| 日韩精品一区二区三区四区视频 | 亚洲永久免费视频| 一本大道久久a久久精品综合| 国产精品美女久久久久久久久久久| 看片的网站亚洲| 久久久影视传媒| 成人一级片网址| 国产精品毛片无遮挡高清| 成人小视频免费在线观看| 午夜国产精品影院在线观看| 91麻豆国产精品久久| 亚洲精品五月天| 欧美日韩视频在线一区二区| 亚洲午夜影视影院在线观看| 欧美色图片你懂的| 免费成人你懂的| 亚洲国产高清不卡| 色欧美片视频在线观看| 亚洲不卡在线观看| 精品国产精品一区二区夜夜嗨| 国产制服丝袜一区| 亚洲色图在线看| 欧美一级艳片视频免费观看| 韩国欧美一区二区| 一区二区在线免费观看| 日韩一区二区三区高清免费看看| 国产成人精品www牛牛影视|