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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? check_midi_password.c

?? 凌陽8202T的紅外接收代碼及LED屏的驅(qū)動代碼
?? C
字號:
#ifdef MIDI_CHECK_PASSWORD_PASS_MCU 
int CheckMIDIPassWordPassMCU(char *PassWord);
int WriteEncryptData2MCU(void);
void WriteOneByte2MCU(BYTE data);
int ReadEncryptDataFromMCU(void);
int ReadOneByteFromMCU(void);
extern BYTE  get_random_number(int range);
BYTE  SendDataBuf[11];
BYTE  ReceiveDataBuf[11];

#define  CHECK_MIDI_PASSWORD_DEBUG  

/*
return 0: check sucessful
return 1: check password fail
return 2: Communication with MCU fail
*/
int CheckMIDIPassWordPassMCU(char *PassWord)
{
    #ifdef CHECK_MIDI_PASSWORD_DEBUG
         printf("\n*************CheckMIDIPassWordPassMCU()*************\n");
    #endif
    int Counter=0;
    BYTE Res=0;
    watchdog_onoff(0); 
    do
    {           
        //get encrypt data package      
        if(Counter==4)
        {
            SetEncryptDataPackage(PassWord,1);
        }
        else
        {
            SetEncryptDataPackage(PassWord,0);
        }            
        //send encrypt data to MCU   
        Res=WriteEncryptData2MCU();             
        if(Res==1)  
           { 
             return 2;//write fail
             #ifdef CHECK_MIDI_PASSWORD_DEBUG
                     printf("\n====write encrypt data fail!==========\n");
             #endif
           }           
           
        //receive encrypt data from MCU
        Res=ReadEncryptDataFromMCU();     
        if(Res==1)  
           {
              return 2;//write fail
              #ifdef CHECK_MIDI_PASSWORD_DEBUG
                     printf("\n====read encrypt data fail!===========\n");
              #endif
           }
          
        //dis-encrypt
        if(Counter==4)
        {                
            if(ReceiveDataBuf[0]!=0x68)  
            {
                #ifdef CHECK_MIDI_PASSWORD_DEBUG
                    printf("\n===========START CODE not correct!==============\n");
                #endif 
                return 1;//check password fail
            }
            if(CheckPassWordFromEncryptData(PassWord)) 
              {                  
                   #ifdef CHECK_MIDI_PASSWORD_DEBUG
                     printf("\n====check password fail!==============\n");
                   #endif
                   return 1;//check password fail
              }           
        }        
        Counter++;
        //delay 1000us
        delay_1us(1000);
       
    }
    while(Counter<10); 
    watchdog_onoff(1); 
    #ifdef CHECK_MIDI_PASSWORD_DEBUG
    if(Res==0)   printf("\n====check password sucessful!==========\n");
    #endif       
    return Res; //return 0: sucessful 
}



