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

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

?? sle4442.c

?? 讀卡器源碼
?? C
字號:

#include <stdio.h>
#include <intrins.h>
#include <reg51.h>
#include <sle4442.h>
/*********************************************************************  

函 數 名: ReadMainMem()
功    能: 讀ic卡主存
說    明: 
調    用: 
全局變量:
入口參數: IC卡地址(32 - 255),指向內部RAM的指針,字節數
出口參數:指向內部RAM的指針 *pt
返 回 值: 無
設    計:zhaojunjie                   日期:2002-04-24
修    改:                             日期:
*********************************************************************/
void ReadMainMem(uchar addr,uchar idata *pt,uchar count)
{
    ResetCard();
    SendComm(RMM_COMM,addr,0xff);
    ReadMode(pt,count);
    BreakOperate();
}
/*********************************************************************  

函 數 名: WriteMainMem()
功    能: 寫IC卡主存,一次 1Byte
說    明: 
調    用: 
全局變量:
入口參數: addr: IC卡地址(32 - 255), pt: 指向數據區的指針  i:字節數 
出口參數:無
返 回 值: 無
設    計:zhaojunjie                   日期:2002-04-24
修    改:                             日期:
*********************************************************************/
void WriteMainMem(uchar addr,uchar idata *pt)
{
    ResetCard();
    SendComm(WMM_COMM, addr, *pt);     //寫主存的命令字,地址,數據
    ProcessMode();
    BreakOperate();    
}
/*********************************************************************  

函 數 名: ReadProtectMem()
功    能: 讀保護存儲器
說    明: 
調    用: 
全局變量:
入口參數: 指向直接尋址數據區的指針
出口參數:無
返 回 值: 無
設    計:zhaojunjie                   日期:2002-04-24
修    改:                             日期:
*********************************************************************/
void ReadProtectMem(uchar idata *pt)
{
    ResetCard();    
    SendComm(RPM_COMM,0xff,0xff); //讀保護存儲器的命令字,后兩個參數忽略
    ReadMode(pt,4);               //讀出
    BreakOperate();        
}
/*********************************************************************  

函 數 名: ProtectByte()
功    能: 保護一字節,注意待保護的字節是已經寫入過的,地址只能在保護存儲區內
說    明: 
調    用: 
全局變量:
入口參數: IC卡地址,指向直接尋址數據區的指針
出口參數:無
返 回 值: 無
設    計:zhaojunjie                   日期:2002-04-24
修    改:                             日期:
*********************************************************************/
void ProtectByte(uchar addr,uchar idata *pt)
{
    ResetCard();
    SendComm(WPM_COMM, addr, *pt); //寫保護存儲區的命令字,地址,數據
    ProcessMode();
    BreakOperate();            
}

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

