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

📄 lpclib.lst

📁 基于LP22132 KELL下的磁卡写卡器
💻 LST
📖 第 1 页 / 共 5 页
字号:
  561   1          #if (Fpclk / (Fcclk / 4)) == 4
                       VPBDIV = 1;
                   #endif
  564   1          
  565   1          #if (Fcco / Fcclk) == 2
                       PLLCFG = ((Fcclk / Fosc) - 1) | (0 << 5);
                   #endif
  568   1          #if (Fcco / Fcclk) == 4
  569   1              PLLCFG = ((Fcclk / Fosc) - 1) | (1 << 5);
  570   1          #endif
  571   1          #if (Fcco / Fcclk) == 8
                       PLLCFG = ((Fcclk / Fosc) - 1) | (2 << 5);
                   #endif
  574   1          #if (Fcco / Fcclk) == 16
                       PLLCFG = ((Fcclk / Fosc) - 1) | (3 << 5);
                   #endif
  577   1              PLLFEED = 0xaa;
  578   1              PLLFEED = 0x55;
  579   1              while((PLLSTAT & (1 << 10)) == 0);
  580   1              PLLCON = 3;
  581   1              PLLFEED = 0xaa;
  582   1              PLLFEED = 0x55;
  583   1              
  584   1              /* 设置存储器加速模块 */
  585   1              /* Set memory accelerater module*/
  586   1              MAMCR = 0;
ARM COMPILER V2.54a,  lpclib                                                               04/09/07  10:03:16  PAGE 10  

  587   1          #if Fcclk < 20000000
                       MAMTIM = 1;
                   #else
  590   1          #if Fcclk < 40000000
                       MAMTIM = 2;
                   #else
  593   1              MAMTIM = 3;
  594   1          #endif
  595   1          #endif
  596   1              MAMCR = 2;
  597   1              
  598   1              /* 初始化VIC */
  599   1              /* initialize VIC*/
  600   1              VICIntEnClr = 0xffffffff;          //清除中断标志位
  601   1              VICVectAddr = 0x00000000;          //向量中断地址寄存器清0
  602   1              VICIntSelect= 0x00000000;          //所有中断为IRQ中断
  603   1      
  604   1              VICVectCntl0 = 0x0000002e;          
  605   1              VICVectAddr0 = (unsigned int)IRQ_Eint0;      // 0
  606   1              
  607   1              VICVectCntl1 = 0x0000002f;
  608   1              VICVectAddr1 = (unsigned int)IRQ_Eint1;      // 1
  609   1              
  610   1              VICVectCntl2 = 0x00000030;
  611   1              VICVectAddr2 = (unsigned int)IRQ_Eint2;      // 2
  612   1              
  613   1              VICVectCntl3 = 0x00000031;
  614   1              VICVectAddr3 = (unsigned int)IRQ_Eint3;      // 3
  615   1              
  616   1              VICVectCntl4 = 0x00000025;
  617   1              VICVectAddr4 = (unsigned int)IRQ_TIME1;      // 4
  618   1              
  619   1              VICVectCntl5 = 0x00000027 ;
  620   1              VICVectAddr5 = (unsigned int)IRQ_UART1;      // 5
  621   1              INT_INIT ();  //中断初始化
  622   1              //EN_UART1_INT(); //开串行中断1
  623   1              //EN_W_INT();     //开写卡中断
  624   1             
  625   1              Port_Init();
  626   1             // Hd1_off();
  627   1              //Hd2_off();
  628   1              //Hd3_off();
  629   1              CLR_HD2();
  630   1              CLR_HD3();
  631   1              UART1_Init (9600);
  632   1      //------------------------------------------------------------------------------------------
  633   1      // UART1= 0x00000027  串行中断0中断号
  634   1      // TIME1= 0x00000025  捕获中断3中断号
  635   1      // Eint0= 0x0000002e  外部中断0中断号
  636   1      // Eint1= 0x0000002f  外部中断1中断号
  637   1      // Eint2= 0x00000030  外部中断2中断号
  638   1      // Eint3= 0x00000031  外部中断3中断号
  639   1      //------------------------------------------------------------------------------------------
  640   1      }
ARM COMPILER V2.54a,  lpclib                                                               04/09/07  10:03:16  PAGE 11  

ASSEMBLY LISTING OF GENERATED OBJECT CODE



*** EXTERNALS:
 EXTERN CODE16 (vsprintf?T)
 EXTERN DATA (FLAG_TRACK2)
 EXTERN DATA (FLAG_TRACK3)
 EXTERN CODE32 (IRQ_Eint0?A)
 EXTERN CODE32 (IRQ_Eint1?A)
 EXTERN CODE32 (IRQ_Eint2?A)
 EXTERN CODE32 (IRQ_Eint3?A)
 EXTERN CODE32 (IRQ_TIME1?A)
 EXTERN CODE32 (IRQ_UART1?A)
 EXTERN CODE16 (?C?UDIV?T)
 EXTERN CODE16 (?C?SDIV?T)