/*
    Send Encrypt data package:
    BYTE0:  START CODE :0xff
    BYTE1:  RANDOM_NUMBER_7
    BYTE2:  XOR_RANDOM_NUMBER_1
    BYTE3:  RANDOM_NUMBER_8
    BYTE4:  XOR_RANDOM_NUMBER_2
    BYTE5:  RANDOM_NUMBER_9    
    BYTE6:  XOR_RANDOM_NUMBER_3
    BYTE7:  RANDOM_NUMBER_1
    BYTE8:  RANDOM_NUMBER_2
    BYTE9:  RANDOM_NUMBER_3
    BYTE10: CHECK_SUM    
*/
void SetEncryptDataPackage(char *String,BYTE flag)
{
    #ifdef CHECK_MIDI_PASSWORD_DEBUG
         printf("\n**************SetEncryptDataPackage()*************\n");
    #endif
    int  i;
    unsigned char CheckSum=0;    
    BYTE Random_1=0,Random_2=0,Random_3=0;
    BYTE Random_7=0,Random_8=0,Random_9=0;
    BYTE PassWord_1=0,PassWord_2=0,PassWord_3=0;
    //random number
    Random_1=get_random_number(255); 
    Random_2=get_random_number(255); 
    Random_3=get_random_number(255); 
    Random_7=get_random_number(255); 
    Random_8=get_random_number(255); 
    Random_9=get_random_number(255); 
    #ifdef CHECK_MIDI_PASSWORD_DEBUG
         printf("\n**%x %x %x  %x  %x  %x **\n",Random_1,Random_2,Random_3,Random_7,Random_8,Random_9);         
    #endif    
    //SendDataBuf[0]
    if(flag==1)
    {
        SendDataBuf[0]=0xff; //START CODE
        PassWord_1=String[0];
        PassWord_2=String[1];
        PassWord_3=String[2];
    }
    else
    {
        SendDataBuf[0]=get_random_number(254); 
        PassWord_1=get_random_number(255); 
        PassWord_2=get_random_number(255);  
        PassWord_3=get_random_number(255); 
    }     
    //SendDataBuf[1]
    SendDataBuf[1]=Random_7;
    //SendDataBuf[2]
    SendDataBuf[2]=PassWord_1^Random_1^Random_2;
    //SendDataBuf[3]
    SendDataBuf[3]=Random_8;
    //SendDataBuf[4]
    SendDataBuf[4]=PassWord_2^Random_2^Random_3;
    //SendDataBuf[5]
    SendDataBuf[5]=Random_9;
    //SendDataBuf[6]
    SendDataBuf[6]=PassWord_3^Random_3^Random_1;
    //SendDataBuf[7]
    SendDataBuf[7]=Random_1;
    //SendDataBuf[8]
    SendDataBuf[8]=Random_2;
    //SendDataBuf[9]
    SendDataBuf[9]=Random_3;
    //SendDataBuf[10]
    for(i=0;i<10;i++)
        CheckSum+=SendDataBuf[i];
    SendDataBuf[10]=CheckSum; 
    #ifdef CHECK_MIDI_PASSWORD_DEBUG
         printf("\n**%x %x %x  %x  %x  %x %x  %x  %x  %x  %x**\n",SendDataBuf[0],
         SendDataBuf[1],SendDataBuf[2],SendDataBuf[3],SendDataBuf[4],SendDataBuf[5],
         SendDataBuf[6],SendDataBuf[7],SendDataBuf[8],SendDataBuf[9],SendDataBuf[10]);         
    #endif       
}