函 數 名: SendComm()
功    能: 發送命令
說    明:
調    用: 
全局變量:
入口參數: a: 命令字, b: 地址, c: 數據
出口參數:無
返 回 值: 無
設    計:zhaojunjie                   日期:2002-04-24
修    改:                             日期:
*********************************************************************/
void SendComm(uchar a,uchar b,uchar c)
{
    StartComm();          //開始發送命令
    WriteByte(a);          //a: 發命令字
    WriteByte(b);          //b: 發地址
    WriteByte(c);          //c: 發數據
    StopComm();           //結束發送命令
}
/*********************************************************************  

函 數 名: StartComm()
功    能: 開始命令模式
說    明: (內部函數)
調    用: 
全局變量:
入口參數: 無
出口參數:無
返 回 值: 無
設    計:zhaojunjie                   日期:2002-04-24
修    改:                             日期:
*********************************************************************/
void StartComm(void)
{
    IC_CLK = 0;
    IC_IO  = 1;
    Delay5us();
    IC_CLK = 1;
    Delay5us();
    IC_IO  = 0;
    Delay5us();
}
/*********************************************************************  

函 數 名: StopComm()
功    能: 結束命令模式
說    明: (內部函數)
調    用: 
全局變量:
入口參數: 無
出口參數:無
返 回 值: 無
設    計:zhaojunjie                   日期:2002-04-24
修    改:                             日期:
*********************************************************************/
void StopComm(void)
{
    IC_CLK = 0;
    IC_IO  = 0;
    Delay5us();
    IC_CLK = 1;        //CLK: H
    Delay5us();
    IC_IO  = 1;        //IO : H
    Delay10us();
}
/*********************************************************************  

函 數 名: ResetCard()
功    能: 卡復位和復位應答
說    明: (內部函數)
調    用: 
全局變量:
入口參數: 無
出口參數:無
返 回 值: 無
設    計:zhaojunjie                   日期:2002-04-24
修    改:                             日期:
*********************************************************************/
void ResetCard(void)
{
    uchar temp;
    Delay5us();    
    IC_RST = 0;        
    IC_CLK = 0;     
    IC_IO  = 1;    
    Delay5us();  
    
    IC_RST = 1;
    Delay5us();
    IC_CLK = 1;
    Delay10us();
    Delay10us();
    Delay10us();
    Delay10us();
    IC_CLK = 0;
    Delay5us();
    IC_RST = 0;
    Delay10us();     //復位和復位應答時序
                     //      ___
                     //RST _|   |_______________________   
                     //       _   _        __   __
                     //CLK __|0|_|1|_ ..._|31|_|32|_____
                     //   _   __  __           ___  _____
                     //     \/  \/D0\ ...    \/D31\/
                     //I/O _/\__/\__/        /\___/
    
    temp = ReadByte();
    temp = ReadByte();
    temp = ReadByte();
    temp = ReadByte();   //空讀 32Bit (4Byte)
    IC_CLK = 0;         //     __   __  IC sets I/O to state H
    Delay5us();         //CLK_|31|_|32|______________
    IC_IO  = 1;          //     __   ___  ____________
    _nop_();             //     30 \/ 31\/
    IC_CLK = 0;          //I/O  __ /\___/
    Delay5us();
    
}
/*********************************************************************  

函 數 名: BreakOperate()
功    能: SLE/4442 IC卡操作中止
說    明: (內部函數)
調    用: 
全局變量:
入口參數: 無
出口參數:無
返 回 值: uchar
設    計:zhaojunjie                   日期:2002-04-24
修    改:                             日期:
***********************************************************************/
void BreakOperate(void)
{
     IC_CLK = 0;
     IC_RST = 0;
     IC_IO  = 0;
     Delay5us();
     IC_RST = 1;
     IC_IO  = 1;
     Delay5us();
     IC_RST = 0;
     Delay5us();
}
/*********************************************************************  

函 數 名: ReadByte()
功    能: 從SLE4442讀一個字節
說    明: (內部函數)
調    用: 
全局變量:
入口參數: 無
出口參數:無
返 回 值: uchar
設    計:zhaojunjie                   日期:2002-04-24
修    改:                             日期:
***********************************************************************/
uchar ReadByte(void)
{
    uchar i,ch;
    ch = 0;
    for (i = 8; i > 0; i--)
    {
        IC_CLK = 0;
        ch = ch >> 1;           //從低位讀起 
        if((uchar)IC_IO)
            ch |= 0x80;
        Delay5us();
        IC_CLK = 1;
        Delay5us();
    }
    return ch;
}
/*********************************************************************  

函 數 名: WriteByte()
功    能: 往SLE4442寫一個字節
說    明: (內部函數)
調    用: 
全局變量:
入口參數: uchar
出口參數:無
返 回 值: 無
設    計:zhaojunjie                   日期:2002-04-24
修    改:                             日期:
***********************************************************************/
void WriteByte(uchar ch)
{
    uchar i;
    for(i = 8; i > 0; i--)
    {
        IC_CLK = 0;
        IC_IO = (bit)(ch & 0x01);     
        Delay5us();
        IC_CLK = 1;
        Delay10us();
        ch = ch >> 1;                 //右移一位
    }
}
/*********************************************************************  

函 數 名: ReadMode()
功    能: 連續輸入i(=<255)個字節,存放到以pt開頭的內部單元中,必須在某一讀數據命令模式之后使用
說    明: (內部函數)
調    用: 
全局變量:
入口參數: pt: 起始地址, count: 數據個數
出口參數:無
返 回 值: 無
設    計:zhaojunjie                   日期:2002-04-24
修    改:                             日期:
*********************************************************************/
void ReadMode(uchar idata *pt,uchar count)
{
    IC_CLK=0;
    Delay5us();
    do
    {
        *pt = ReadByte();    //讀入一個字節
        pt++;                //指針加一
    }while(--count);             //計數器減一,判斷
}
/*********************************************************************  

函 數 名: ProcessMode()
功    能: 處理模式,開始處理模式后,卡片將輸入口拉低,處理完后輸入口變成高電平
說    明: (內部函數)
調    用: 
全局變量:
入口參數: 無
出口參數:無
返 回 值: 無
設    計:zhaojunjie                   日期:2002-04-24
修    改:                             日期:
*********************************************************************/
void ProcessMode(void)
{
    uint i;
    IC_CLK = 0;
    Delay5us();    
    IC_IO  = 0;
    for (i = 255; i > 0; i--)
    {
        IC_CLK = 1;
        Delay5us();
        IC_CLK = 0;
        Delay5us();
    }
    IC_IO  = 1;
}
/*********************************************************************  

函 數 名: Verify()
功    能: 校驗密碼
說    明: 
調    用: 
全局變量:
入口參數: 指向存放密碼的內部直接尋址RAM地址,
           密碼:BCD 碼,從低往高放,比如:114086  *pt = 0x11 *pt+1 = 0x40 *pt+2 = 0x86
出口參數:無
返 回 值: 成功返回1,失敗返回0,卡片已鎖也返回0
設    計:zhaojunjie                   日期:2002-04-24
修    改:                             日期:
*********************************************************************/
bit Verify(uchar idata *pt)
{
     uchar idata temp[4];                //暫存4字節的保密區內容
     uchar i;

     SendComm(RSM_COMM,0xff,0xff);        //讀密碼存儲區的命令字,第2,3個參數在此命令中被忽略
     ReadMode(temp, 4);                   //讀出
     if((temp[0] & 0x07) != 0)            //第一字節是錯誤計數器,如果錯誤計數器為0,直接退出
     {
         if((temp[0] & 0x07)==0x07)     // 00000111
                i = 0x06;
         else if((temp[0] & 0x07)==0x06)// 00000110 
                i = 0x04;
         else if((temp[0] & 0x07)==0x04)// 00000100
                   i = 0x00;               //將其中一位為1的改為0
        SendComm(WSM_COMM,0,i);            //修改錯誤計數器
        ProcessMode();                  //處理
        for (i = 1; i < 4; i++, pt++)   //校對3字節的密碼
        {
             SendComm(VER_COMM,i,*pt);  //發出校對命令,
             ProcessMode();             //處理
        }
        SendComm(WSM_COMM,0,0xff);      //擦除計數器恢復錯誤計數器
        ProcessMode();                  //處理
        SendComm(RSM_COMM,0xff,0xff);   //讀密碼存儲區的命令字,第2,3個參數在此命令中被忽略
        ReadMode(temp, 4);              //讀錯誤計數器的內容
        if((temp[0] & 0x07)==0x07)      //如果沒有被成功擦除,表明校對失敗
             return 1 ;
     }
     return 0;
}
/******************************************************************** 

函 數 名:Delay10us()
功    能:延時10微秒(包括調用和返回的時間),f = 11.0592Mhz
說    明:
調    用:
入口參數:無
出口參數:無
返 回 值:無  
設    計:zhaojunjie           日    期:2002-04-24
修    改:                     日    期: 
***********************************************************************/
void Delay10us(void)
{
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
}

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

