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

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

?? read_card.c

?? 51系列單片機讀卡程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include"c8051f020.h"
#define uint  unsigned int 
#define uchar unsigned char
#define main_add   0
#define slave_add  1

uint    xdata CardData[1000];            //卡中數據
uint    *p_CardBufBegin=&CardData[0];
uint    *p_CardBufEnd=&CardData[500];
uint    *p_CardBufIn=&CardData[0];
uint    *p_CardBufOut=&CardData[0];
uint    *p_CardBufOutCur=&CardData[0];
uchar          CardCountRead;
uchar          CardCountCur;

uchar   oldCardNo[4];                   //上一張卡號 
uchar   newCardNo[4];                   //下一張卡號 
uchar   CardKey[6];                     //卡密碼
uchar   KeyType;                        //密碼類型 
uchar   SectorNo;                       //扇區號
uchar   BlockNo;                        //塊號
uchar   check_sum;
uchar   comm_lenth;
uchar   rx1_data_num;

uchar  xdata    tx0[60],*p_tx0=tx0,tx0_num;         //串口0
uchar  xdata    rx0[60],*p_rx0=rx0,rx0_num;                   
uchar  xdata    tx1[210],*p_tx1=tx1,tx1_num;         //串口1
uchar  xdata    rx1[20],*p_rx1=rx1,rx1_num;

bit            tx0_over;
bit            delay_en,delay_over;
uchar          delay_count,i;
                   
void  TIME0_ISR(void);
void  UART0_ISR(void);
void  UART1_ISR(void);

void   config(void);               
void   Delay_10ms(void);

uchar  Commu_Test(void);                            //通訊測試 
uchar  DownLoad_Psd(uchar,uchar,uchar *);           //下載密碼
uchar  Search_Card(void);                           //尋卡 
uchar  Psd_Verify(uchar,uchar,uchar *);             //密碼驗證
uchar  Read_Card(uchar);                            //讀卡
void   Close_Card(void);                            //關閉卡片
void   Buzz_One(uchar);	                            //蜂鳴器響一聲
//============*主函數*=================
void  main(void)
   {config();
    EA=1;
    TR0=1;
    TR2=1;
    TMR3CN=0x04;
    tx0_over=0;
    delay_en=0;
    delay_over=0;
    rx0_num=0;
    rx1_num=0;
    CardCountRead=0;
    check_sum=0;


    while(Commu_Test()!=1);
//  CardKey[0]=0x38;
//  CardKey[1]=0x57;
//  CardKey[2]=0x91;
//  CardKey[3]=0x41;
//  CardKey[4]=0x50;
//  CardKey[5]=0x33;
//  KeyType=0x00;
//  SectorNo=0x01;
//  while(DownLoad_Psd(KeyType,SectorNo,CardKey)!=1);
    while(1)
       {while(Search_Card()==0);
        if(Psd_Verify(0x00,0x04,newCardNo)==0)
           {Close_Card(); 
            continue;
           }
        for(i=0;i<4;i++)
              {if(newCardNo[i]!=oldCardNo[i])
                  {if(Read_Card(0x04)==1)
                     {Buzz_One(0x30);
                      for(i=0;i<4;i++)
                         oldCardNo[i]=newCardNo[i];
                     }
                   break;
                  }
              }
        Close_Card(); 
           
       }   
    }
//=====================================
//          中斷服務程序
//=====================================
void  TIME0_ISR(void) interrupt 1 using 1  //系統時鐘中斷(1ms)
  {TH0=0xf1;         //2ms
  	TL0=0x9a;
   if(delay_en==1)
      if(--delay_count==0)
        {delay_en=0;
         delay_over=1;
        }
   }
//-------------------------------------
void  UART0_ISR(void) interrupt 4 using 2  //串口0中斷
   {if(TI0==1)
      {TI0=0;
       if(--tx0_num!=0)
         SBUF0=*p_tx0++;
       else
        {p_tx0=tx0;
         tx0_over=1;
        }
      }
   if(RI0==1)
      {RI0=0;
       rx0[rx0_num++]=SBUF0;
      }
  }