/*
return 0: sucessful
return 1: fail
*/ 
int WriteEncryptData2MCU(void)
{   
    #ifdef CHECK_MIDI_PASSWORD_DEBUG
         printf("\n**************WriteEncryptData2MCU()*************\n");
    #endif
    int i;
    BYTE   num;
    UINT32 TimeOut=0;    
//-------------------------------------------------------------------------
//           Risc handshaking with MCU  
//-------------------------------------------------------------------------
    //CLK=0
    GPIO_O_SET(CLK, 0);
    //Judge if STB is low
    while((GPIO_I_GET(STB)!=0)&&(TimeOut < 100000))
    {
        TimeOut ++;
    }
    if (TimeOut >= 100000)//time out after 10ms
    {
        GPIO_O_SET(CLK, 1); //CLK=1
        #ifdef CHECK_MIDI_PASSWORD_DEBUG
            printf("\n================Write time out 1===================\n");
        #endif 
        return 1;
    }
    //Delay 100us
    delay_1us(100);
    //clear TimeOut
    TimeOut=0;
    //CLK=1
    GPIO_O_SET(CLK, 1);
    
    //Judge if STB is high
    while((GPIO_I_GET(STB)==0)&&(TimeOut < 100000))
    {
        TimeOut ++;
    }
    if (TimeOut >= 100000)//time out after 10ms
    {    
        TimeOut=0;
        #ifdef CHECK_MIDI_PASSWORD_DEBUG
         printf("\n================Write time out 2====================\n");
        #endif     
        return 1;
    }
    TimeOut=0;
//-------------------------------------------------------------------------
//                  Risc transmit data to MCU
//------------------------------------------------------------------------- 
    
     //Delay 200us
    delay_1us(200);    //very important!
    
    watchdog_onoff(0);   
    
    for(i=0;i<11;i++)
    {
        num=SendDataBuf[i];
        WriteOneByte2MCU(num);     
        delay_1us(200);    //very important!   
    }    
    
    watchdog_onoff(1);   
    
    //Set DAT Input port
    GPIO_E_SET(DAT, 0);     
    return 0;
}
/*
return 0: sucessful
return 1: fail
*/
int CheckPassWordFromEncryptData(char *string)
{
    #ifdef CHECK_MIDI_PASSWORD_DEBUG
         printf("\n*********checkPassWordFromEncryptData()************\n");
    #endif  
    BYTE PassWord1,PassWord2,PassWord3;
    BYTE RandomNumber4,RandomNumber5,RandomNumber6;
    BYTE XorRandomNum4,XorRandomNum5,XorRandomNum6;
    XorRandomNum4=ReceiveDataBuf[2];
    XorRandomNum5=ReceiveDataBuf[4];
    XorRandomNum6=ReceiveDataBuf[6];
    RandomNumber4=ReceiveDataBuf[7];
    RandomNumber5=ReceiveDataBuf[8];
    RandomNumber6=ReceiveDataBuf[9];
    PassWord1=XorRandomNum4^RandomNumber4^RandomNumber5;
    PassWord2=XorRandomNum5^RandomNumber5^RandomNumber6;
    PassWord3=XorRandomNum6^RandomNumber6^RandomNumber4;
    if((PassWord1==string[0])&&(PassWord2==string[1])&&(PassWord3==string[2]))
    {
        #ifdef CHECK_MIDI_PASSWORD_DEBUG
            printf("\n**%c %c %c **\n",PassWord1,PassWord2,PassWord3);
            printf("\n==============MIDI check password sucessful!=================\n");
        #endif
        return 0;
    }
    else
    { 
        #ifdef CHECK_MIDI_PASSWORD_DEBUG
            printf("\n==============MIDI check password fail!=================\n");
        #endif
        return 1;
    }
}
/*
    Receive Encrypt data package:
    BYTE0:  START CODE :0x68
    BYTE1:  RANDOM_NUMBER_10
    BYTE2:  XOR_RANDOM_NUMBER_4
    BYTE3:  RANDOM_NUMBER_11
    BYTE4:  XOR_RANDOM_NUMBER_5
    BYTE5:  RANDOM_NUMBER_12    
    BYTE6:  XOR_RANDOM_NUMBER_6
    BYTE7:  RANDOM_NUMBER_4
    BYTE8:  RANDOM_NUMBER_5
    BYTE9:  RANDOM_NUMBER_6
    BYTE10: CHECK_SUM   

    return 0: sucessful
    return 1: fail
*/ 
int ReadEncryptDataFromMCU(void)
{   
    int i ,num=0;
    BYTE RecData=0;
    BYTE  Sum=0,CheckSum=0;
    UINT32 TimeOut=0; 
    //Wait for STB level
    while(GPIO_I_GET(STB))  {}    
    //CLK=0
    GPIO_O_SET(CLK, 0);    
    //Judge if STB is high
    while(!GPIO_I_GET(STB)&&(TimeOut < 100000))
    {
        TimeOut ++;
    }
    if (TimeOut >= 100000)//time out after 10ms
    {        
        #ifdef CHECK_MIDI_PASSWORD_DEBUG
            printf("\n===========read time out===============\n");
        #endif
        GPIO_O_SET(CLK, 1);    //very important!
        return 1;
    }
    TimeOut=0;
    //CLK=1
    GPIO_O_SET(CLK, 1);  
    //wait STB come to low level
   	while(GPIO_I_GET(STB)!=0) {}    		
    watchdog_onoff(0);   
    for(i=0;i<11;i++)    
    {     	
        num=ReadOneByteFromMCU();
        if(num==-1)
        {
          #ifdef CHECK_MIDI_PASSWORD_DEBUG
            printf("\n===========read one byte fail !================\n");
          #endif  
          return 1;
        }  
        else
        {
          ReceiveDataBuf[i]=num;   
        }     
    }  
    //Set DAT output port
    GPIO_E_SET(DAT, 1);    
    GPIO_O_SET(DAT, 1);    
    watchdog_onoff(1);   
      
    //get Sum  
    for(i=0;i<10;i++) 
        {
            Sum+=ReceiveDataBuf[i];
        }
    //get CheckSum
    CheckSum=ReceiveDataBuf[10];    
    //judge check sum
    if(Sum!=CheckSum)
      {
        #ifdef CHECK_MIDI_PASSWORD_DEBUG
            printf("\n===========check sum not correct!==============\n");
        #endif 
        return 1;
      } 
    else
         {
            #ifdef CHECK_MIDI_PASSWORD_DEBUG
                printf("\n===========check sum sucessful!==============\n");
            #endif 
         }  
  
      #ifdef CHECK_MIDI_PASSWORD_DEBUG
         printf("\nrec %x %x %x  %x  %x  %x %x  %x  %x  %x  %x**\n",ReceiveDataBuf[0],
         ReceiveDataBuf[1],ReceiveDataBuf[2],ReceiveDataBuf[3],ReceiveDataBuf[4],ReceiveDataBuf[5],
         ReceiveDataBuf[6],ReceiveDataBuf[7],ReceiveDataBuf[8],ReceiveDataBuf[9],ReceiveDataBuf[10]);         
      #endif   
    return 0;
}
//----------------------------write------------------------------------
void WriteOneByte2MCU(BYTE data)
{    
    int i,j,bit;     
    for(i=0;i<8;i++)
    {
       //CLK=0
       GPIO_O_SET(CLK, 0);        
       bit=((data<<i)&0x80);
       if(bit==0)
       {
            //DAT LOW;              
            GPIO_O_SET(DAT, 0);
       }
       else
       {
            //DAT HIGH;             
            GPIO_O_SET(DAT, 1);  
       }   
       //Delay 100us
       delay_1us(100);
       //CLK=1
       GPIO_O_SET(CLK, 1);      
       //Delay 100us 
       delay_1us(100);  
      
    }
}

