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

📄 mcard.lst

📁 基于LP22132 KELL下的磁卡写卡器
💻 LST
字号:
ARM COMPILER V2.54a,  MCARD                                                                04/09/07  10:03:17  PAGE 1   


ARM COMPILER V2.54a, COMPILATION OF MODULE MCARD
OBJECT MODULE PLACED IN MCARD.OBJ
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe MCARD.C THUMB BROWSE DEBUG TABS(4) 

stmt  level    source

    1          #include<MCARD.H>
    2          #include "config.h"
    3          #include "lpclib.h" 
    4          
    5          /*******************************************************************************************
    6          void ram_init(void)
    7          描述:标志位清0
    8          ********************************************************************************************/
    9          void ram_init(void)
   10          {
   11   1        unsigned char i;
   12   1          bitcount3=0;
   13   1          bitcount2=0;
   14   1          bitcount1=0;
   15   1          rnum3=0;
   16   1          rnum2=0;
   17   1          rnum1=0;
   18   1          readdat_num=0;
   19   1          savdat3=0xff;
   20   1          savdat2=0xff;
   21   1          savdat1=0xff;
   22   1          temp_h_byte=0;
   23   1          temp_l_byte=0;
   24   1          for(i=0;i<MAX_TRACK1_LEN;i++)Track1buf[i]=0xff;     
   25   1          for(i=0;i<MAX_TRACK2_LEN;i++)Track2buf[i]=0xff;
   26   1          for(i=0;i<MAX_TRACK3_LEN;i++)Track3buf[i]=0xff;
   27   1      }
   28          //------------------------------------------------------------------------------------------
   29          // 外部中断2
   30          // void IRQ_Eint2 (void)__irq
   31          //------------------------------------------------------------------------------------------
   32           void IRQ_Eint2 (void)__irq
   33              {
   34   1          savdat1=(savdat1&0xfe)|((IO1PIN&0x00200000)>>21); 
   35   1          if(bitcount1<7)
   36   1              {
   37   2              savdat1<<=1;
   38   2              bitcount1++;
   39   2              }
   40   1          else {
   41   2               bitcount1=0;
   42   2               Track1buf[rnum1]=~savdat1; 
   43   2              if(rnum1<MAX_TRACK1_LEN)rnum1++; 
   44   2              savdat1=0xff; 
   45   2               }      
   46   1          EXTINT = 0x04;                  
   47   1          VICVectAddr = 0;                
   48   1      }
   49          //------------------------------------------------------------------------------------------
   50          // 外部中断3
   51          //  void IRQ_Eint3 (void)__irq
   52          //------------------------------------------------------------------------------------------
   53           void IRQ_Eint3 (void)__irq
   54              {
   55   1          savdat3=(savdat3&0xfe)|((IO1PIN&0x20000000)>>29);
   56   1          if(bitcount3<7)
   57   1              {
   58   2              savdat3<<=1;
   59   2              bitcount3++;
ARM COMPILER V2.54a,  MCARD                                                                04/09/07  10:03:17  PAGE 2   

   60   2              }
   61   1          else 
   62   1              {
   63   2              bitcount3=0;
   64   2              Track3buf[rnum3]=~savdat3; 
   65   2              if(rnum3<MAX_TRACK3_LEN)rnum3++; 
   66   2              savdat3=0xff;
   67   2              LED_R_OFF();
   68   2              }
   69   1       EXTINT = 0x08;              
   70   1       VICVectAddr = 0;       
   71   1          }
   72          //------------------------------------------------------------------------------------------
   73          // 捕获中断1
   74          //void IRQ_TIME1 (void)__irq
   75          //------------------------------------------------------------------------------------------
   76           void IRQ_TIME1 (void)__irq
   77              {
   78   1          T1IR= 1<<6;
   79   1          savdat2=(savdat2&0xfe)|((IO1PIN&0x40000000)>>30);  
   80   1          if(bitcount2<7)
   81   1              {
   82   2              savdat2<<=1;
   83   2               bitcount2++;
   84   2              }
   85   1          else
   86   1              {
   87   2              bitcount2=0;
   88   2              Track2buf[rnum2]=~savdat2; 
   89   2              if(rnum2<MAX_TRACK2_LEN)rnum2++; 
   90   2              savdat2=0xff; 
   91   2              } 
   92   1          VICVectAddr = 0;    
   93   1      }
   94          /**********************************************************************************************
   95          void dat_format(void)
   96          描述:将不足7位的数据位格式化成正常数据
   97          *********************************************************************************************/  
   98          void dat_format(void)
   99          {
  100   1      if(bitcount1!=0)
  101   1          {
  102   2          bitcount1=(8-bitcount1);   //第一磁道
  103   2          savdat1<<=bitcount1;
  104   2           Track1buf[rnum1]=~savdat1;//当数据不足8位时则数据的低位补1
  105   2          rnum1++;
  106   2          }
  107   1      if(bitcount2!=0)
  108   1          {
  109   2          bitcount2=(8-bitcount2);     //第二磁道
  110   2          savdat2<<=bitcount2;
  111   2          Track2buf[rnum2]=~bitcount2;//当数据不足8位时则数据的低位补1
  112   2          rnum2++;
  113   2          }
  114   1      
  115   1      if(bitcount3!=0)
  116   1          {
  117   2          bitcount3=(8-bitcount3);   //第三磁道
  118   2          savdat3<<=bitcount3;
  119   2          Track3buf[rnum3]=~savdat3;//当数据不足8位时则数据的低位补1
  120   2          rnum3++;
  121   2          }
  122   1      }
  123          /*******************************************************************************************
  124          函数原型:byte judge_readstatus_tr1(byte *tmprecord,byte tmplength) 
  125          功能:对一轨的数据进行解码
ARM COMPILER V2.54a,  MCARD                                                                04/09/07  10:03:17  PAGE 3   

  126          参数说明:tmprecord存放未解码的数据的缓冲区首址,tmplength存放未解码的数据的长度
  127          ********************************************************************************************/
  128          unsigned char  judge_readstatus_tr1  (unsigned char *tmprecord,unsigned char tmplength) 
  129          {
  130   1        static unsigned char tmpnum;
  131   1          static unsigned char  k;
  132   1          static unsigned char  m;
  133   1          static unsigned char tmpLRC;
  134   1          static unsigned char byte_num ; 
  135   1          static unsigned char dat_tmp;
  136   1          tmpnum=tmplength;
  137   1          byte_num=0;
  138   1          FLAG_SS=0;
  139   1          FLAG_ES=0;
  140   1          FLAG_BRC=1;
  141   1          FLAG_LRC=0;     
  142   1      /**********************************找包头循环体***************************************/ 
  143   1          while(1)
  144   1              {
  145   2              if((!FLAG_SS)&&(tmprecord[tmpnum]!=0x00)&&(tmprecord[tmpnum-1]!=0x00))
  146   2                  {
  147   3                  temp_h_byte=tmprecord[tmpnum-1];
  148   3                  temp_l_byte=tmprecord[tmpnum];
  149   3                  for(k=0;k<8;k++)
  150   3                      {
  151   4                      if((temp_l_byte&0x7f)==0x45)    //45 is stx.
  152   4                          {
  153   5                          FLAG_SS=1;          //STX is ok.
  154   5                          tmpLRC=0x05;            //计算LRC

⌨️ 快捷键说明

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