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

📄 read2401a.lst

📁 非接触式IC卡读和取程序与pcb设计原理图
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V6.23a  READ2401A                                                             08/22/2003 17:48:00 PAGE 1   


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

stmt level    source

   1          #include "reg51.h"
   2          #include "Read2401A.h"
   3          #include "intrins.h"
   4          main()
   5          {
   6   1              init();
   7   1              for(;;)
   8   1              {       
   9   2                      if(Card_In == True)
  10   2                      {
  11   3                              Card_Insert_Flag = True;
  12   3                              Card_Insert_LED = ON;
  13   3                      }
  14   2                      else
  15   2                      {
  16   3                              Card_Insert_Flag = False;
  17   3                              Card_Insert_LED = OFF;
  18   3                              Card_Power_LED = OFF;
  19   3                              Card_Write_LED = OFF;
  20   3                              Card_Read_LED = OFF;
  21   3                      }       
  22   2                      if(Card_Insert_Flag == True)
  23   2                      {
  24   3      
  25   3                              if(Card_Power_Flag == True)
  26   3                              {
  27   4                                      Card_Power_Control = True;
  28   4                                      Card_Power_LED = ON;
  29   4                                      NOP();
  30   4                                      NOP();
  31   4                                      if(Card_Write_Flag == True)
  32   4                                      {
  33   5                                              Card_Read_LED = OFF;
  34   5                                              Card_Write_LED = ON;
  35   5                                              Write_Card();
  36   5                                      }       
  37   4                                      if(Card_Read_Flag == True)
  38   4                                      {
  39   5                                              Card_Read_LED = ON;
  40   5                                              Card_Write_LED = OFF;
  41   5                                              Read_Card();
  42   5                                      }
  43   4                              }
  44   3                              else
  45   3                              {       
  46   4                                      if(Card_Write_Flag == True)
  47   4                                      {
  48   5                                              Error_Send();
  49   5                                              Card_Write_Flag = False;
  50   5                                      }       
  51   4                                      if(Card_Read_Flag == True)
  52   4                                      {
  53   5                                              Error_Send();
  54   5                                              Card_Read_Flag = False;
  55   5                                      }
C51 COMPILER V6.23a  READ2401A                                                             08/22/2003 17:48:00 PAGE 2   

  56   4                                      Card_Power_Control = False;
  57   4                                      Card_Power_LED = OFF;
  58   4                                      Card_Write_LED = OFF;
  59   4                                      Card_Read_LED = OFF;
  60   4                              }
  61   3      
  62   3                      }
  63   2                      else    
  64   2                      {
  65   3                              if(Card_Power_Flag == True)
  66   3                              {
  67   4                                      Error_Send();
  68   4                                      Card_Power_Flag = False;
  69   4                              }
  70   3                              if(Card_Write_Flag == True)
  71   3                              {
  72   4                                      Error_Send();
  73   4                                      Card_Write_Flag = False;
  74   4                              }       
  75   3                              if(Card_Read_Flag == True)
  76   3                              {
  77   4                                      Error_Send();
  78   4                                      Card_Read_Flag = False;
  79   4                              }
  80   3                              Card_Power_Control = False;
  81   3                              Card_Power_LED = OFF;
  82   3                              Card_Read_LED = OFF;
  83   3                              Card_Write_LED = OFF;
  84   3                      }
  85   2              }
  86   1      }
  87          
  88          /*--------------------------------
  89          启动卡函数
  90          函数原型:Open_At24c01A()
  91          功能:启动ic卡片
  92          ---------------------------------*/
  93          void Open_At24c01A()
  94          {
  95   1          NOP();
  96   1          SCL=0;
  97   1          NOP();
  98   1          RST=0;
  99   1          NOP();
 100   1          RST=1;
 101   1          NOP();
 102   1          SDA=1;
 103   1          NOP();
 104   1          SCL=1;
 105   1          NOP();
 106   1          SCL=0;
 107   1          NOP();
 108   1          RST=0;
 109   1      }
 110          /*--------------------------------
 111          关闭卡函数
 112          函数原型:Close_At24c01A()
 113          功能:关闭ic卡片
 114          ---------------------------------*/
 115          void Close_At24c01A()
 116             {
 117   1            SDA=0;
C51 COMPILER V6.23a  READ2401A                                                             08/22/2003 17:48:00 PAGE 3   

 118   1            NOP();
 119   1            SCL=0;
 120   1            NOP();
 121   1            RST=0;
 122   1            NOP();
 123   1         }
 124          /*--------------------------------
 125          延时
 126          函数原型:Nop();
 127          功能:延时
 128          ---------------------------------*/
 129          void NOP()
 130          {
 131   1          _nop_();
 132   1          _nop_();
 133   1          _nop_();
 134   1          _nop_();
 135   1          _nop_();
 136   1      }
 137          
 138          /*---------------------------------
 139          启动总线函数
 140          函数原型:Start_I2C()
 141          功能:启动I2C总线,即发送起始条件
 142          ---------------------------------*/
 143          void Start_I2C()
 144          {
 145   1              SDA = 1;        //发送起始条件数据信号
 146   1              _nop_();
 147   1              SCL = 1;
 148   1              _nop_();                //起始建立时间大于4.7us
 149   1              _nop_();
 150   1              _nop_();
 151   1              _nop_();
 152   1              _nop_();
 153   1              SDA = 0;        //发送起始信号
 154   1              _nop_();
 155   1              _nop_();
 156   1              _nop_();
 157   1              _nop_();
 158   1              _nop_();
 159   1              SCL = 0;        //钳位
 160   1              _nop_();
 161   1              _nop_();
 162   1      }
 163          /*-------------------------------
 164          结束总线函数
 165          函数原型:Stop_I2C()
 166          功能:结束I2C总线,即发送I2C结束条件
 167          -------------------------------*/
 168          void Stop_I2C()
 169          {
 170   1              SDA = 0;        //发送结束条件的数据信号
 171   1              _nop_();                //发送结束条件的时钟信号
 172   1              SCL = 1;        //结束条件建立时间大于4us
 173   1              _nop_();
 174   1              _nop_();
 175   1              _nop_();
 176   1              _nop_();
 177   1              _nop_();
 178   1              SDA = 1;        //发送I2C总线结束命令
 179   1              _nop_();
C51 COMPILER V6.23a  READ2401A                                                             08/22/2003 17:48:00 PAGE 4   

 180   1              _nop_();
 181   1              _nop_();
 182   1              _nop_();
 183   1              _nop_();
 184   1      }
 185          
 186          /*------------------------------
 187          字节数据传送函数
 188          函数原型:SendByte(uchar c)
 189          功能:将数据C发送出去,可以是地址,
 190          也可以是数据,发送完成之后等待应答
 191          并且对应答状态位进行操作,不应答和非
 192          应答都使得ACK=0,发送数据正常则ACK=1
 193          --------------------------------*/
 194          void    SendByte(uchar c)
 195          {
 196   1              uchar BitCnt;
 197   1              for(BitCnt = 0;BitCnt < 8;BitCnt++)                     //一个字节
 198   1                      {
 199   2                              if((c << BitCnt)& 0x80) SDA = 1;        //判断发送位
 200   2                              else    SDA = 0;
 201   2                              _nop_();
 202   2                              SCL = 1;        //时钟线为高,通知被控器开始接受数据
 203   2                              _nop_();
 204   2                              _nop_();
 205   2                              _nop_();
 206   2                              _nop_();
 207   2                              _nop_();
 208   2                              SCL = 0;
 209   2                      }
 210   1              _nop_();
 211   1              _nop_();
 212   1              SDA = 1;        //释放数据线,准备接受应答位
 213   1              _nop_();
 214   1              _nop_();
 215   1              SCL = 1;
 216   1              _nop_();
 217   1              _nop_();
 218   1              _nop_();
 219   1              if(SDA == 1) ack =0;
 220   1              else ack = 1;           //判断是否收到应答信号
 221   1              SCL = 0;
 222   1              _nop_();
 223   1              _nop_();
 224   1      }
 225          
 226          /*-------------------------------------------
 227          字节数据接收函数
 228          函数原型:uchar RcvByte();
 229          功能:用来接收从器件传来的数据,并且判断总线错误(不发送应答信号)
 230          发送完成后使用应答信号
 231          -------------------------------------------*/
 232          uchar RevByte()
 233          {
 234   1              uchar retc;

⌨️ 快捷键说明

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