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

📄 sle4442.lst

📁 关于IC卡的应用项目
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V6.23a  SLE4442                                                               08/23/2003 10:33:26 PAGE 1   


C51 COMPILER V6.23a, COMPILATION OF MODULE SLE4442
OBJECT MODULE PLACED IN sle4442.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE sle4442.c DEBUG OBJECTEXTEND

stmt level    source

   1          
   2          #include <stdio.h>
   3          #include <intrins.h>
   4          #include <reg51.h>
   5          #include <sle4442.h>
   6          /*********************************************************************  
   7          
   8          函 数 名: ReadMainMem()
   9          功    能: 读ic卡主存
  10          说    明: 
  11          调    用: 
  12          全局变量:
  13          入口参数: IC卡地址(32 - 255),指向内部RAM的指针,字节数
  14          出口参数:指向内部RAM的指针 *pt
  15          返 回 值: 无
  16          设    计:zhaojunjie                   日期:2002-04-24
  17          修    改:                             日期:
  18          *********************************************************************/
  19          void ReadMainMem(uchar addr,uchar idata *pt,uchar count)
  20          {
  21   1          ResetCard();
  22   1          SendComm(RMM_COMM,addr,0xff);
  23   1          ReadMode(pt,count);
  24   1          BreakOperate();
  25   1      }
  26          /*********************************************************************  
  27          
  28          函 数 名: WriteMainMem()
  29          功    能: 写IC卡主存,一次 1Byte
  30          说    明: 
  31          调    用: 
  32          全局变量:
  33          入口参数: addr: IC卡地址(32 - 255), pt: 指向数据区的指针  i:字节数 
  34          出口参数:无
  35          返 回 值: 无
  36          设    计:zhaojunjie                   日期:2002-04-24
  37          修    改:                             日期:
  38          *********************************************************************/
  39          void WriteMainMem(uchar addr,uchar idata *pt)
  40          {
  41   1          ResetCard();
  42   1          SendComm(WMM_COMM, addr, *pt);     //写主存的命令字,地址,数据
  43   1          ProcessMode();
  44   1          BreakOperate();    
  45   1      }
  46          /*********************************************************************  
  47          
  48          函 数 名: ReadProtectMem()
  49          功    能: 读保护存储器
  50          说    明: 
  51          调    用: 
  52          全局变量:
  53          入口参数: 指向直接寻址数据区的指针
  54          出口参数:无
  55          返 回 值: 无
C51 COMPILER V6.23a  SLE4442                                                               08/23/2003 10:33:26 PAGE 2   

  56          设    计:zhaojunjie                   日期:2002-04-24
  57          修    改:                             日期:
  58          *********************************************************************/
  59          void ReadProtectMem(uchar idata *pt)
  60          {
  61   1          ResetCard();    
  62   1          SendComm(RPM_COMM,0xff,0xff); //读保护存储器的命令字,后两个参数忽略
  63   1          ReadMode(pt,4);               //读出
  64   1          BreakOperate();        
  65   1      }
  66          /*********************************************************************  
  67          
  68          函 数 名: ProtectByte()
  69          功    能: 保护一字节,注意待保护的字节是已经写入过的,地址只能在保护存储区内
  70          说    明: 
  71          调    用: 
  72          全局变量:
  73          入口参数: IC卡地址,指向直接寻址数据区的指针
  74          出口参数:无
  75          返 回 值: 无
  76          设    计:zhaojunjie                   日期:2002-04-24
  77          修    改:                             日期:
  78          *********************************************************************/
  79          void ProtectByte(uchar addr,uchar idata *pt)
  80          {
  81   1          ResetCard();
  82   1          SendComm(WPM_COMM, addr, *pt); //写保护存储区的命令字,地址,数据
  83   1          ProcessMode();
  84   1          BreakOperate();            
  85   1      }
  86          
  87          /*********************************************************************  
  88          
  89          函 数 名: SendComm()
  90          功    能: 发送命令
  91          说    明:
  92          调    用: 
  93          全局变量:
  94          入口参数: a: 命令字, b: 地址, c: 数据
  95          出口参数:无
  96          返 回 值: 无
  97          设    计:zhaojunjie                   日期:2002-04-24
  98          修    改:                             日期:
  99          *********************************************************************/
 100          void SendComm(uchar a,uchar b,uchar c)
 101          {
 102   1          StartComm();          //开始发送命令
 103   1          WriteByte(a);          //a: 发命令字
 104   1          WriteByte(b);          //b: 发地址
 105   1          WriteByte(c);          //c: 发数据
 106   1          StopComm();           //结束发送命令
 107   1      }
 108          /*********************************************************************  
 109          
 110          函 数 名: StartComm()
 111          功    能: 开始命令模式
 112          说    明: (内部函数)
 113          调    用: 
 114          全局变量:
 115          入口参数: 无
 116          出口参数:无
 117          返 回 值: 无
C51 COMPILER V6.23a  SLE4442                                                               08/23/2003 10:33:26 PAGE 3   

 118          设    计:zhaojunjie                   日期:2002-04-24
 119          修    改:                             日期:
 120          *********************************************************************/
 121          void StartComm(void)
 122          {
 123   1          IC_CLK = 0;
 124   1          IC_IO  = 1;
 125   1          Delay5us();
 126   1          IC_CLK = 1;
 127   1          Delay5us();
 128   1          IC_IO  = 0;
 129   1          Delay5us();
 130   1      }
 131          /*********************************************************************  
 132          
 133          函 数 名: StopComm()
 134          功    能: 结束命令模式
 135          说    明: (内部函数)
 136          调    用: 
 137          全局变量:
 138          入口参数: 无
 139          出口参数:无
 140          返 回 值: 无
 141          设    计:zhaojunjie                   日期:2002-04-24
 142          修    改:                             日期:
 143          *********************************************************************/
 144          void StopComm(void)
 145          {
 146   1          IC_CLK = 0;
 147   1          IC_IO  = 0;
 148   1          Delay5us();
 149   1          IC_CLK = 1;        //CLK: H
 150   1          Delay5us();
 151   1          IC_IO  = 1;        //IO : H
 152   1          Delay10us();
 153   1      }
 154          /*********************************************************************  
 155          
 156          函 数 名: ResetCard()
 157          功    能: 卡复位和复位应答
 158          说    明: (内部函数)
 159          调    用: 
 160          全局变量:
 161          入口参数: 无
 162          出口参数:无
 163          返 回 值: 无
 164          设    计:zhaojunjie                   日期:2002-04-24
 165          修    改:                             日期:
 166          *********************************************************************/
 167          void ResetCard(void)
 168          {
 169   1          uchar temp;
 170   1          Delay5us();    
 171   1          IC_RST = 0;        
 172   1          IC_CLK = 0;     
 173   1          IC_IO  = 1;    
 174   1          Delay5us();  
 175   1          
 176   1          IC_RST = 1;
 177   1          Delay5us();
 178   1          IC_CLK = 1;
 179   1          Delay10us();
C51 COMPILER V6.23a  SLE4442                                                               08/23/2003 10:33:26 PAGE 4   

 180   1          Delay10us();
 181   1          Delay10us();
 182   1          Delay10us();
 183   1          IC_CLK = 0;
 184   1          Delay5us();
 185   1          IC_RST = 0;
 186   1          Delay10us();     //复位和复位应答时序
 187   1                           //      ___
 188   1                           //RST _|   |_______________________   
 189   1                           //       _   _        __   __
 190   1                           //CLK __|0|_|1|_ ..._|31|_|32|_____
 191   1                           //   _   __  __           ___  _____
 192   1                           //     \/  \/D0\ ...    \/D31\/
 193   1                           //I/O _/\__/\__/        /\___/
 194   1          
 195   1          temp = ReadByte();
 196   1          temp = ReadByte();
 197   1          temp = ReadByte();
 198   1          temp = ReadByte();   //空读 32Bit (4Byte)
 199   1          IC_CLK = 0;         //     __   __  IC sets I/O to state H
 200   1          Delay5us();         //CLK_|31|_|32|______________
 201   1          IC_IO  = 1;          //     __   ___  ____________
 202   1          _nop_();             //     30 \/ 31\/
 203   1          IC_CLK = 0;          //I/O  __ /\___/
 204   1          Delay5us();
 205   1          
 206   1      }
 207          /*********************************************************************  
 208          
 209          函 数 名: BreakOperate()
 210          功    能: SLE/4442 IC卡操作中止
 211          说    明: (内部函数)
 212          调    用: 
 213          全局变量:
 214          入口参数: 无
 215          出口参数:无
 216          返 回 值: uchar
 217          设    计:zhaojunjie                   日期:2002-04-24

⌨️ 快捷键说明

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