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

📄 lpc_main.lst

📁 用于ZLG的EasyARM LPC22系列开发板的IAR代码,绝对原创,可以直接使用ZLG开发板+H-JTAG调试,仿ZLG代码风格.欢迎拍砖~
💻 LST
📖 第 1 页 / 共 2 页
字号:
   \   000000BC   001080E5           STR      R1,[R0, #+0]
     92              VICIntSelect = 0;
   \   000000C0   F300E0E3           MVN      R0,#+243
   \   000000C4   F00EC0E3           BIC      R0,R0,#0xF00
   \   000000C8   0010A0E3           MOV      R1,#+0
   \   000000CC   001080E5           STR      R1,[R0, #+0]
     93          
     94              /* 添加自己的代码 */
     95          
     96          }
   \   000000D0   0EF0A0E1           MOV      PC,LR            ;; return
   \                     ??TargetResetInit_0:
   \   000000D4   80C01FE0           DC32     0xe01fc080
   \   000000D8   00C11FE0           DC32     0xe01fc100
   \   000000DC   84C01FE0           DC32     0xe01fc084
   \   000000E0   8CC01FE0           DC32     0xe01fc08c
   \   000000E4   88C01FE0           DC32     0xe01fc088
     97          
     98          
     99          
    100          
    101          #define   SPI_CS	0x00000100		/* P0.8 */
    102          #define   SPI_DATA	0x00000040		/* P0.6 */
    103          #define   SPI_CLK	0x00000010		/* P0.4 */
    104          
    105          #define   SPI_IOCON	0x00000150		/* 定义SPI接口的I/O设置字 */
    106          
    107          
    108          
    109          /****************************************************************************
    110          * 名称:DelayNS()
    111          * 功能:长软件延时
    112          * 入口参数:dly		延时参数,值越大,延时越久
    113          * 出口参数:无
    114          ****************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    115          void  DelayNS(uint32  dly)
    116          {  uint32  i;
   \                     DelayNS:
   \   00000000   050000EA           B        ??DelayNS_0
    117          
    118             for(; dly>0; dly--) 
    119                for(i=0; i<5000; i++);
   \                     ??DelayNS_1:
   \   00000004   011091E2           ADDS     R1,R1,#+1
   \                     ??DelayNS_2:
   \   00000008   8820A0E3           MOV      R2,#+136
   \   0000000C   4C2D82E3           ORR      R2,R2,#0x1300
   \   00000010   020051E1           CMP      R1,R2
   \   00000014   FAFFFF3A           BCC      ??DelayNS_1
   \   00000018   010050E2           SUBS     R0,R0,#+1
   \                     ??DelayNS_0:
   \   0000001C   000050E3           CMP      R0,#+0
   \   00000020   0100000A           BEQ      ??DelayNS_3
   \   00000024   0010A0E3           MOV      R1,#+0
   \   00000028   F6FFFFEA           B        ??DelayNS_2
    120          }
   \                     ??DelayNS_3:
   \   0000002C   0EF0A0E1           MOV      PC,LR            ;; return
    121          
    122          
    123          /****************************************************************************
    124          * 名称:HC595_SendDat()
    125          * 功能:向74HC595发送一字节数据
    126          * 入口参数:dat		要发送的数据
    127          * 出口参数:无
    128          * 说明:发送数据时,高位先发送。
    129          ****************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    130          void  HC595_SendDat(uint8 dat)
    131          {  uint8  i;
    132          
    133             IO0CLR = SPI_CS;			    // SPI_CS = 0
   \                     HC595_SendDat:
   \   00000000   CE12A0E3           MOV      R1,#-536870900
   \   00000004   A01B81E3           ORR      R1,R1,#0x28000
   \   00000008   402FA0E3           MOV      R2,#+256
   \   0000000C   002081E5           STR      R2,[R1, #+0]
    134             for(i=0; i<8; i++)			// 发送8位数据
   \   00000010   0010A0E3           MOV      R1,#+0
   \   00000014   090000EA           B        ??HC595_SendDat_0
    135             {  IO0CLR = SPI_CLK;			// SPI_CLK = 0
    136                /* 设置SPI_DATA输出值 */
    137                if( (dat&0x80)!=0 ) IO0SET = SPI_DATA;
    138                  else IO0CLR = SPI_DATA;
   \                     ??HC595_SendDat_1:
   \   00000018   CE22A0E3           MOV      R2,#-536870900
   \   0000001C   A02B82E3           ORR      R2,R2,#0x28000
   \   00000020   4030A0E3           MOV      R3,#+64
   \   00000024   003082E5           STR      R3,[R2, #+0]
    139                dat <<= 1;
   \                     ??HC595_SendDat_2:
   \   00000028   8000B0E1           LSLS     R0,R0,#+1
    140                IO0SET = SPI_CLK;			// SPI_CLK = 1
   \   0000002C   4E22A0E3           MOV      R2,#-536870908
   \   00000030   A02B82E3           ORR      R2,R2,#0x28000
   \   00000034   1030A0E3           MOV      R3,#+16
   \   00000038   003082E5           STR      R3,[R2, #+0]
   \   0000003C   011091E2           ADDS     R1,R1,#+1
   \                     ??HC595_SendDat_0:
   \   00000040   FF1011E2           ANDS     R1,R1,#0xFF      ;; Zero extend
   \   00000044   080051E3           CMP      R1,#+8
   \   00000048   0A00002A           BCS      ??HC595_SendDat_3
   \   0000004C   CE22A0E3           MOV      R2,#-536870900
   \   00000050   A02B82E3           ORR      R2,R2,#0x28000
   \   00000054   1030A0E3           MOV      R3,#+16
   \   00000058   003082E5           STR      R3,[R2, #+0]
   \   0000005C   800010E3           TST      R0,#0x80
   \   00000060   ECFFFF0A           BEQ      ??HC595_SendDat_1
   \   00000064   4E22A0E3           MOV      R2,#-536870908
   \   00000068   A02B82E3           ORR      R2,R2,#0x28000
   \   0000006C   4030A0E3           MOV      R3,#+64
   \   00000070   003082E5           STR      R3,[R2, #+0]
   \   00000074   EBFFFFEA           B        ??HC595_SendDat_2
    141             }
    142             
    143             IO0SET = SPI_CS;			    // SPI_CS = 1,输出显示数据
   \                     ??HC595_SendDat_3:
   \   00000078   4E02A0E3           MOV      R0,#-536870908
   \   0000007C   A00B80E3           ORR      R0,R0,#0x28000
   \   00000080   401FA0E3           MOV      R1,#+256
   \   00000084   001080E5           STR      R1,[R0, #+0]
    144          }
   \   00000088   0EF0A0E1           MOV      PC,LR            ;; return
    145          
    146          

   \                                 In segment DATA_C, align 4, align-sorted
    147          const uint8  DISP_TAB[16] = { 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80, 
   \                     DISP_TAB:
   \   00000000   010204081020       DC8 1, 2, 4, 8, 16, 32, 64, 128, 129, 66, 36, 24, 36, 66, 129, 0
   \              408081422418
   \              24428100    
    148                                        0x81,0x42,0x24,0x18,0x24,0x42,0x81,0x00 };                        
    149          /****************************************************************************
    150          * 名称:main()
    151          * 功能:根据表DISP_TAB来控制LED显示。
    152          ****************************************************************************/

   \                                 In segment CODE, align 4, keep-with-next
    153          void  main(void)
    154          {  uint8  i; 		
   \                     main:
   \   00000000   10402DE9           PUSH     {R4,LR}
    155          	TargetResetInit();
   \   00000004   ........           BL       TargetResetInit
    156             PINSEL0 = 0x00000000;		// 设置管脚连接GPIO
   \   00000008   E004A0E3           MOV      R0,#-536870912
   \   0000000C   B00B80E3           ORR      R0,R0,#0x2C000
   \   00000010   0010A0E3           MOV      R1,#+0
   \   00000014   001080E5           STR      R1,[R0, #+0]
    157             
    158             IO0DIR = SPI_IOCON;			// 设置SPI控制口为输出
   \   00000018   8E02A0E3           MOV      R0,#-536870904
   \   0000001C   A00B80E3           ORR      R0,R0,#0x28000
   \   00000020   541FA0E3           MOV      R1,#+336
   \   00000024   001080E5           STR      R1,[R0, #+0]
    159             while(1)	
    160             {  for(i=0; i<16; i++)
   \                     ??main_0:
   \   00000028   0040A0E3           MOV      R4,#+0
   \                     ??main_1:
   \   0000002C   FF4014E2           ANDS     R4,R4,#0xFF      ;; Zero extend
   \   00000030   100054E3           CMP      R4,#+16
   \   00000034   FBFFFF2A           BCS      ??main_0
    161                {  HC595_SendDat(~DISP_TAB[i]);  // 输出LED显示数据
   \   00000038   0400B0E1           MOVS     R0,R4
   \   0000003C   FF0010E2           ANDS     R0,R0,#0xFF      ;; Zero extend
   \   00000040   1C109FE5           LDR      R1,??main_2      ;; DISP_TAB
   \   00000044   0100D0E7           LDRB     R0,[R0, +R1]
   \   00000048   0000F0E1           MVNS     R0,R0
   \   0000004C   FF0010E2           ANDS     R0,R0,#0xFF      ;; Zero extend
   \   00000050   ........           BL       HC595_SendDat
    162                   DelayNS(4);			// 延时
   \   00000054   0400A0E3           MOV      R0,#+4
   \   00000058   ........           BL       DelayNS
    163                } 
   \   0000005C   014094E2           ADDS     R4,R4,#+1
   \   00000060   F1FFFFEA           B        ??main_1
   \                     ??main_2:
   \   00000064   ........           DC32     DISP_TAB
    164             }
    165          }
    166          
    167          /*********************************************************************************************************
    168          **                            End Of File
    169          ********************************************************************************************************/

   Maximum stack usage in bytes:

     Function        CSTACK
     --------        ------
     DelayNS             0
     HC595_SendDat       0
     TargetResetInit     0
     main                8


   Segment part sizes:

     Function/Label   Bytes
     --------------   -----
     _A_PLLCON           4
     _A_PLLCFG           4
     _A_PLLSTAT          4
     _A_PLLFEED          4
     _A_VPBDIV           4
     _A_MAMCR            4
     _A_MAMTIM           4
     _A_VICIntSelect     4
     _A_VICIntEnClear    4
     VICVectAddr         4
     _A_PINSEL0          4
     _A_IO0SET           4
     _A_IO0DIR           4
     _A_IO0CLR           4
     TargetResetInit   232
     DelayNS            48
     HC595_SendDat     140
     DISP_TAB           16
     main              104

 
 524 bytes in segment CODE
  56 bytes in segment DATA_AN
  16 bytes in segment DATA_C
 
 524 bytes of CODE  memory
  16 bytes of CONST memory
   0 bytes of DATA  memory (+ 56 bytes shared)

Errors: none
Warnings: none

⌨️ 快捷键说明

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