/*
return data: receive one byte data from MCU
*/
int ReadOneByteFromMCU(void)
{        
    int i;
    BYTE data=0; 
    UINT32 Timeout=0;
    
    for(i=0;i<8;i++)
    {    
        if(i==0)        
         { 
            data=data<<0;  
         }
        else   
         { 
            data=data<<1; 
         }   
        //wait for STB low level
        while(!GPIO_I_GET(STB)) {}          
        if(GPIO_I_GET(DAT))
           {     
                data=data|0x01;             
           }
        else
           {                 
           	    data=data&(~0x01);             	   	 
           }      
            //wait for STB high level
            while(GPIO_I_GET(STB)&&(Timeout < 4000)) 
            {
                Timeout++; 
                delay_1us(1); 
            }   
             if(Timeout>=4000) 
            {
                printf("\n=receive over!==\n");
                Timeout=0;
                break;                 
            }
            Timeout=0;
    }  
    
    return data;
}
#endif


?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲另类在线视频| 久久久蜜桃精品| 亚洲网友自拍偷拍| 在线观看一区不卡| 日韩在线a电影| 精品国产亚洲在线| 国产福利不卡视频| 国产精品毛片久久久久久| av一本久道久久综合久久鬼色| 中日韩av电影| 色婷婷久久99综合精品jk白丝| 亚洲宅男天堂在线观看无病毒| 欧美日韩国产中文| 裸体一区二区三区| 久久久久久久久岛国免费| 成人国产在线观看| 性做久久久久久免费观看| 91精品久久久久久久99蜜桃| 精品制服美女久久| 中文字幕字幕中文在线中不卡视频| 色天使色偷偷av一区二区| 日韩黄色免费网站| 欧美国产欧美综合| 精品视频在线免费| 国产在线视频一区二区| 国产精品青草久久| 欧美一区二区在线看| 国产成人免费视频网站| 亚洲一区二区在线播放相泽 | 成人午夜视频在线观看| 一区二区三区中文免费| 欧美精品一区二区不卡 | 美女性感视频久久| 国产精品初高中害羞小美女文| 欧美日韩精品一区二区三区蜜桃| 国产一区二区三区国产| 一区二区三区蜜桃| 亚洲国产成人自拍| 91精品免费观看| 一本色道久久综合精品竹菊| 日日夜夜精品视频免费| 中文字幕精品一区二区精品绿巨人| 欧美做爰猛烈大尺度电影无法无天| 精品一区二区在线观看| 亚洲综合免费观看高清完整版在线 | 99综合影院在线| 蜜桃视频一区二区三区在线观看| 日韩毛片视频在线看| 精品国产一二三| 欧美日本一区二区三区四区| 国产精品888| 日本欧美一区二区三区乱码| 日韩美女啊v在线免费观看| 久久婷婷一区二区三区| 555www色欧美视频| 91免费视频网| av在线不卡网| 岛国av在线一区| 国产综合色视频| 日韩电影在线观看网站| 亚洲制服丝袜在线| 亚洲视频一二三| 国产日产欧美一区二区三区| 日韩一区二区三区av| 91极品美女在线| 91麻豆蜜桃一区二区三区| 国产麻豆一精品一av一免费| 蜜桃精品视频在线| 美女看a上一区| 日本在线播放一区二区三区| 亚洲电影视频在线| 亚洲在线观看免费| 亚洲国产成人91porn| 亚洲精品乱码久久久久| 亚洲精品亚洲人成人网在线播放| 国产精品美女久久久久久久久| 久久久亚洲高清| 久久精品夜色噜噜亚洲aⅴ| 精品国偷自产国产一区| 欧美tickle裸体挠脚心vk| 日韩精品一区二区三区swag| 日韩一区二区免费电影| 精品乱码亚洲一区二区不卡| 日韩精品一区二区在线| 精品国产91乱码一区二区三区| 日韩欧美成人一区| 国产亚洲精品免费| 中文字幕免费一区| 亚洲乱码国产乱码精品精小说| 最新国产精品久久精品| 日韩毛片精品高清免费| 亚洲综合久久久久| 日韩vs国产vs欧美| 国产制服丝袜一区| eeuss鲁一区二区三区| 99精品在线免费| 欧美视频第二页| 欧美一区二区成人| 国产视频在线观看一区二区三区 | 一区二区免费视频| 日本在线观看不卡视频| 激情五月婷婷综合网| 国产91精品一区二区麻豆亚洲| 成人激情图片网| 在线观看三级视频欧美| 欧美男人的天堂一二区| 久久这里只精品最新地址| 国产精品系列在线| 亚洲超碰精品一区二区| 国产一二精品视频| 91精彩视频在线观看| 精品日产卡一卡二卡麻豆| 国产精品美女久久久久久| 亚洲精品日日夜夜| 精品一区二区三区日韩| 99久久免费视频.com| 日韩视频一区在线观看| 亚洲视频一区二区在线| 久久精品国产一区二区三| 粉嫩av亚洲一区二区图片| 欧美日韩一区在线| 久久九九久精品国产免费直播| 亚洲精品福利视频网站| 国产一区二区三区不卡在线观看| 91黄色激情网站| 久久亚洲欧美国产精品乐播| 亚洲图片一区二区| 岛国精品一区二区| 日韩午夜在线观看视频| 亚洲一区在线观看免费| 国产精品一二三在| 欧美一区二区三区日韩视频| 中文字幕视频一区二区三区久| 日韩av电影一区| 色综合色狠狠综合色| 久久久久久久久97黄色工厂| 三级不卡在线观看| 97精品视频在线观看自产线路二| 欧美v亚洲v综合ⅴ国产v| 亚洲成在人线免费| 91麻豆文化传媒在线观看| 久久久国产综合精品女国产盗摄| 日韩有码一区二区三区| 色综合久久久久网| 一区在线中文字幕| 国产剧情av麻豆香蕉精品| 欧美一区二区精品| 日韩二区三区四区| 欧美色视频一区| 亚洲精品欧美专区| www.av亚洲| 欧美激情一区二区三区四区| 狠狠色狠狠色综合日日91app| 欧美日韩精品一区视频| 亚洲一区自拍偷拍| 91福利在线导航| 一区二区三区产品免费精品久久75| 国产91丝袜在线观看| 久久人人爽人人爽| 国产综合色在线视频区| 久久综合狠狠综合| 黑人精品欧美一区二区蜜桃| 欧美岛国在线观看| 国内精品在线播放| 久久久久久久免费视频了| 国产综合色产在线精品| 精品999久久久| 国产一区二区视频在线| 久久久久久久电影| 成人一区二区三区在线观看| 国产欧美日韩在线视频| 风间由美性色一区二区三区| 国产亚洲va综合人人澡精品| 国产精品亚洲人在线观看| 国产亚洲精品7777| 99久久亚洲一区二区三区青草| 136国产福利精品导航| 91久久免费观看| 亚洲成人在线网站| 欧美一区二区三区四区视频| 久久精品72免费观看| 久久免费视频色| aaa国产一区| 亚洲国产精品久久人人爱| 7799精品视频| 国产露脸91国语对白| 中文字幕一区二区三区精华液| 91在线视频播放地址| 午夜视频一区在线观看| 日韩久久久久久| av亚洲精华国产精华| 午夜精品福利一区二区三区av| 日韩精品中文字幕在线一区| 国产aⅴ综合色| 亚洲最大的成人av| 精品国精品国产| 91蝌蚪porny九色| 七七婷婷婷婷精品国产| 国产精品你懂的| 欧美人与禽zozo性伦|