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

📄 lpclib.lst

📁 基于LP22132 KELL下的磁卡写卡器
💻 LST
📖 第 1 页 / 共 5 页
字号:
ARM COMPILER V2.54a,  lpclib                                                               04/09/07  10:03:16  PAGE 1   


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

stmt  level    source

    1          
    2          
    3          #include "config.h"
    4          #include "lpclib.h"
    5          
    6          
    7          extern void IRQ_Eint0 (void)__irq;
    8          extern void IRQ_Eint1 (void)__irq;
    9          extern void IRQ_Eint2 (void)__irq;
   10          extern void IRQ_Eint3 (void)__irq;
   11          extern void IRQ_TIME1 (void)__irq;
   12          extern void IRQ_UART1 (void)__irq;
   13          
   14          //------------------------------------------------------------------------------------
   15           //计算奇偶校验
   16           //unsigned char b_lrc (unsigned char dat)
   17           //------------------------------------------------------------------------------------
   18           unsigned char b_lrc (unsigned char dat)
   19           {
   20   1        unsigned char  tmp;
   21   1        unsigned char  tmpdat;
   22   1        tmp=(dat>>4)&0x0f;
   23   1        tmpdat=(dat&0x0f)^tmp;         //低四位或高4位
   24   1        tmp=(tmpdat>>2)&0x03;          //取低二位
   25   1        tmpdat=(tmpdat&0x03)^tmp;
   26   1        tmp=(tmpdat>>1)&0x01;
   27   1        tmpdat=(tmpdat&0x01)^tmp;
   28   1        return(tmpdat);
   29   1      
   30   1        }
   31          //----------------------------------------------------------------------------------------------------
   32          //延时函数参数大延时长
   33          //void DelayNS (uint32 dly)
   34          //----------------------------------------------------------------------------------------------------
   35          void DelayNS (uint32 dly)
   36          {
   37   1       uint32 i;
   38   1       for ( ; dly>0; dly--)
   39   1       for (i=0; i<50000; i++);
   40   1      }
   41          
   42          //----------------------------------------------------------------------------------------------------
   43          //初始化串口0
   44          //void UART0_Init (void)
   45          //----------------------------------------------------------------------------------------------------
   46          void UART0_Init (uint32 baud)
   47          {
   48   1       uint16 Fdiv;
   49   1       PINSEL0 =(PINSEL0&(~0x0f))|0x05; //设置UART0连接,其他为普通IO 口
   50   1       U0LCR = 0x80;                    // DLAB=1,允许设置波特率
   51   1       Fdiv  = (Fpclk / 16) / baud;     // 设置波特率
   52   1       U0DLM = Fdiv / 256;
   53   1       U0DLL = Fdiv % 256;
   54   1       U0LCR = 0x03;
   55   1      }
   56          
   57          //----------------------------------------------------------------------------------------------------
   58          //初始化串口1
   59          // void UART1_Init (void)
ARM COMPILER V2.54a,  lpclib                                                               04/09/07  10:03:16  PAGE 2   

   60          //----------------------------------------------------------------------------------------------------
   61          void UART1_Init (uint32 baud)
   62          {
   63   1       uint16 Fdiv;
   64   1       PINSEL0 =(PINSEL0&(~(0x0f<<16)))|(0x05<<16);    //设置UART0连接,其他为普通IO 口
   65   1       U1LCR = 0x80;                                   // DLAB=1,允许设置波特率
   66   1       Fdiv  = (Fpclk / 16) / baud;                    // 设置波特率
   67   1       U1DLM = Fdiv / 256;
   68   1       U1DLL = Fdiv % 256;
   69   1       U1LCR = 0x03;                                   //锁定设设置
   70   1       U1FCR = 0X01;                                   //使能FIFO并设置触发点为1字节
   71   1       U1IER = 0X01;                                   //使能接收中断
   72   1      }
   73          //----------------------------------------------------------------------------------------------------
   74          //串口0发送一字节`
   75          //void UART0_SendByte (uint8 dat)
   76          //----------------------------------------------------------------------------------------------------
   77          
   78          char Uart_Getch(void)
   79          {
   80   1       uint8 rcv_dat;
   81   1       
   82   1       while ((U1LSR & 0x01) == 0);
   83   1       rcv_dat = U1RBR;
   84   1       
   85   1       return (rcv_dat); 
   86   1      }
   87          //----------------------------------------------------------------------------------------------------
   88          //串口0发送一字节`
   89          //void UART0_SendByte (uint8 dat)
   90          //----------------------------------------------------------------------------------------------------
   91          void Uart_SendByte (uint8 dat)
   92          {
   93   1       U1THR = dat;
   94   1       while ((U1LSR & 0x20) == 0);  // 等待数据发送完毕
   95   1      }
   96          
   97          //----------------------------------------------------------------------------------------------------
   98          //串口0发送字符串`
   99          //void Uart0_SendString(char *pt)
  100          //----------------------------------------------------------------------------------------------------
  101          
  102          void Uart_SendString(char *pt)
  103          {
  104   1          while(*pt)
  105   1          Uart_SendByte(*pt++);
  106   1      }
  107          
  108          //----------------------------------------------------------------------------------------------------
  109          //串口打印
  110          //void Uart_Printf(char *fmt,...)
  111          //----------------------------------------------------------------------------------------------------
  112          void Uart_Printf(char *fmt,...)
  113          {
  114   1          va_list ap;
  115   1          char string[256];
  116   1      
  117   1          va_start(ap,fmt);
  118   1          vsprintf(string,fmt,ap);
  119   1          Uart_SendString(string);
  120   1          va_end(ap);
  121   1      }
  122          
  123          //----------------------------------------------------------------------------------------------------
  124          //串口0接接收一字符串`
  125          //void Uart_GetString(char *string)
