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

📄 read4442.lst

📁 非接触式IC卡读和取程序与pcb设计原理图
💻 LST
字号:
C51 COMPILER V6.23a  READ4442                                                              08/24/2003 19:46:59 PAGE 1   


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

stmt level    source

   1          #include <stdio.h>
   2          #include <intrins.h>
   3          #include <reg51.h>
   4          #include <Read4442.h>
   5          main()
   6          {
   7   1              init();
   8   1              if((IC_In == 1)&&(IC_Read_Flag == 1) == 1)
   9   1              {
  10   2                      IC_VCCC = 1;
  11   2                      IC_VCC_LED = ON;
  12   2                      Delay10us();
  13   2                      if(IC_Read_Flag == True)
  14   2                      {
  15   3                              ResetCard();                            //
  16   3                              ReadMainMem(0xEF,&Read_Buffer[0],16);
  17   3                              BreakOperate();
  18   3                              Delay10us();
  19   3                              ResetCard();
  20   3                              Read_Send();
  21   3                              //Check_Send();
  22   3                      }
  23   2                      Delay10us();
  24   2                      IC_VCCC = 0;
  25   2              }
  26   1      }
  27          
  28          
  29          void ReadMainMem(uchar addr,uchar idata *pt,uchar count)
  30          {
  31   1      
  32   1          SendComm(RMM_COMM,addr,0xff);
  33   1          ReadMode(pt,count);
  34   1              //Delay5us();
  35   1          BreakOperate();
  36   1              //IC_Read_LED = ON;
  37   1              IC_Read_Flag = False;
  38   1      }
  39          
  40          void SendComm(uchar a,uchar b,uchar c)
  41          {
  42   1          StartComm();          //开始发送命令
  43   1          WriteByte(a);          //a: 发命令字
  44   1          WriteByte(b);          //b: 发地址
  45   1          WriteByte(c);          //c: 发数据
  46   1          StopComm();           //结束发送命令
  47   1      }
  48          
  49          void StartComm(void)
  50          {
  51   1          IC_CLK = 0;
  52   1          IC_IO  = 1;
  53   1          Delay5us();
  54   1          IC_CLK = 1;
  55   1          Delay5us();
C51 COMPILER V6.23a  READ4442                                                              08/24/2003 19:46:59 PAGE 2   

  56   1          IC_IO  = 0;
  57   1          Delay5us();
  58   1      }
  59          
  60          void WriteByte(uchar ch)
  61          {
  62   1          uchar i;
  63   1          for(i = 8; i > 0; i--)
  64   1          {
  65   2              IC_CLK = 0;
  66   2              IC_IO = (bit)(ch & 0x01);     
  67   2              Delay5us();
  68   2              IC_CLK = 1;
  69   2              Delay10us();
  70   2              ch = ch >> 1;                 //右移一位
  71   2          }
  72   1      }
  73          
  74          uchar ReadByte(void)
  75          {
  76   1          uchar i,ch;
  77   1          ch = 0;
  78   1          for (i = 8; i > 0; i--)
  79   1          {
  80   2              IC_CLK = 0;
  81   2              ch = ch >> 1;           //从低位读起 
  82   2              if((uchar)IC_IO)
  83   2                  ch |= 0x80;
  84   2              Delay5us();
  85   2              IC_CLK = 1;
  86   2              Delay5us();
  87   2          }
  88   1          return ch;
  89   1      }
  90          
  91          
  92          void StopComm(void)
  93          {
  94   1          IC_CLK = 0;
  95   1          IC_IO  = 0;
  96   1          Delay5us();
  97   1          IC_CLK = 1;        //CLK: H
  98   1          Delay5us();
  99   1          IC_IO  = 1;        //IO : H
 100   1          Delay10us();
 101   1      }
 102          
 103          void ReadMode(uchar idata *pt,uchar count)
 104          {
 105   1          IC_CLK=0;
 106   1          Delay5us();
 107   1          do
 108   1          {
 109   2              *pt = ReadByte();    //读入一个字节
 110   2              pt++;                //指针加一
 111   2          }while(--count);             //计数器减一,判断
 112   1      }
 113          
 114          void BreakOperate(void)
 115          {
 116   1           IC_CLK = 0;
 117   1           IC_RST = 0;
C51 COMPILER V6.23a  READ4442                                                              08/24/2003 19:46:59 PAGE 3   

 118   1           IC_IO  = 0;
 119   1           Delay5us();
 120   1           IC_RST = 1;
 121   1           IC_IO  = 1;
 122   1           Delay5us();
 123   1           IC_RST = 0;
 124   1           Delay5us();
 125   1               IC_VCCC = 0;
 126   1      }
 127          
 128          void ResetCard(void)
 129          {
 130   1          uchar temp;
 131   1          Delay5us();    
 132   1          IC_RST = 0;        
 133   1          IC_CLK = 0;     
 134   1          IC_IO  = 1;    
 135   1          Delay5us();      
 136   1          IC_RST = 1;
 137   1          Delay5us();
 138   1          IC_CLK = 1;
 139   1          Delay10us();
 140   1          Delay10us();
 141   1          Delay10us();
 142   1          Delay10us();
 143   1          IC_CLK = 0;
 144   1          Delay5us();
 145   1          IC_RST = 0;
 146   1          Delay10us();       
 147   1          temp = ReadByte();
 148   1          temp = ReadByte();
 149   1          temp = ReadByte();
 150   1          temp = ReadByte();  
 151   1          IC_CLK = 0;         
 152   1          Delay5us();        
 153   1          IC_IO  = 1;         
 154   1          _nop_();           
 155   1          IC_CLK = 0;         
 156   1          Delay5us();
 157   1          
 158   1      }
 159          
 160          void Delay10us(void)
 161          {
 162   1          _nop_();
 163   1          _nop_();
 164   1          _nop_();
 165   1          _nop_();
 166   1          _nop_();
 167   1          _nop_();
 168   1      }
 169          
 170          void Delay5us(void)
 171          {
 172   1          _nop_();
 173   1          _nop_();
 174   1          _nop_();
 175   1      }
 176          
 177          
 178          void init()
 179          {
C51 COMPILER V6.23a  READ4442                                                              08/24/2003 19:46:59 PAGE 4   

 180   1              //uchar i;
 181   1              TMOD=0x20;
 182   1              TL1=0xFd;
 183   1              TH1=0xFd;
 184   1              SCON=0x50;
 185   1              PCON=0x00;
 186   1              EA = 1;
 187   1              ES = 1;
 188   1              TR1=1;  
 189   1              IC_VCCC = 0;
 190   1              IC_In = 1;
 191   1              P1_7 = OFF;
 192   1              IC_Read_LED = OFF;
 193   1              IC_In_LED = OFF; 
 194   1              IC_VCC_LED = OFF;
 195   1              //for(i = 0;i<=15;i++)
 196   1              //{
 197   1              //      Read_Buffer[i] = 0xff;
 198   1              //}
 199   1              IC_Read_Flag = True;
 200   1      }
 201          
 202          void Read_Send()
 203          {
 204   1              uchar i;
 205   1              for(i = 0;i <= 15; i++)
 206   1              {
 207   2                      SBUF = Read_Buffer[i];          
 208   2                      do{}
 209   2                      while(TI == 0); 
 210   2                      TI = 0;
 211   2              }
 212   1      }
 213          /*
 214          void Check_Send()
 215          {
 216                  if(Read_Buffer[2] == 0xE2)
 217                  {
 218                          SBUF = 0xaa;
 219                          do{}
 220                          while(TI == 0);
 221                          TI = 0;
 222                  }
 223          }
 224          */


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    404    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     16      11
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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