//-------------------------------------
void  UART1_ISR(void) interrupt 20 using 3 //串口1中斷
   {uchar temp,i;
    temp=SCON1;
    if((temp&=0x02)!=0)
      {SCON1&=0xfd;
       if(--tx1_num!=0)
          SBUF1=*p_tx1++;
       else
         {p_tx1=tx1;
  //        tx1_over=1;
         }     
      }

    temp=SCON1;
    if((temp&=0x01)!=0)
      {SCON1&=0xfe;
       temp=SBUF1;

       switch(rx1_num)
	           {case 0:
		               if(temp==0xd7)
			                 {check_sum^=temp;rx1_num++;} 
		               break;
             case 1:
		               if(temp==0x09)
                    {check_sum^=temp;rx1_num++;}
                 else
                    {rx1_num=0;check_sum=0;}
		               break;
             case 2:
                 if(temp==main_add)            //源地址
                    {check_sum^=temp;rx1_num++;}
                 else
                    {rx1_num=0;check_sum=0;}
		               break;
             case 3:
		               if((temp==slave_add)||(temp==0xff))           //目的地址
                    {check_sum^=temp;rx1_num++;}
                 else
                    {rx1_num=0;check_sum=0;}
		               break;
             case 4:
		               comm_lenth=temp;            //命令長度
                 check_sum^=temp;
			              rx1_num++;
		               break;
             case 5:
                 rx1[rx1_data_num]=temp;                //命令碼
                 check_sum^=temp;
                 if(++rx1_data_num==comm_lenth)
                     rx1_num++;
		               break;
             case 6:
		               if(check_sum==temp)
                    rx1_num++;
                 else
                    rx1_num=0;
                 check_sum=0;
		               break;
             case 7:
                 rx1_num=0;
                 rx1_data_num=0;
		               if(temp==0x16)
                     switch(rx1[0])
                        {case  1:
                                tx1[0]=0xeb;
                                check_sum^=tx1[0];
                                tx1[1]=0x90;
                                check_sum^=tx1[1];
                                tx1[2]=slave_add;
                                check_sum^=tx1[2];
                                tx1[3]=main_add;
                                check_sum^=tx1[3];
                                p_CardBufOutCur=p_CardBufOut;
                                if(CardCountRead<=100)
                                   {CardCountCur=CardCountRead;
                                    tx1[4]=CardCountCur*2+1;
                                   }
                                else
                                   {CardCountCur=100;
                                    tx1[4]=201;
                                   }
                                check_sum^=tx1[4];
                                tx1[5]=0x81;
                                check_sum^=tx1[5];
                                if(CardCountCur!=0)
                                    {for(i=0;i<CardCountCur;i++)
                                        {tx1[6+i*2]=*p_CardBufOutCur&0x00ff;
                                         check_sum^=tx1[6+i*2];
                                         tx1[7+i*2]=(*p_CardBufOutCur>>8)&0x00ff;
                                         check_sum^=tx1[7+i*2];
                                         if(++p_CardBufOutCur==p_CardBufEnd)
                                             p_CardBufOutCur=p_CardBufBegin;
                                        }
                                    }
                                tx1[CardCountCur*2+6]=check_sum;
                                tx1[CardCountCur*2+7]=0x16;
                                check_sum=0;
                                tx1_num=CardCountCur*2+8;
                                SBUF1=*p_tx1++;
                                break; 
                        case  2:
                              //  check_time=1;
                                break;
                        case  3:
                                if(rx1[1]==CardCountCur)
                                    {CardCountRead -= CardCountCur;
                                     p_CardBufOut=p_CardBufOutCur;
                                    }
                        default:
                                break;
                       }
                 break;
	           }       
      }
   }
//=====================================
void Delay_10ms(void)
   {delay_count=10;
    delay_over=0;
    delay_en=1;
    while(delay_over!=1);
   }