ARM COMPILER V2.54a,  lpclib                                                               04/09/07  10:03:16  PAGE 3   

  126          //----------------------------------------------------------------------------------------------------
  127          void Uart_GetString(char *string)
  128          {
  129   1          char *string2=string;
  130   1          char c;
  131   1          while((c=Uart_Getch())!='\r')
  132   1          {
  133   2          if(c=='\b')
  134   2          {
  135   3              if( (int)string2 < (int)string )
  136   3              {
  137   4              Uart_Printf("\b \b");
  138   4              string--;
  139   4              }
  140   3          }
  141   2          else 
  142   2          {
  143   3              *string++=c;
  144   3              Uart_SendByte(c);
  145   3          }
  146   2          }
  147   1          *string='\0';
  148   1          Uart_SendByte('\n');
  149   1      }
  150          //-----------------------------------------------------------------------------------------------------
  151          //端口初始化
  152          //void Port_Init(void);
  153          //------------------------------------------------------------------------------------------------------
  154          void Port_Init(void)
  155          {
  156   1      
  157   1      //  P00 RXD  P01TXD P03 EINT1  P04 OUT P05 OUT P06 OUT P07 OUT P08 RXD P09TXD P010 IN   P011 SCL  P014 SD
             -A  P015 EINT2 
  158   1      //
  159   1      //      P0. 15            12            8             4             0 
  160   1      //|PINSEL0  | 10 11 00 00 | 11 00 01 01 | 00 00 00 00 | 11 00 01 01 |  //控制功能=0xb0c500c5
  161   1      //|IO0DIR   | 0  1  1  1     1  0  0  0    1  1  1  1    0  0  0  0 |  //低16位=0x78f0
  162   1      
  163   1      
  164   1      
  165   1      
  166   1      // P016 EINT0 P018 CAP1.3 P019 CAP1.2 P020 EINT3 P021 OUT  P022 OUT  P028 OUT  P029 IN 
  167   1      // 
  168   1      //      P0. 31            28            24          20             16 
  169   1      //|PINSEL1  | 00 00 00 00 | 00 00 00 00 | 00 00 00 11 | 11 00 00 01 |  //控制功能=0x000003c1
  170   1      //|IO0DIR   |  1  1  1  0    1  1  1  1   1   1  1  0   0   0  0  0 |  //高16位=0xefe0
  171   1       PINSEL1=0x000003c1;            //IO状态控制1
  172   1       PINSEL0=0xb0c500c5;            //IO状态控制0
  173   1       IO0DIR =0xefe078f0;            //IO方向控制器
  174   1       IO0SET =0x00000000;            //IO置位寄存器
  175   1       IO0CLR =0x00000000;            //IO清除寄存器
  176   1      
  177   1      
  178   1      //P117 OUT P119 OUT P121 IN P122 OUT  P124OUT P125 OUT P127 OUT P129 IN P130 IN  
  179   1      //      P. 31          24           16          8           0  //X位为0 P1.31- P1.26用作GPIO口
  180   1      //|PINSEL2  | 0000 0000 | 0000 0000 | 0000 0000 | 0000 0YX0 |  //X位为1 P1.31- P1.26用作JTAG调试口
  181   1      //      P. 31          24           16          8           0  //Y位为0 P1.25- P1.16用作GPIO口
  182   1      //|PINSEL2  | 0000 0000 | 0000 0000 | 0000 0000 | 0000 0YX0 |  //Y位为1 P1.25- P1.16用作跟踪调试口
  183   1      // IO1DIR     1001 1111   1101 1111   1111 1111   1111 1111    //IO1DIR=0x09fdfffff;
  184   1      
  185   1                                                                     
  186   1      
  187   1      PINSEL2=PINSEL2&0xfffffff9;//除X,Y位外其它位不允许写1          //用作GPIO口
  188   1      IO1DIR =0x09fdfffff;            //IO方向控制器
  189   1      IO1SET  =0x00000000;            //IO置位寄存器
  190   1      IO1CLR  =0x00000000;            //IO清除寄存器
ARM COMPILER V2.54a,  lpclib                                                               04/09/07  10:03:16  PAGE 4   

  191   1      }
  192          
  193          
  194          /*
  195          //----------------------------------------------------------------------------------------------------
  196          //使能HD1 写NS
  197          //void Hd1_H(void)
  198          //----------------------------------------------------------------------------------------------------
  199          void Hd1_H(void)
  200           {
  201           if(FLAG_TRACK1==0)return;
  202          //IO0SET 0000 0000 0000 0000 0000 0000 000x 0000 
  203           IO0SET=0x00000010; //写入1
  204           //IO1SET 0000 00X0 0000 0000 0000 0000 0000 0000 
  205           IO1CLR=0x02000000; //写入0
  206           }
  207          //----------------------------------------------------------------------------------------------------
  208          //使能HD1 写SN
  209          //void Hd1_L(void)
  210          //----------------------------------------------------------------------------------------------------
  211          void Hd1_L(void)
  212           {
  213           if(FLAG_TRACK1==0)return;
  214           //IO0SET 0000 0000 0000 0000 0000 0000 000x 0000 
  215           IO0CLR=0x00000010; //写入0
  216           //IO1SET 0000 00X0 0000 0000 0000 0000 0000 0000 
  217           IO1SET=0x02000000;//写入1
  218           }
  219          //----------------------------------------------------------------------------------------------------
  220          //关闭写磁头
  221          //void Hd1_L(void)
  222          //----------------------------------------------------------------------------------------------------
  223          void Hd1_off(void)
  224          {
  225          //IO0SET 0000 0000 0000 0000 0000 0000 000x 0000 
  226           IO0SET=0x00000010; //写入1
  227           //IO1SET 0000 00X0 0000 0000 0000 0000 0000 0000 
  228           IO1SET=0x02000000; //写入1
  229          }
  230          //----------------------------------------------------------------------------------------------------
  231          //使能HD2 写NS
  232          //void Hd1_H(void)
  233          //----------------------------------------------------------------------------------------------------
  234          void Hd2_H(void)
  235          {
  236           if(FLAG_TRACK2==0)return;
  237          //IO0SET 0000 0000 0000 0000 0000 0000 00X0 0000 
  238           IO0SET=0x00000020; //写入1
  239          //IO0SET 0000 0000 0000 0000 0000 0000 0X00 0000 
  240           IO0CLR=0x00000040; //写入0
  241          }
  242          //------------------------------------------------------------------------------------------------------
  243          //使能HD1 写SN
  244          //void Hd1_L(void)
  245          //----------------------------------------------------------------------------------------------------
  246          void Hd2_L(void)
  247          {
  248           if(FLAG_TRACK2==0)return;
  249          //IO0SET 0000 0000 0000 0000 0000 0000 00X0 0000 
  250           IO0CLR=0x00000020; //写入0
  251          //IO0SET 0000 0000 0000 0000 0000 0000 0X00 0000 
  252           IO0SET=0x00000040; //写入1
  253          }
  254          //----------------------------------------------------------------------------------------------------
  255          //关闭写磁头
  256          //void Hd2_L(void)
ARM COMPILER V2.54a,  lpclib                                                               04/09/07  10:03:16  PAGE 5   

  257          //----------------------------------------------------------------------------------------------------
  258          void Hd2_off(void)
  259          {
  260          //IO0SET 0000 0000 0000 0000 0000 0000 00X0 0000 
  261           IO0SET=0x00000060; //写入1
  262          //IO0SET 0000 0000 0000 0000 0000 0000 0X00 0000 
  263          // IO0SET=IO0SET|0x00000040; //写入1
  264          }
  265          //----------------------------------------------------------------------------------------------------
  266          //使能HD3 写NS
  267          //void Hd3_H(void)
  268          //----------------------------------------------------------------------------------------------------
  269          void Hd3_H(void)
  270          {
  271           if(FLAG_TRACK3==0)return;
  272          //IO0SET 0000 0000 0000 0000 0000 0000 X000 0000 
  273           IO0SET=0x00000080; //写入1
  274          //IO1SET 0000 000X 0000 0000 0000 0000 0000 0000 
  275           IO1CLR=0x01000000; //写入0

⌨️ 快捷键说明

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