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

📄 timerdemo.lst

📁 TIMERDEMO for arm7 ,学习用
💻 LST
📖 第 1 页 / 共 2 页
字号:
 0000000C  C6        DB          0xC6
 0000000D  A1        DB          0xA1
 0000000E  86        DB          0x86
 0000000F  8E        DB          0x8E
 00000010           END_INIT

*** DATA SEGMENT '?DT0?TIMERDEMO':
 00000000          Count:
 00000000           BEGIN_INIT
 00000000  00000000  DD          0x0
 00000004           END_INIT
 00000004          val:
 00000004           BEGIN_INIT
 00000004  00        DB          0x0
 00000005           END_INIT



*** CODE SEGMENT '?PR?IRQ_Timer0?A?TIMERDEMO':
  131: void IRQ_Timer0 (void) __irq
 00000000  E92D5F0F  STMDB       R13!,{R0-R3,R8-R12,LR}
  135:   if (Count < 2) {
 00000004  E5100000  LDR         R0,=Count ; Count
 00000008  E5901000  LDR         R1,[R0,#0x0] ; Count
 0000000C  E3510002  CMP         R1,#0x0002
 00000010  2A000003  BCS         L_1  ; Targ=0x24
  136:     Count ++;
 00000014  E5100000  LDR         R0,=Count ; Count
 00000018  E2811001  ADD         R1,R1,#0x0001
 0000001C  E5801000  STR         R1,[R0,#0x0] ; Count
  137:   }
 00000020  EA000015  B           L_2  ; Targ=0x7C
 00000024          L_1:
  139:     Count = 0;
 00000024  E3A01000  MOV         R1,#0x0
 00000028  E5100000  LDR         R0,=Count ; Count
 0000002C  E5801000  STR         R1,[R0,#0x0] ; Count
ARM COMPILER V2.42,  TIMERDEMO                                                             12/01/06  09:38:31  PAGE 7   

  140:     IO1PIN ^= (1 << LED1)
 00000030  E5100000  LDR         R0,=0xE0028010
 00000034  E5901000  LDR         R1,[R0,#0x0]
 00000038  E22117FF  EOR         R1,R1,#0x3FC0000
 0000003C  E5801000  STR         R1,[R0,#0x0]
  148:     LedDisplay(LedTab[val]);
 00000040  E5100000  LDR         R0,=val ; val
 00000044  E5D00000  LDRB        R0,[R0,#0x0] ; val
 00000048  E1A01000  MOV         R1,R0
 0000004C  E5100000  LDR         R0,=LedTab ; LedTab
 00000050  E7D00001  LDRB        R0,[R0,+R1]
 00000054  EBFFFFE9  BL          LedDisplay?A  ; Targ=0x0
  149:     val ++;
 00000058  E5100000  LDR         R0,=val ; val
 0000005C  E5D01000  LDRB        R1,[R0,#0x0] ; val
 00000060  E2811001  ADD         R1,R1,#0x0001
 00000064  E5C01000  STRB        R1,[R0,#0x0] ; val
  150:     val &= 0x0f;
 00000068  E5100000  LDR         R0,=val ; val
 0000006C  E5D01000  LDRB        R1,[R0,#0x0] ; val
 00000070  E201100F  AND         R1,R1,#0x000F
 00000074  E5100000  LDR         R0,=val ; val
 00000078  E5C01000  STRB        R1,[R0,#0x0] ; val
  151:   }
 0000007C          L_2:
  152:   IO0PIN ^= (1 << BEEP);//BEEP蜂鸣
 0000007C  E5100000  LDR         R0,=0xE0028000
 00000080  E5901000  LDR         R1,[R0,#0x0]
 00000084  E2211080  EOR         R1,R1,#0x0080
 00000088  E5801000  STR         R1,[R0,#0x0]
  153:   T0IR = 0x01;              /* 清除中断标志                                 */
 0000008C  E3A01001  MOV         R1,#0x1
 00000090  E5100000  LDR         R0,=0xE0004000
 00000094  E5801000  STR         R1,[R0,#0x0]
  154:   VICVectAddr = 0x00;       /* 通知VIC中断处理结束                          */
 00000098  E3A01000  MOV         R1,#0x0
 0000009C  E5100000  LDR         R0,=0xFFFFF030
 000000A0  E5801000  STR         R1,[R0,#0x0]
  155: }
 000000A4  E8BD5F0F  LDMIA       R13!,{R0-R3,R8-R12,LR}
 000000A8  E25EF004  SUBS        R15,R14,#0x0004
 000000AC          ENDP ; 'IRQ_Timer0?A'


*** CODE SEGMENT '?PR?VicIntSetup?T?TIMERDEMO':
  161:     VICIntSelect = 0x00;                /* 所有中断通道设置为IRQ中断            */
 00000000  2100      MOV         R1,#0x0
 00000002  4800      LDR         R0,=0xFFFFF00C
 00000004  6001      STR         R1,[R0,#0x0]
  162:     VICVectCntl0 = 0x20 | 0x04;         /* 设置定时器0中断通道分配最高优先级    */
 00000006  2124      MOV         R1,#0x24
 00000008  4800      LDR         R0,=0xFFFFF200
 0000000A  6001      STR         R1,[R0,#0x0]
  163:     VICVectAddr0 = (uint32)IRQ_Timer0;  /* 设置中断服务程序地址                 */
 0000000C  4900      LDR         R1,=IRQ_Timer0?A ; IRQ_Timer0?A
 0000000E  4800      LDR         R0,=0xFFFFF100
 00000010  6001      STR         R1,[R0,#0x0]
  164:     VICIntEnable = 1 << 0x04;           /* 使能定时器0中断                      */
 00000012  2110      MOV         R1,#0x10
 00000014  4800      LDR         R0,=0xFFFFF010
 00000016  6001      STR         R1,[R0,#0x0]
  165: }
 00000018  4770      BX          R14
 0000001A          ENDP ; 'VicIntSetup?T'


*** CODE SEGMENT '?PR?PortInit?T?TIMERDEMO':
  169:     PINSEL0 = 0x00000000;       // 设置管脚连接GPIO
 00000000  2100      MOV         R1,#0x0
 00000002  4800      LDR         R0,=0xE002C000
ARM COMPILER V2.42,  TIMERDEMO                                                             12/01/06  09:38:31  PAGE 8   

 00000004  6001      STR         R1,[R0,#0x0]
  170:     PINSEL1 = 0x00000000;       // 设置管脚连接GPIO
 00000006  4800      LDR         R0,=0xE002C004
 00000008  6001      STR         R1,[R0,#0x0]
  171:     IO0DIR  = 0x00000000;       // 设置P0口为输入
 0000000A  4800      LDR         R0,=0xE0028008
 0000000C  6001      STR         R1,[R0,#0x0]
  172:     IO1DIR  = 0x00000000;       // 设置P1口为输入
 0000000E  4800      LDR         R0,=0xE0028018
 00000010  6001      STR         R1,[R0,#0x0]
  188:     IO0DIR |= (1 << BEEP);      // 设置BEEP控制口为输出 
 00000012  2280      MOV         R2,#0x80
 00000014  4800      LDR         R0,=0xE0028008
 00000016  6801      LDR         R1,[R0,#0x0]
 00000018  4311      ORR         R1,R2
 0000001A  6001      STR         R1,[R0,#0x0]
  190:     IO0DIR |= (1 << RCLK);      // 设置RCLK控制口为输出 
 0000001C  4800      LDR         R2,=0x20000000
 0000001E  4800      LDR         R0,=0xE0028008
 00000020  6801      LDR         R1,[R0,#0x0]
 00000022  4311      ORR         R1,R2
 00000024  6001      STR         R1,[R0,#0x0]
  191:     IO0DIR |= (1 << SCK0);      // 设置SCK0控制口为输出 
 00000026  2210      MOV         R2,#0x10
 00000028  4800      LDR         R0,=0xE0028008
 0000002A  6801      LDR         R1,[R0,#0x0]
 0000002C  4311      ORR         R1,R2
 0000002E  6001      STR         R1,[R0,#0x0]
  192:     IO0DIR |= (1 << MOSI0);     // 设置MOSI0控制口为输出    
 00000030  2240      MOV         R2,#0x40
 00000032  4800      LDR         R0,=0xE0028008
 00000034  6801      LDR         R1,[R0,#0x0]
 00000036  4311      ORR         R1,R2
 00000038  6001      STR         R1,[R0,#0x0]
  194:     IO1DIR |= (1 << LED1)       // 设置LED1为输出   
 0000003A  4800      LDR         R2,=0x3FC0000
 0000003C  4800      LDR         R0,=0xE0028018
 0000003E  6801      LDR         R1,[R0,#0x0]
 00000040  4311      ORR         R1,R2
 00000042  6001      STR         R1,[R0,#0x0]
  203:     IO0PIN  = (0 << RCLK)
 00000044  21D0      MOV         R1,#0xD0
 00000046  4800      LDR         R0,=0xE0028000
 00000048  6001      STR         R1,[R0,#0x0]
  208:     IO1PIN  = (1 << LED1)
 0000004A  4800      LDR         R1,=0x1540000
 0000004C  4800      LDR         R0,=0xE0028010
 0000004E  6001      STR         R1,[R0,#0x0]
  212: }
 00000050  4770      BX          R14
 00000052          ENDP ; 'PortInit?T'


*** CODE SEGMENT '?PR?Timer0Init?T?TIMERDEMO':
  217:     T0TC   = 0;         /* 定时器设置为0                                        */
 00000000  2100      MOV         R1,#0x0
 00000002  4800      LDR         R0,=0xE0004008
 00000004  6001      STR         R1,[R0,#0x0]
  218:     T0PR   = 0;         /* 时钟不分频                                           */
 00000006  4800      LDR         R0,=0xE000400C
 00000008  6001      STR         R1,[R0,#0x0]
  219:     T0MCR  = 0x03;      /* 设置T0MR0匹配后复位T0TC,并产生中断标志              */
 0000000A  2103      MOV         R1,#0x3
 0000000C  4800      LDR         R0,=0xE0004014
 0000000E  6001      STR         R1,[R0,#0x0]
  220:     T0MR0  = Fpclk / 2; /* 0.5秒钟定时                                          */
 00000010  4800      LDR         R1,=0x546000
 00000012  4800      LDR         R0,=0xE0004018
ARM COMPILER V2.42,  TIMERDEMO                                                             12/01/06  09:38:31  PAGE 9   

 00000014  6001      STR         R1,[R0,#0x0]
  221:     T0TCR  = 0x01;      /* 启动定时器                                           */
 00000016  2101      MOV         R1,#0x1
 00000018  4800      LDR         R0,=0xE0004004
 0000001A  6001      STR         R1,[R0,#0x0]
  222: }
 0000001C  4770      BX          R14
 0000001E          ENDP ; 'Timer0Init?T'


*** CODE SEGMENT '?PR?LedDisplay?T?TIMERDEMO':
  224: void LedDisplay(unsigned char data)
 00000000  B500      PUSH        {LR}
 00000002  1C01      MOV         R1,R0 ; data
 00000004  ---- Variable 'data' assigned to Register 'R1' ----
  226:   MSPI_SendData(data);
 00000004  1C08      MOV         R0,R1 ; data
 00000006  0600      LSL         R0,R0,#0x18 ; data
 00000008  0E00      LSR         R0,R0,#0x18
 0000000A  F7FF      BL          MSPI_SendData?T  ; T=0x0001  (1)
 0000000C  FFF9      BL          MSPI_SendData?T  ; T=0x0001  (2)
  227:   IO0SET = (1 << RCLK);
 0000000E  4800      LDR         R1,=0x20000000
 00000010  4800      LDR         R0,=0xE0028004
 00000012  6001      STR         R1,[R0,#0x0]
  228:   IO0CLR = (1 << RCLK);
 00000014  4800      LDR         R0,=0xE002800C
 00000016  6001      STR         R1,[R0,#0x0]
  229: }
 00000018  BC08      POP         {R3}
 0000001A  4718      BX          R3
 0000001C          ENDP ; 'LedDisplay?T'


*** CODE SEGMENT '?PR?MSPI_SendData?T?TIMERDEMO':
  231: void MSPI_SendData(unsigned char data)
 00000000  B410      PUSH        {R4}
 00000002  ---- Variable 'data' assigned to Register 'R0' ----
  232: {
 00000002            ; SCOPE-START
  234:   for (i = 0; i < 8; i ++) {
 00000002  2100      MOV         R1,#0x0
 00000004  ---- Variable 'i' assigned to Register 'R1' ----
 00000004  E017      B           L_5  ; T=0x00000036
 00000006          L_6:
  235:     IO0CLR = (1 << SCK0);
 00000006  2310      MOV         R3,#0x10
 00000008  4800      LDR         R2,=0xE002800C
 0000000A  6013      STR         R3,[R2,#0x0]
  236:     if (data & 0x80) {
 0000000C  1C02      MOV         R2,R0 ; data
 0000000E  0612      LSL         R2,R2,#0x18 ; data
 00000010  0E12      LSR         R2,R2,#0x18
 00000012  2480      MOV         R4,#0x80
 00000014  4222      TST         R2,R4
 00000016  D003      BEQ         L_8  ; T=0x00000020
  237:       IO0SET = (1 << MOSI0);
 00000018  2440      MOV         R4,#0x40
 0000001A  4800      LDR         R2,=0xE0028004
 0000001C  6014      STR         R4,[R2,#0x0]
  238:     }
 0000001E  E002      B           L_9  ; T=0x00000026
 00000020          L_8:
  240:       IO0CLR = (1 << MOSI0);
 00000020  2440      MOV         R4,#0x40
 00000022  4800      LDR         R2,=0xE002800C
 00000024  6014      STR         R4,[R2,#0x0]
  241:     }
 00000026          L_9:
  242:     data <<= 1;
ARM COMPILER V2.42,  TIMERDEMO                                                             12/01/06  09:38:31  PAGE 10  

 00000026  0040      LSL         R0,R0,#0x1 ; data
 00000028  0600      LSL         R0,R0,#0x18
 0000002A  0E00      LSR         R0,R0,#0x18
  243:     IO0SET = (1 << SCK0);
 0000002C  4800      LDR         R2,=0xE0028004
 0000002E  6013      STR         R3,[R2,#0x0]
  244:   }    
 00000030  3101      ADD         R1,#0x1
 00000032  0609      LSL         R1,R1,#0x18
 00000034  0E09      LSR         R1,R1,#0x18
 00000036          L_5:
 00000036  1C0A      MOV         R2,R1 ; i
 00000038  0612      LSL         R2,R2,#0x18 ; i
 0000003A  0E12      LSR         R2,R2,#0x18
 0000003C  2A08      CMP         R2,#0x8
 0000003E  DBE2      BLT         L_6  ; T=0x00000006
 00000040            ; SCOPE-END
  245: }
 00000040  BC10      POP         {R4}
 00000042  4770      BX          R14
 00000044          ENDP ; 'MSPI_SendData?T'


*** CODE SEGMENT '?PR?DelayNS?T?TIMERDEMO':
  255: void DelayNS (uint32 dly)
 00000000  ---- Variable 'dly' assigned to Register 'R0' ----
  256: {
 00000000            ; SCOPE-START
  259:     for ( ; dly>0; dly--)
 00000000  E006      B           L_12  ; T=0x00000010
  260:         for (i=0; i<50000; i++);
 00000002          L_19:
 00000002  2100      MOV         R1,#0x0
 00000004  ---- Variable 'i' assigned to Register 'R1' ----
 00000004          L_15:
 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_15  ; T=0x00000004
 0000000E  3801      SUB         R0,#0x1
 00000010          L_12:
 00000010  1C01      MOV         R1,R0 ; dly
 00000012  2900      CMP         R1,#0x0 ; dly
 00000014  D8F5      BHI         L_19  ; T=0x00000002
 00000016            ; SCOPE-END
  261: }
 00000016  4770      BX          R14
 00000018          ENDP ; 'DelayNS?T'


*** CODE SEGMENT '?PR?main?TIMERDEMO':
  270: int main (void)
 00000000  B500      PUSH        {LR}
  272:     PortInit();
 00000002  F7FF      BL          PortInit?T  ; T=0x0001  (1)
 00000004  FFFD      BL          PortInit?T  ; T=0x0001  (2)
  273:     Timer0Init();
 00000006  F7FF      BL          Timer0Init?T  ; T=0x0001  (1)
 00000008  FFFB      BL          Timer0Init?T  ; T=0x0001  (2)
  274:     VicIntSetup();
 0000000A  F7FF      BL          VicIntSetup?T  ; T=0x0001  (1)
 0000000C  FFF9      BL          VicIntSetup?T  ; T=0x0001  (2)
  277:     }            
 0000000E          L_20:
 0000000E  E7FE      B           L_20  ; T=0x0000000E
  279: }
 00000010  BC08      POP         {R3}
 00000012  4718      BX          R3
 00000014          ENDP ; 'main'

ARM COMPILER V2.42,  TIMERDEMO                                                             12/01/06  09:38:31  PAGE 11  



Module Information          Static
----------------------------------
  code size            =    ------
  data size            =         5
  const size           =        16
End of Module Information.


ARM COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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