//=====================================通訊測試 
uchar  Commu_Test(void)
   {uint  n=0;
    tx0[0]=0x3c;
    tx0[1]=0x04;
    tx0[2]=0x00;
    tx0[3]=0x60;
    tx0[4]=0x00;
    tx0[5]=0x00;
    tx0[6]=0x58;      
    tx0[7]=0x0d;
    tx0_num=8;
    SBUF0=*p_tx0++;
    while(tx0_over!=1);

    rx0_num=0;
    while(n<65535)
      {if(rx0_num>=4) break;
       n++;
      }
    Delay_10ms();
    rx0_num=0;
    if(rx0[2]==0x01)
       return 1;
    else 
       return 0;
   }
//=====================================下傳密碼
uchar DownLoad_Psd(uchar tmpKeyType,uchar tmpSectorNo,uchar *tmpCardKey)
   {uint  i,n=0;
    tx0[0]=0x3c;
    tx0[1]=0x0a;
    tx0[2]=0x01;
    tx0[3]=0x69;
    tx0[4]=tmpKeyType;
    tx0[5]=tmpSectorNo;
    for(i=0;i<6;i++) 
         tx0[6+i]=tmpCardKey[i];     //六字節卡密碼
    tx0[12]=0;
    for(i=0;i<12;i++)
        tx0[12]^=tx0[i];
    tx0[13]=0x0d;
    tx0_num=14;
    SBUF0=*p_tx0++;
    while(tx0_over!=1);

    rx0_num=0;
    while(n<65535)
      {if((rx0[1]==0x02)&&(rx0_num>=6)) break;
       if((rx0[1]==0x01)&&(rx0_num>=5)) break;
       n++;
      }
    Delay_10ms();
    rx0_num=0;
    if(rx0[1]==0x02)
       return 1;
    else 
       return 0;
   }