*** PUBLICS:
 PUBLIC         R_CPD?T
 PUBLIC         R_HD1?T
 PUBLIC         R_HD2?T
 PUBLIC         R_HD3?T
 PUBLIC         b_lrc?T
 PUBLIC         EN_R_INT?T
 PUBLIC         CLR_R_INT?T
 PUBLIC         EN_W_INT?T
 PUBLIC         CLR_W_INT?T
 PUBLIC         CLR_UART1_INT?T
 PUBLIC         EN_UART1_INT?T
 PUBLIC         Uart_Printf?T
 PUBLIC         Uart_GetString?T
 PUBLIC         Uart_SendString?T
 PUBLIC         Uart_SendByte?T
 PUBLIC         Uart_Getch?T
 PUBLIC         UART1_Init?T
 PUBLIC         UART0_Init?T
 PUBLIC         DelayNS?T
 PUBLIC         Port_Init?T
 PUBLIC         Beep_OFF?T
 PUBLIC         Beep_ON?T
 PUBLIC         LED_ERR_OFF?T
 PUBLIC         LED_ERR_ON?T
 PUBLIC         LED_W_OFF?T
 PUBLIC         LED_W_ON?T
 PUBLIC         LED_R_OFF?T
 PUBLIC         LED_R_ON?T
 PUBLIC         CS_HD?T
 PUBLIC         CLR_HD2?T
 PUBLIC         CLR_HD3?T
 PUBLIC         Hd1_L?T
 PUBLIC         Hd1_H?T
 PUBLIC         Hd2_L?T
 PUBLIC         Hd2_H?T
 PUBLIC         Hd3_L?T
 PUBLIC         Hd3_H?T
 PUBLIC         TargetResetInit?T
 PUBLIC         EN_HD3?T
 PUBLIC         EN_HD2?T
 PUBLIC         INT_INIT?T



*** DATA SEGMENT '?CON?lpclib':
 00000000          ??S_1:
 00000000            DB          0x08,' ',0x08,0x00

*** CODE SEGMENT '?PR?b_lrc?T?lpclib':
   18:  unsigned char b_lrc (unsigned char dat)
 00000000  1C01      MOV         R1,R0 ; dat
 00000002  ---- Variable 'dat' assigned to Register 'R1' ----
ARM COMPILER V2.54a,  lpclib                                                               04/09/07  10:03:16  PAGE 12  

   19:  {
 00000002            ; SCOPE-START
   22:   tmp=(dat>>4)&0x0f;
 00000002  1C08      MOV         R0,R1 ; dat
 00000004  0602      LSL         R2,R0,#0x18 ; dat
 00000006  0E12      LSR         R2,R2,#0x18
 00000008  0912      LSR         R2,R2,#0x4
 0000000A  230F      MOV         R3,#0xF
 0000000C  401A      AND         R2,R3
 0000000E  0612      LSL         R2,R2,#0x18
 00000010  0E12      LSR         R2,R2,#0x18
 00000012  ---- Variable 'tmp' assigned to Register 'R2' ----
   23:   tmpdat=(dat&0x0f)^tmp;         //低四位或高4位
 00000012  1C08      MOV         R0,R1 ; dat
 00000014  0601      LSL         R1,R0,#0x18 ; dat
 00000016  0E09      LSR         R1,R1,#0x18
 00000018  4019      AND         R1,R3
 0000001A  1C10      MOV         R0,R2 ; tmp
 0000001C  0600      LSL         R0,R0,#0x18 ; tmp
 0000001E  0E00      LSR         R0,R0,#0x18
 00000020  4041      EOR         R1,R0
 00000022  0609      LSL         R1,R1,#0x18
 00000024  0E09      LSR         R1,R1,#0x18
 00000026  ---- Variable 'tmpdat' assigned to Register 'R1' ----
   24:   tmp=(tmpdat>>2)&0x03;          //取低二位
 00000026  1C08      MOV         R0,R1 ; tmpdat
 00000028  0602      LSL         R2,R0,#0x18 ; tmpdat
 0000002A  0E12      LSR         R2,R2,#0x18
 0000002C  0892      LSR         R2,R2,#0x2
 0000002E  2003      MOV         R0,#0x3
 00000030  4002      AND         R2,R0
 00000032  0612      LSL         R2,R2,#0x18
 00000034  0E12      LSR         R2,R2,#0x18
   25:   tmpdat=(tmpdat&0x03)^tmp;
 00000036  0609      LSL         R1,R1,#0x18 ; tmpdat
 00000038  0E09      LSR         R1,R1,#0x18
 0000003A  4001      AND         R1,R0
 0000003C  1C10      MOV         R0,R2 ; tmp
 0000003E  0600      LSL         R0,R0,#0x18 ; tmp
 00000040  0E00      LSR         R0,R0,#0x18
 00000042  4041      EOR         R1,R0
 00000044  0609      LSL         R1,R1,#0x18
 00000046  0E09      LSR         R1,R1,#0x18
   26:   tmp=(tmpdat>>1)&0x01;
 00000048  1C08      MOV         R0,R1 ; tmpdat
 0000004A  0602      LSL         R2,R0,#0x18 ; tmpdat
 0000004C  0E12      LSR         R2,R2,#0x18
 0000004E  0852      LSR         R2,R2,#0x1
 00000050  2001      MOV         R0,#0x1
 00000052  4002      AND         R2,R0
 00000054  0612      LSL         R2,R2,#0x18
 00000056  0E12      LSR         R2,R2,#0x18
   27:   tmpdat=(tmpdat&0x01)^tmp;
 00000058  0609      LSL         R1,R1,#0x18 ; tmpdat
 0000005A  0E09      LSR         R1,R1,#0x18
 0000005C  4001      AND         R1,R0
 0000005E  1C10      MOV         R0,R2 ; tmp
 00000060  0600      LSL         R0,R0,#0x18 ; tmp
 00000062  0E00      LSR         R0,R0,#0x18
 00000064  4041      EOR         R1,R0
 00000066  0609      LSL         R1,R1,#0x18
 00000068  0E09      LSR         R1,R1,#0x18
   28:   return(tmpdat);
 0000006A  1C08      MOV         R0,R1 ; tmpdat
 0000006C  0600      LSL         R0,R0,#0x18 ; tmpdat
 0000006E  0E00      LSR         R0,R0,#0x18
ARM COMPILER V2.54a,  lpclib                                                               04/09/07  10:03:16  PAGE 13  

 00000070            ; SCOPE-END
   30:   }
 00000070  4770      BX          R14
 00000072          ENDP ; 'b_lrc?T'