函 數 名: Delay5us()
功    能:延時10微秒(包括調用和返回的時間),f = 11.0592Mhz
說    明:
調    用:
入口參數:無
出口參數:無
返 回 值:無  
設    計:zhaojunjie           日    期:2002-04-24
修    改:                     日    期: 
***********************************************************************/
void Delay5us(void)
{
    _nop_();
    _nop_();
    _nop_();
}
/*//////////////////////////////////////////////////////////////////////*/

 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99在线精品视频| 国产人久久人人人人爽| 色欧美乱欧美15图片| 99久久精品免费观看| 国产91在线|亚洲| 国产成人欧美日韩在线电影 | 99国产麻豆精品| 成人av网站在线观看免费| 丰满少妇在线播放bd日韩电影| 狠狠色综合色综合网络| 久草中文综合在线| 国产成人在线影院| 成人黄色大片在线观看| 99久久99久久久精品齐齐| 99riav久久精品riav| 91视频国产观看| 欧美综合天天夜夜久久| 3d动漫精品啪啪一区二区竹菊| 欧美一区二区高清| 精品国产三级电影在线观看| 国产调教视频一区| 中文字幕一区二区三区不卡在线 | 亚洲国产日韩一区二区| 亚洲国产视频直播| 日韩和欧美的一区| 国产一区中文字幕| 99国产麻豆精品| 欧美三级日韩在线| 欧美大片在线观看一区二区| 久久99精品久久久久久久久久久久| 精品亚洲aⅴ乱码一区二区三区| 国产精品一级二级三级| 99riav一区二区三区| 91精品一区二区三区久久久久久 | 一区二区三区美女| 日韩av中文在线观看| 国产麻豆精品视频| 91国产福利在线| 精品久久久久久综合日本欧美| 久久精品日产第一区二区三区高清版 | 免费人成在线不卡| 粉嫩av一区二区三区在线播放| 在线亚洲精品福利网址导航| 91麻豆精品国产自产在线观看一区| 久久久久久久综合色一本| 亚洲精品国久久99热| 久久精品国产精品青草| 99精品1区2区| 日韩欧美高清一区| 中文字幕佐山爱一区二区免费| 亚洲va天堂va国产va久| 国产东北露脸精品视频| 99re热这里只有精品免费视频| 欧美日本在线播放| 国产精品久久久久久久久免费丝袜| 午夜一区二区三区在线观看| 国产成人综合精品三级| 9191成人精品久久| 最新中文字幕一区二区三区| 麻豆一区二区99久久久久| 色婷婷久久一区二区三区麻豆| 日韩欧美一区二区三区在线| 亚洲黄色片在线观看| 精品一区二区日韩| 欧美伦理电影网| 亚洲人成精品久久久久| 国产精品影视在线| 欧美美女激情18p| 成人免费在线播放视频| 国产一区二区三区综合| 制服丝袜日韩国产| 亚洲男女一区二区三区| 国产成人超碰人人澡人人澡| 欧美一区二区精品| 亚洲一区中文在线| 91麻豆文化传媒在线观看| 欧美精品一区二区在线播放| 天堂在线一区二区| 色网站国产精品| 亚洲国产精品精华液2区45| 久色婷婷小香蕉久久| 在线精品视频免费观看| 1区2区3区国产精品| 国产精品91一区二区| 欧美成人精品高清在线播放| 日韩一区精品字幕| 欧洲av在线精品| 亚洲精品中文在线观看| 91亚洲资源网| 成人欧美一区二区三区1314| 成人免费视频免费观看| 国产色91在线| 国产乱码精品一品二品| 久久男人中文字幕资源站| 狠狠网亚洲精品| 久久综合九色综合欧美98| 久久精品国产99久久6| 欧美一区二区三区视频在线 | 蜜臀国产一区二区三区在线播放 | 亚洲成av人片在线观看无码| 欧美亚洲一区二区在线观看| 亚洲欧美色综合| 色婷婷狠狠综合| 亚洲精品免费播放| 91国产视频在线观看| 亚洲一区二区三区视频在线| 在线观看免费成人| 亚洲成人黄色小说| 欧美日韩成人激情| 日本欧美在线观看| 日韩美女主播在线视频一区二区三区| 蜜臀精品久久久久久蜜臀| 日韩免费看网站| 国产在线不卡一卡二卡三卡四卡| 欧美精品一区二区久久婷婷| 久久99精品久久久久婷婷| 久久精品亚洲国产奇米99| 丰满白嫩尤物一区二区| 综合久久一区二区三区| 在线中文字幕一区| 日韩黄色小视频| 精品成人私密视频| 国产成人午夜视频| 亚洲人123区| 欧美在线看片a免费观看| 爽好多水快深点欧美视频| 欧美一区二区三区免费在线看| 久久国产精品露脸对白| 久久婷婷成人综合色| aaa亚洲精品| 亚洲电影中文字幕在线观看| 555www色欧美视频| 韩国成人福利片在线播放| 亚洲欧美怡红院| 欧美日韩成人综合天天影院| 国产在线精品不卡| 亚洲视频中文字幕| 欧美精品久久久久久久多人混战| 欧美精品123区| 国产精品夜夜嗨| 夜夜操天天操亚洲| 日韩精品一区二区三区四区视频| 成人爽a毛片一区二区免费| 亚洲综合999| wwwwww.欧美系列| 色偷偷久久人人79超碰人人澡| 免费成人小视频| 国产精品美女久久久久久| 欧美日韩精品一区视频| 精品一区二区三区的国产在线播放| 国产精品福利一区二区三区| 在线播放国产精品二区一二区四区 | 精品在线一区二区| 亚洲天堂中文字幕| 日韩免费电影网站| 色婷婷久久久久swag精品| 九一久久久久久| 亚洲国产综合91精品麻豆| 久久色成人在线| 欧美性大战久久久久久久蜜臀| 国产专区欧美精品| 亚洲午夜久久久久久久久久久| 久久综合九色综合欧美亚洲| 欧美日韩一区高清| 成人涩涩免费视频| 麻豆精品在线看| 一区二区三区久久久| 欧美国产日韩一二三区| 日韩一区二区在线观看视频| 色诱亚洲精品久久久久久| 国产一区二区91| 偷拍与自拍一区| 悠悠色在线精品| 亚洲国产精品二十页| 精品人在线二区三区| 欧美日韩精品一区二区三区| yourporn久久国产精品| 国产综合久久久久久鬼色| 午夜精品福利一区二区蜜股av| 国产精品成人网| 国产日韩欧美精品在线| 日韩久久久精品| 欧美日韩一区二区在线观看视频 | 日韩精品资源二区在线| 欧美综合在线视频| zzijzzij亚洲日本少妇熟睡| 国产精品一二三四| 激情都市一区二区| 久久成人免费网| 日本不卡一区二区| 午夜精品福利视频网站| 伊人婷婷欧美激情| 亚洲精品一二三区| 亚洲视频免费看| 亚洲色图制服诱惑| 亚洲欧美日韩国产一区二区三区 | 日韩中文字幕av电影| 亚洲一区二区欧美| 亚洲一区免费观看| 亚洲成人自拍偷拍|