//=====================================尋卡命令

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区在线播放| 亚洲电影你懂得| 亚洲成人av资源| 国产精品一区二区三区四区| 欧美艳星brazzers| 国产日韩欧美不卡| 日韩福利视频网| 日本道在线观看一区二区| 日本一区二区视频在线观看| 日本va欧美va欧美va精品| 色哟哟日韩精品| 国产精品国产精品国产专区不片| 免费在线观看日韩欧美| 精品视频1区2区| 亚洲欧美一区二区久久| 成人黄动漫网站免费app| 亚洲精品一区二区三区99| 天天色综合成人网| 在线观看视频一区| 亚洲激情一二三区| 91原创在线视频| 国产精品第五页| 波多野结衣亚洲| 国产精品天美传媒沈樵| 国产一区二区91| 26uuu成人网一区二区三区| 捆绑变态av一区二区三区| 欧美久久久久久久久中文字幕| 一区二区三区在线视频免费观看 | 99热99精品| 国产视频一区二区在线观看| 韩日av一区二区| 精品国产不卡一区二区三区| 六月丁香综合在线视频| 日韩欧美亚洲另类制服综合在线| 亚洲不卡在线观看| 欧美精品精品一区| 蜜桃精品视频在线观看| 欧美一卡二卡三卡| 国内偷窥港台综合视频在线播放| 日韩欧美高清dvd碟片| 国内欧美视频一区二区| 久久精品一区二区| 成人丝袜视频网| 136国产福利精品导航| 色综合久久综合| 亚洲国产综合人成综合网站| 欧美一区二区视频网站| 国产精一区二区三区| 中文字幕中文字幕中文字幕亚洲无线| 91在线观看美女| 丝袜美腿亚洲综合| 2020国产精品| 色综合视频一区二区三区高清| 一区二区三区波多野结衣在线观看 | 亚洲成a人在线观看| 91麻豆精品国产91久久久更新时间| 免费人成在线不卡| 久久久一区二区三区捆绑**| av不卡免费电影| 偷偷要91色婷婷| 国产性做久久久久久| 色综合中文字幕国产 | 91久久线看在观草草青青| 亚洲sss视频在线视频| 日韩欧美第一区| 9久草视频在线视频精品| 亚洲高清一区二区三区| 国产亚洲欧美一区在线观看| 95精品视频在线| 老司机精品视频导航| 国产精品视频在线看| 欧美日韩大陆一区二区| 丰满亚洲少妇av| 丝袜美腿亚洲综合| 一色桃子久久精品亚洲| 日韩一二在线观看| 91啪亚洲精品| 国产麻豆精品久久一二三| 亚洲二区在线视频| 成人欧美一区二区三区视频网页 | 日韩精品色哟哟| 国产精品欧美精品| 精品奇米国产一区二区三区| 色婷婷狠狠综合| 国产福利一区二区| 日本成人中文字幕| 亚洲一区二区高清| 亚洲欧洲精品成人久久奇米网| 欧美第一区第二区| 欧美高清性hdvideosex| 欧美日韩精品一区二区三区四区| 国产麻豆成人精品| 美女在线视频一区| 天堂在线一区二区| 伊人色综合久久天天| 中文字幕av一区二区三区高| 日韩欧美色电影| 51精品国自产在线| 欧美吻胸吃奶大尺度电影| 99久久精品国产麻豆演员表| 国产成人在线视频网站| 久久99蜜桃精品| 免费观看一级特黄欧美大片| 亚洲成人动漫精品| 亚洲国产日韩综合久久精品| 亚洲欧美偷拍三级| 亚洲欧美日韩成人高清在线一区| 国产精品污www在线观看| 久久久亚洲综合| 国产日韩欧美一区二区三区综合| 精品国产一区二区三区久久久蜜月| 在线综合+亚洲+欧美中文字幕| 欧美日韩国产一区| 欧美日韩精品久久久| 这里只有精品99re| 91精品国产91久久久久久最新毛片| 欧美电影在哪看比较好| 欧美久久久久久久久中文字幕| 欧美精品xxxxbbbb| 91精品麻豆日日躁夜夜躁| 91精品国产色综合久久久蜜香臀| 538prom精品视频线放| 欧美精品欧美精品系列| 日韩亚洲欧美高清| 欧美变态凌虐bdsm| 国产欧美日韩久久| 亚洲图片另类小说| 亚洲无线码一区二区三区| 天堂va蜜桃一区二区三区| 久久精品二区亚洲w码| 国产美女在线精品| 成人午夜免费电影| 欧美在线高清视频| 欧美一级夜夜爽| 国产清纯白嫩初高生在线观看91| 国产精品国产成人国产三级| 亚洲精品视频在线观看网站| 天天综合色天天综合| 国产九九视频一区二区三区| gogo大胆日本视频一区| 欧美图片一区二区三区| 日韩精品一区二区三区在线观看| 久久久久久电影| 一区二区成人在线| 久久99国产乱子伦精品免费| 粉嫩在线一区二区三区视频| 欧美亚洲综合色| wwwwxxxxx欧美| 亚洲一区二区三区视频在线 | 精品理论电影在线观看 | 欧美大胆人体bbbb| 国产精品色眯眯| 日韩va欧美va亚洲va久久| 高清beeg欧美| 制服视频三区第一页精品| 国产精品拍天天在线| 亚洲成av人片一区二区梦乃| 国产不卡视频一区| 欧美乱妇一区二区三区不卡视频| 国产网红主播福利一区二区| 亚洲自拍偷拍九九九| 国产成人精品免费在线| 欧美精品久久久久久久多人混战| 日本一二三不卡| 美女久久久精品| 日本电影欧美片| 中文字幕免费不卡| 久久福利资源站| 欧美日本一道本在线视频| 国产色婷婷亚洲99精品小说| 日本欧美在线观看| 色婷婷综合久色| 国产精品欧美久久久久无广告 | 国产一区在线精品| 欧美日韩国产免费一区二区 | 97久久久精品综合88久久| 日韩午夜激情av| 亚洲va欧美va天堂v国产综合| 成人国产一区二区三区精品| 精品成人免费观看| 日韩高清不卡在线| 欧美日韩精品一区二区| 亚洲免费成人av| 99热这里都是精品| 国产精品久久久久久久久搜平片| 国产一区二区三区综合| 日韩欧美一二区| 麻豆91在线看| 欧美一区二区视频在线观看2020| 五月婷婷激情综合| 欧美日韩一二三| 天天亚洲美女在线视频| 欧美日韩激情在线| 偷拍一区二区三区四区| 欧美三区免费完整视频在线观看| 亚洲精品国产高清久久伦理二区| 成人一区二区视频| 国产精品高清亚洲| 91片在线免费观看|