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

📄 uart.lst

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


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

stmt  level    source

    1          #include<UART.H>
    2          #include "config.h"
    3          #include "lpclib.h"
    4          /*********************************************************************
    5          函数
    6          void delay (unsigned char time)
    7          功能:延时函数
    8          **********************************************************************/
    9          void delay (unsigned char time)
   10          {
   11   1          unsigned int j;
   12   1          while(time--)
   13   1              {
   14   2              for(j=0;j<6000;j++);
   15   2              }
   16   1      }
   17          /***********************************************************
   18          函数:刷卡错误时执行此函数表示读卡错误
   19          void card_err(void)
   20          功能:如果刷卡错误执行此函数
   21          ************************************************************/
   22          void card_err (void)
   23          {   
   24   1          GLED1;
   25   1          RLED0;
   26   1          BEEP0;
   27   1          delay (50);
   28   1          BEEP1;
   29   1          RLED1;
   30   1          delay (100);
   31   1          RLED0;
   32   1          BEEP0;
   33   1          delay (50);
   34   1          BEEP1;
   35   1          RLED1;
   36   1          
   37   1      }
   38          /***********************************************************
   39          函数:读卡正确函数
   40          void card_ok(void)
   41          功能:如果刷卡正确执行此函数
   42          ************************************************************/
   43          void card_ok (void)
   44          {
   45   1          GLED0;
   46   1          BEEP0;
   47   1          delay (50);
   48   1          BEEP1;
   49   1          GLED1;
   50   1          GLED1;
   51   1      }
   52               
   53          /************************************************************************
   54          函数原型:void send_byte (byte tx_buf)
   55          功能:发送一个字节并计算BCC
   56          *************************************************************************/
   57          void send_byte(unsigned char tx_buf)
   58          {
   59   1       U1THR = tx_buf;
ARM COMPILER V2.54a,  uart                                                                 04/09/07  10:03:17  PAGE 2   

   60   1       BCC^=tx_buf;
   61   1       while ((U1LSR & 0x20) == 0);  // 等待数据发送完毕
   62   1      }
   63          /***********************************************************************
   64          函数原型:void send_command_err(unsigned char CM,unsigned char PM,bit P)
   65          功能:非正常返回返回设置状态
   66          ************************************************************************/
   67          void send_command_yes(void)
   68          {
   69   1          ES0;
   70   1          BCC=0x00;
   71   1          send_byte(STX);
   72   1          send_byte(0x00);    
   73   1          send_byte(0x03);
   74   1          send_byte(CM);
   75   1          send_byte(PM);
   76   1          send_byte('Y');
   77   1          send_byte(ETX);
   78   1          send_byte(BCC);
   79   1          ES1;
   80   1      }
   81          /***********************************************************************
   82          函数原型:void send_command_err(unsigned char CM,unsigned char PM,bit P)
   83          功能:非正常返回返回设置状态
   84          ************************************************************************/
   85          void send_command_no(void)
   86          {
   87   1          ES0;
   88   1          BCC=0x00;
   89   1          send_byte(STX);
   90   1          send_byte(0x00);    
   91   1          send_byte(0x03);
   92   1          send_byte(CM);
   93   1          send_byte(PM);
   94   1          send_byte('N');
   95   1          send_byte(ETX);
   96   1          send_byte(BCC);
   97   1          ES1;
   98   1      }
   99          
  100          /***********************************************************************
  101          函数原型:void send_ver(void)
  102          功能: 复位成功向上位机发送版板信息
  103          ************************************************************************/
  104          void send_ver(void)
  105          {
  106   1         unsigned char i;
  107   1          ES0;
  108   1          BCC=0x00;
  109   1          send_byte(STX);
  110   1          send_byte(0x00);
  111   1          send_byte(0x0e);//12byte
  112   1          send_byte(0x30);
  113   1          send_byte(0x30);
  114   1          for(i=0;i<0x0c;i++)
  115   1            {
  116   2            send_byte(ver[i]);
  117   2            }
  118   1          send_byte(ETX);
  119   1          send_byte(BCC);
  120   1          ES1;
  121   1      }
  122          
  123          /************************************************************************
  124          函数原型:void reset_cmd(void)
  125          功能:执行RESET命令
ARM COMPILER V2.54a,  uart                                                                 04/09/07  10:03:17  PAGE 3   

  126          *************************************************************************/
  127          void reset_cmd(void)
  128          {
  129   1      ES0;
  130   1      BPS=9600;
  131   1      FLAG_TRACK1=0;  //1轨无效
  132   1      FLAG_TRACK2=1;  //2轨有效
  133   1      FLAG_TRACK3=1;  //3轨有效
  134   1      FLAG_INCODE='a';//解码方式为ASCLL方式
  135   1      RLED1;          //关红灯
  136   1      GLED1;          //关绿灯
  137   1      BEEP1;          //蜂鸣关
  138   1      FLAG_RSEND=0;   //禁止重传数据//
  139   1      Disable();      //模式为Disable();
  140   1      send_ver();     //发送版本号   
  141   1      ES1; 
  142   1      UART1_Init (BPS);
  143   1      }
  144          /************************************************************************
  145          函数原型:void chenk_kaji (void)
  146          功能:查状态命令
  147          *************************************************************************/
  148          void chenk_kaji (void)
  149           {
  150   1          ES0;
  151   1          BCC=0x00;
  152   1          send_byte(STX);
  153   1          send_byte(0x00);
  154   1          send_byte(0x05);         //5byte
  155   1          send_byte(CM);
  156   1          send_byte(PM);
  157   1          if(FLAG_INCODE=='a')     //发送编译方式解码方式为ASCLL方式
  158   1              {
  159   2                send_byte(0x30);
  160   2                }
  161   1          else if(FLAG_INCODE=='b')//发送编译方式b为二进制方式
  162   1               {
  163   2                send_byte(0x31);
  164   2                }
  165   1          if((FLAG_TRACK1==0)&&(FLAG_TRACK2==0)&&(FLAG_TRACK3==0))//发送要读的轨道号要读三轨
  166   1               {
  167   2                send_byte(0x30);
  168   2               }
  169   1          else if((FLAG_TRACK1==1)&&(FLAG_TRACK2==0)&&(FLAG_TRACK3==0))//发送要读的轨道号要读一轨
  170   1               {
  171   2                send_byte(0x31);
  172   2               }
  173   1          else if((FLAG_TRACK1==0)&&(FLAG_TRACK2==1)&&(FLAG_TRACK3==0))//发送要读的轨道号要读二轨
  174   1               {
  175   2                send_byte(0x32);
  176   2                }
  177   1          else if((FLAG_TRACK1==0)&&(FLAG_TRACK2==0)&&(FLAG_TRACK3==1))//发送要读的轨道号要读三轨
  178   1               {
  179   2                send_byte(0x33);
  180   2                }
  181   1      
  182   1          else if((FLAG_TRACK1==1)&&(FLAG_TRACK2==1)&&(FLAG_TRACK3==0))//发送要读的轨道号要读一二轨
  183   1               {
  184   2                send_byte(0x34);
  185   2                }
  186   1      
  187   1      
  188   1          else if((FLAG_TRACK1==0)&&(FLAG_TRACK2==1)&&(FLAG_TRACK3==1))//发送要读的轨道号要读二三轨
  189   1               {
  190   2                send_byte(0x35);
  191   2                }
ARM COMPILER V2.54a,  uart                                                                 04/09/07  10:03:17  PAGE 4   

  192   1      
  193   1          else if((FLAG_TRACK1==1)&&(FLAG_TRACK2==0)&&(FLAG_TRACK3==1))//发送要读的轨道号要读一三轨
  194   1               {
  195   2                send_byte(0x36);
  196   2                }
  197   1      
  198   1          else if((FLAG_TRACK1==1)&&(FLAG_TRACK2==1)&&(FLAG_TRACK3==1))//发送要读的轨道号要读一二三轨
  199   1               {
  200   2                send_byte(0x37);
  201   2                }
  202   1      
  203   1          if(FLAG_MCARD==1)                   //ENABLE 指令有效
  204   1               {
  205   2               if(SAVPM==0X30)send_byte(0x31);//有效状态0X30
  206   2               if(SAVPM==0X31)send_byte(0x32);//有效状态0X31//    
  207   2                }
  208   1            else 
  209   1                {
  210   2                send_byte(0x30);
  211   2                 }
  212   1          send_byte(ETX);
  213   1          send_byte(BCC);
  214   1          ES1;
  215   1      }
  216          
  217          /**************************************************************************
  218          函数原型void Enable(void)
  219          功能:查状态命令 如果P=0;执行刷卡有效一次错误关闭等于时错误则永远开启
  220          *****************************************************************************/
  221          void Enable(void)
  222          {   
  223   1          
  224   1          unsigned char shuaka_ok;
  225   1          shuaka_ok=0; 
  226   1          FLAG_EXIT_R=0;
  227   1          FLAG_MCARD=1;//读卡有效为1//
  228   1      loop:
  229   1          ES1;
  230   1          read_card_star();   //开读卡所需的中断
  231   1          clruartbuf();       //首先清除数

⌨️ 快捷键说明

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