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

📄 sle4442_b.lst

📁 IC卡购电软件实现
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.08   SLE4442_B                                                             09/27/2006 09:14:02 PAGE 1   


C51 COMPILER V7.08, COMPILATION OF MODULE SLE4442_B
OBJECT MODULE PLACED IN SLE4442_B.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE SLE4442_B.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*******************************************************************************
   2          *  标题:  蓝海微芯LJD-SY-5200单片机开发系统演示程序                            *
   3          *  文件:  SLE4442.C                                                            *
   4          *  日期:  2006-8-9                                                             *
   5          *  版本:  1.0                                                                  *
   6          *  作者:  蓝海微芯                                                             *
   7          *  网站: http://www.ljd-2008.com                                              *
   8          ********************************************************************************
   9          *  描述:                                                                       *
  10          *         IC卡程序模块                                                         *     
  11          *                                                                              *
  12          *         30H-----------读主存储区                                             *
  13          *         34H-----------读保护存储区                                           *
  14          *         38H-----------写主存储区                                             *
  15          *         3CH-----------写保护存储区                                           *
  16          *         31H-----------读保密存储区                                           *
  17          *         33H-----------比较验证数据                                           *
  18          *         39H-----------更新保密存储区                                         *
  19          *                                                                              *
  20          *                                                                              *
  21          ********************************************************************************
  22          * 【版权】 Copyright(C)微芯科技 http://www.bluemcu.com    All Rights Reserved  *          
  23          * 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息!                  *
  24          *******************************************************************************/
  25          #include<reg51.h>                  /*=== 头文件包含 ===*/
  26          #include<intrins.h>
  27          #include<absacc.h>
  28          #include  <IC_CARD_B.h>
  29          
  30          #define  uchar  unsigned  char
  31          #define  uint   unsigned  int
  32          
  33          bdata    uchar  wbyte;
  34          sbit     wbyte_0=wbyte^0;
  35          
  36          
  37          uchar    RSTANSER[4];                     /*4字节复位应答*/
  38          uchar    ICCOMMAND[3];                    /*3字节命令*/
  39          uchar    ICADDRESS;                       /*1字节地址*/
  40          uchar    ICDATAIN;                        /*1字节数据*/
  41          uchar    ICLENTH;                         /*1字节读写长度*/
  42          uchar    ICCODE[3]={0xff,0xff,0xff};      /*3字节密码*/
  43          uchar    ICDATA[32];                      /*32字节读写数据*/                
  44           
  45          void     icdelay();
  46          void     cardpulse();
  47          uchar    cardrbyte();
  48          void     cardwbyte(uchar ss);
  49          void     rst_ans();
  50          void     sendcommand(uchar comm,uchar address,uchar odata);
  51          void     rdmm();
  52          void     rdpm();
  53          void     wrmm();
  54          void     wrpm();
  55          void     rdsm();