*** CODE SEGMENT '?PR?DelayNS?T?lpclib':
   35: void DelayNS (uint32 dly)
 00000000  ---- Variable 'dly' assigned to Register 'R0' ----
   36: {
 00000000            ; SCOPE-START
   38:  for ( ; dly>0; dly--)
 00000000  E006      B           L_4  ; T=0x00000010
   39:  for (i=0; i<50000; i++);
 00000002          L_11:
 00000002  2100      MOV         R1,#0x0
 00000004  ---- Variable 'i' assigned to Register 'R1' ----
 00000004          L_7:
 00000004  3101      ADD         R1,#0x1
 00000006  1C0A      MOV         R2,R1 ; i
 00000008  4800      LDR         R3,=0xC350
 0000000A  429A      CMP         R2,R3 ; i
 0000000C  D3FA      BCC         L_7  ; T=0x00000004
 0000000E  3801      SUB         R0,#0x1
 00000010          L_4:
 00000010  1C01      MOV         R1,R0 ; dly
 00000012  2900      CMP         R1,#0x0 ; dly
 00000014  D8F5      BHI         L_11  ; T=0x00000002
 00000016            ; SCOPE-END
   40: }
 00000016  4770      BX          R14
 00000018          ENDP ; 'DelayNS?T'


*** CODE SEGMENT '?PR?UART0_Init?T?lpclib':
   46: void UART0_Init (uint32 baud)
 00000000  B500      PUSH        {LR}
 00000002  1C02      MOV         R2,R0 ; baud
 00000004  ---- Variable 'baud' assigned to Register 'R2' ----
   47: {
 00000004            ; SCOPE-START
   49:  PINSEL0 =(PINSEL0&(~0x0f))|0x05; //设置UART0连接,其他为普通IO 口
 00000004  4800      LDR         R0,=0xE002C000
 00000006  6801      LDR         R1,[R0,#0x0]
 00000008  200F      MOV         R0,#0xF
 0000000A  4381      BIC         R1,R0
 0000000C  2005      MOV         R0,#0x5
 0000000E  4301      ORR         R1,R0
 00000010  4800      LDR         R0,=0xE002C000
 00000012  6001      STR         R1,[R0,#0x0]
   50:  U0LCR = 0x80;                    // DLAB=1,允许设置波特率
 00000014  2180      MOV         R1,#0x80
 00000016  4800      LDR         R0,=0xE000C00C
 00000018  7001      STRB        R1,[R0,#0x0]
   51:  Fdiv  = (Fpclk / 16) / baud;     // 设置波特率
 0000001A  1C11      MOV         R1,R2 ; baud
 0000001C  4800      LDR         R0,=0xA8C00
 0000001E  F7FF      BL          ?C?UDIV?T  ; T=0x0001  (1) ; ?C?UDIV?T
 00000020  FFEF      BL          ?C?UDIV?T  ; T=0x0001  (2) ; ?C?UDIV?T
 00000022  1C08      MOV         R0,R1
 00000024  0403      LSL         R3,R0,#0x10
 00000026  0C1B      LSR         R3,R3,#0x10
 00000028  ---- Variable 'Fdiv' assigned to Register 'R3' ----
   52:  U0DLM = Fdiv / 256;
 00000028  1C18      MOV         R0,R3 ; Fdiv
 0000002A  0400      LSL         R0,R0,#0x10 ; Fdiv
 0000002C  0C00      LSR         R0,R0,#0x10

⌨️ 快捷键说明

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