C51 COMPILER V7.08   SLE4442_B                                                             09/27/2006 09:14:02 PAGE 2   

  56          uchar    rdsm_ec();
  57          void     sendpsc();
  58          void     wrsm(uchar ec);
  59          void     updatepsc();
  60          uchar    verifi();
  61          /*main()
  62          {
  63            uchar i;
  64            uchar EOC;
  65            _nop_();
  66            P1_4=1;
  67            P1_4=0;
  68          
  69               
  70          
  71            for(i=0;i<0x20;i++)
  72            ICDATA[i]=0xf0;                    //要写的数据
  73            EOC=rdsm_ec();                     //读错误计数器
  74            EOC=verifi();                      //校验密码
  75            EOC=rdsm_ec();
  76            wrmm();                            //写主存储区            
  77            rdmm();                            //再读主存储区
  78               
  79            while(1);
  80          }*/
  81          /********************************************************************
  82          函 数 名:icdelay()
  83          功    能:延时10us
  84          说    明:
  85          入口参数:  
  86          返 回 值:
  87          设    计:蓝海微芯           
  88          ***********************************************************************/
  89          void icdelay()
  90          {
  91   1        _nop_();
  92   1        _nop_();
  93   1        _nop_();
  94   1        _nop_();
  95   1      }
  96          /********************************************************************
  97          函 数 名:cardpulse()
  98          功    能:产生时钟脉冲
  99          说    明:
 100          入口参数:  
 101          返 回 值:
 102          设    计:蓝海微芯           
 103          ***********************************************************************/
 104          void  cardpulse()
 105          {
 106   1        SCL=1;
 107   1        icdelay();
 108   1        SCL=0;
 109   1        icdelay();
 110   1      }
 111          /********************************************************************
 112          函 数 名:cardbyte()
 113          功    能:从SLE4442读取一字节数据
 114          说    明:
 115          入口参数:  
 116          返 回 值:ACC
 117          设    计:蓝海微芯           
C51 COMPILER V7.08   SLE4442_B                                                             09/27/2006 09:14:02 PAGE 3   

 118          ***********************************************************************/
 119          uchar  cardrbyte()
 120          {
 121   1        uchar i;
 122   1         
 123   1        ACC=0;
 124   1        SDA=1;
 125   1        for(i=0;i<8;i++)
 126   1        {
 127   2          ACC=ACC>>1;
 128   2          A_7=SDA;
 129   2          cardpulse();
 130   2        }
 131   1        return ACC;
 132   1      }
 133          /********************************************************************
 134          函 数 名:cardwbyte()
 135          功    能:向SLE4442写一字节命令或数据
 136          说    明:
 137          入口参数:uchar ss  
 138          返 回 值:
 139          设    计:蓝海微芯           
 140          ***********************************************************************/
 141          void  cardwbyte(uchar ss)
 142          {
 143   1        uchar i;
 144   1      
 145   1        wbyte=ss;
 146   1      
 147   1        for(i=0;i<8;i++)
 148   1        {
 149   2          SDA=wbyte_0;
 150   2          wbyte=wbyte>>1;
 151   2          cardpulse();
 152   2        }
 153   1      }
 154          /********************************************************************
 155          函 数 名:rst_ans()
 156          功    能:复位与应答(4个字节的复位应答)
 157          说    明:
 158          入口参数:  
 159          返 回 值:
 160          设    计:蓝海微芯           
 161          ***********************************************************************/
 162          void   rst_ans()
 163          {
 164   1        uchar i;
 165   1        RST=0;
 166   1        SCL=0;
 167   1        icdelay();
 168   1        RST=1;
 169   1        icdelay();
 170   1        SCL=1;
 171   1        icdelay();
 172   1        SCL=0;
 173   1        icdelay();
 174   1        RST=0;
 175   1        icdelay();
 176   1        for(i=0;i<4;i++)
 177   1        RSTANSER[i]=cardrbyte();
 178   1      }
 179          /********************************************************************
C51 COMPILER V7.08   SLE4442_B                                                             09/27/2006 09:14:02 PAGE 4   

 180          函 数 名:sendcommand()
 181          功    能:发送命令
 182          说    明:3字节         命令字+地址+数据 
 183          入口参数:uchar comm   uchar address  uchar odata
 184          返 回 值:
 185          设    计:蓝海微芯           
 186          ***********************************************************************/
 187          void sendcommand(uchar comm,uchar address,uchar odata)
 188          {
 189   1                           
 190   1        SCL=1;                      /*start condition*/ 
 191   1        icdelay();
 192   1        SDA=0;
 193   1        icdelay();
 194   1        SCL=0;
 195   1         
 196   1        cardwbyte(comm);
 197   1        cardwbyte(address);
 198   1        cardwbyte(odata);
 199   1      
 200   1        SCL=0;                      /*stop  condition*/ 
 201   1        SDA=0;
 202   1        icdelay();
 203   1        SCL=1; 
 204   1        icdelay();
 205   1        SDA=1;
 206   1        icdelay();
 207   1        SCL=0;
 208   1        icdelay();
 209   1      }
 210          /********************************************************************
 211          函 数 名:rdmm()
 212          功    能:读主存储区
 213          说    明:将数据读取到数组ICDATA[] 
 214          入口参数:
 215          返 回 值:
 216          设    计:蓝海微芯           
 217          ***********************************************************************/
 218          void rdmm()
 219          {
 220   1        uchar i;

⌨️ 快捷键说明

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