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

📄 interrupt.lst

📁 lpc2138读写SD卡的fat文件系统
💻 LST
📖 第 1 页 / 共 2 页
字号:
 000000C8  E3A01102  MOV         R1,#0x80000000
 000000CC  E1100001  TST         R0,R1
 000000D0  0AFFFFF6  BEQ         L_6  ; Targ=0xB0
   33:   AD0CR &= ~0x01000000;                 // Stop A/D Conversion
 000000D4  E3A02401  MOV         R2,#0x1000000
 000000D8  E5100000  LDR         R0,=0xE0034000
 000000DC  E5901000  LDR         R1,[R0,#0x0]
 000000E0  E1C11002  BIC         R1,R1,R2
 000000E4  E5801000  STR         R1,[R0,#0x0]
   34:   tval = (tval >> 6) & 0x03FF;          // Extract AIN0 Value
 000000E8  E5100000  LDR         R0,=tval ; tval
 000000EC  E5901000  LDR         R1,[R0,#0x0] ; tval
 000000F0  E1A01321  MOV         R1,R1,LSR #6
 000000F4  E5100000  LDR         R0,=0x3FF
 000000F8  E0011000  AND         R1,R1,R0
 000000FC  E5100000  LDR         R0,=tval ; tval
 00000100  E5801000  STR         R1,[R0,#0x0] ; tval
   36:   T1IR |= 0x11;                 // clear all interrupts
 00000104  E5100000  LDR         R0,=0xE0008000
 00000108  E5901000  LDR         R1,[R0,#0x0]
 0000010C  E3811011  ORR         R1,R1,#0x0011
 00000110  E5801000  STR         R1,[R0,#0x0]
   37:   VICVectAddr = 0;              // Acknowledge Interrupt
 00000114  E3A01000  MOV         R1,#0x0
 00000118  E5100000  LDR         R0,=0xFFFFF030
 0000011C  E5801000  STR         R1,[R0,#0x0]
   38: }
ARM COMPILER V2.00d,  interrupt                                                            23/10/05  18:16:18  PAGE 5   

 00000120  E8BD000F  LDMIA       R13!,{R0-R3}
 00000124  E25EF004  SUBS        R15,R14,#0x0004
 00000128          ENDP ; 'tc1?A'


*** CODE SEGMENT '?PR?init_timer_1?T?interrupt':
   42:   T1MR0 = 1874;                 // 0.125uSec = 1875-1 counts    
 00000000  4800      LDR         R1,=0x752
 00000002  4800      LDR         R0,=0xE0008018
 00000004  6001      STR         R1,[R0,#0x0]
   43:   T1MCR = 3;                    // Interrupt and Reset on MR0   
 00000006  2103      MOV         R1,#0x3
 00000008  4800      LDR         R0,=0xE0008014
 0000000A  6001      STR         R1,[R0,#0x0]
   45:   T1CCR = 0x05;                 // init control reg.
 0000000C  2105      MOV         R1,#0x5
 0000000E  4800      LDR         R0,=0xE0008028
 00000010  6001      STR         R1,[R0,#0x0]
   46:   T1TCR = 1;                            // Timer1 Enable
 00000012  2101      MOV         R1,#0x1
 00000014  4800      LDR         R0,=0xE0008004
 00000016  6001      STR         R1,[R0,#0x0]
   47:   VICVectAddr1 = (unsigned long)tc1;    // set interrupt vector in 0
 00000018  4900      LDR         R1,=tc1?A ; tc1?A
 0000001A  4800      LDR         R0,=0xFFFFF104
 0000001C  6001      STR         R1,[R0,#0x0]
   48:   VICVectCntl1 = 0x20 | 5;              // use it for Timer 1 Interrupt
 0000001E  2125      MOV         R1,#0x25
 00000020  4800      LDR         R0,=0xFFFFF204
 00000022  6001      STR         R1,[R0,#0x0]
   49: }
 00000024  4770      BX          R14
 00000026          ENDP ; 'init_timer_1?T'


*** CODE SEGMENT '?PR?delay?T?interrupt':
   51: void delay (int delay_val) {     // Delay function
 00000000  ---- Variable 'delay_val' assigned to Register 'R0' ----
 00000000            ; SCOPE-START
   55:   timeval = delay_val;          // init timeer 1 value to delay
 00000000  4800      LDR         R1,=timeval ; timeval
 00000002  6008      STR         R0,[R1,#0x0] ; delay_val
   56:   while (timeval > 0);          // wait until Timer 1 decrements delay_val to zero 
 00000004          L_10:
 00000004  4800      LDR         R0,=timeval ; timeval
 00000006  6800      LDR         R0,[R0,#0x0] ; timeval
 00000008  2800      CMP         R0,#0x0
 0000000A  DCFB      BGT         L_10  ; T=0x00000004
 0000000C            ; SCOPE-END
   57: }
 0000000C  4770      BX          R14
 0000000E          ENDP ; 'delay?T'


*** CODE SEGMENT '?PR?tc0?A?interrupt':
   60: void tc0 (void) __irq {         // Timer 0 is used to measure anonmometer period
 00000000  E92D5F0F  STMDB       R13!,{R0-R3,R8-R12,LR}
   63:   if (T0IR==0x10) {
 00000004  E5100000  LDR         R0,=0xE0004000
 00000008  E5900000  LDR         R0,[R0,#0x0]
 0000000C  E3500010  CMP         R0,#0x0010
 00000010  1A000021  BNE         L_14  ; Targ=0x9C
   64:     set_LED(ONE,ON);
 00000014  E3A00001  MOV         R0,#0x1
 00000018  E3A01001  MOV         R1,#0x1
 0000001C  EBFFFFF7  BL          set_LED?A  ; Targ=0x0
   65:     T0_flag++;                  // measure one full rev
 00000020  E5100000  LDR         R0,=T0_flag ; T0_flag
 00000024  E5901000  LDR         R1,[R0,#0x0] ; T0_flag
 00000028  E2811001  ADD         R1,R1,#0x0001
 0000002C  E5801000  STR         R1,[R0,#0x0] ; T0_flag
   66:     if (T0_flag>4) {
ARM COMPILER V2.00d,  interrupt                                                            23/10/05  18:16:18  PAGE 6   

 00000030  E5100000  LDR         R0,=T0_flag ; T0_flag
 00000034  E5900000  LDR         R0,[R0,#0x0] ; T0_flag
 00000038  E3500004  CMP         R0,#0x0004
 0000003C  DA000011  BLE         L_15  ; Targ=0x88
   67:       timer_0_capture = T0TC;   // get timer counts
 00000040  E5100000  LDR         R0,=0xE0004008
 00000044  E5901000  LDR         R1,[R0,#0x0]
 00000048  E5100000  LDR         R0,=timer_0_capture ; timer_0_capture
 0000004C  E5801000  STR         R1,[R0,#0x0] ; timer_0_capture
   68:       if (timer_0_capture > 50000000) timer_0_capture = 50000000; // set to lowest speed
 00000050  E5100000  LDR         R0,=timer_0_capture ; timer_0_capture
 00000054  E5900000  LDR         R0,[R0,#0x0] ; timer_0_capture
 00000058  E5101000  LDR         R1,=0x2FAF080
 0000005C  E1500001  CMP         R0,R1
 00000060  9A000002  BLS         L_16  ; Targ=0x70
 00000064  E5101000  LDR         R1,=0x2FAF080
 00000068  E5100000  LDR         R0,=timer_0_capture ; timer_0_capture
 0000006C  E5801000  STR         R1,[R0,#0x0] ; timer_0_capture
 00000070          L_16:
   69:       T0TC = 0;                 // reset counter
 00000070  E3A01000  MOV         R1,#0x0
 00000074  E5100000  LDR         R0,=0xE0004008
 00000078  E5801000  STR         R1,[R0,#0x0]
   70:       T0_flag = 0;              // reset flag to measure 4 pulses (1 rev)
 0000007C  E3A01000  MOV         R1,#0x0
 00000080  E5100000  LDR         R0,=T0_flag ; T0_flag
 00000084  E5801000  STR         R1,[R0,#0x0] ; T0_flag
   71:     }
 00000088          L_15:
   72:     T0IR |= 0x10;               // Clear capture interrupt flag
 00000088  E5100000  LDR         R0,=0xE0004000
 0000008C  E5901000  LDR         R1,[R0,#0x0]
 00000090  E3811010  ORR         R1,R1,#0x0010
 00000094  E5801000  STR         R1,[R0,#0x0]
   73:   }    
 00000098  EA00000C  B           L_17  ; Targ=0xD0
 0000009C          L_14:
   74:   else if (T0IR==0x01) {        // Is it a match interrupt?                     
 0000009C  E5100000  LDR         R0,=0xE0004000
 000000A0  E5900000  LDR         R0,[R0,#0x0]
 000000A4  E3500001  CMP         R0,#0x0001
 000000A8  1A000008  BNE         L_17  ; Targ=0xD0
   75:     set_LED(ONE,OFF);           // overflow - no wind
 000000AC  E3A00001  MOV         R0,#0x1
 000000B0  E3A01000  MOV         R1,#0x0
 000000B4  EBFFFFD1  BL          set_LED?A  ; Targ=0x0
   76:     timer_0_capture = 50000000; // no conversion, set to lowest speed
 000000B8  E5101000  LDR         R1,=0x2FAF080
 000000BC  E5100000  LDR         R0,=timer_0_capture ; timer_0_capture
 000000C0  E5801000  STR         R1,[R0,#0x0] ; timer_0_capture
   77:     T0TC = 0;                   // make use counter is reset
 000000C4  E3A01000  MOV         R1,#0x0
 000000C8  E5100000  LDR         R0,=0xE0004008
 000000CC  E5801000  STR         R1,[R0,#0x0]
   78:   }
 000000D0          L_17:
   80:   T0IR |= 0x11;                 // clear all interrupts
 000000D0  E5100000  LDR         R0,=0xE0004000
 000000D4  E5901000  LDR         R1,[R0,#0x0]
 000000D8  E3811011  ORR         R1,R1,#0x0011
 000000DC  E5801000  STR         R1,[R0,#0x0]
   81:   VICVectAddr = 0;              // Acknowledge Interrupt
 000000E0  E3A01000  MOV         R1,#0x0
 000000E4  E5100000  LDR         R0,=0xFFFFF030
 000000E8  E5801000  STR         R1,[R0,#0x0]
   82: }
ARM COMPILER V2.00d,  interrupt                                                            23/10/05  18:16:18  PAGE 7   

 000000EC  E8BD5F0F  LDMIA       R13!,{R0-R3,R8-R12,LR}
 000000F0  E25EF004  SUBS        R15,R14,#0x0004
 000000F4          ENDP ; 'tc0?A'


*** CODE SEGMENT '?PR?init_timer?T?interrupt':
   86:   T0_flag = 0;                  // init flag to measure one rev.
 00000000  2100      MOV         R1,#0x0
 00000002  4800      LDR         R0,=T0_flag ; T0_flag
 00000004  6001      STR         R1,[R0,#0x0] ; T0_flag
   87:   T0MR0 = 0x02FFFFFF;           // large duration for no wind
 00000006  4800      LDR         R1,=0x2FFFFFF
 00000008  4800      LDR         R0,=0xE0004018
 0000000A  6001      STR         R1,[R0,#0x0]
   88:   T0CCR = 0x05;                 // cause capture on P0.0 
 0000000C  2105      MOV         R1,#0x5
 0000000E  4800      LDR         R0,=0xE0004028
 00000010  6001      STR         R1,[R0,#0x0]
   89:   T0MCR = 3;                    // Interrupt and Reset on MR0
 00000012  2103      MOV         R1,#0x3
 00000014  4800      LDR         R0,=0xE0004014
 00000016  6001      STR         R1,[R0,#0x0]
   90:   T0TCR = 1;                    // Timer0 Enable
 00000018  2101      MOV         R1,#0x1
 0000001A  4800      LDR         R0,=0xE0004004
 0000001C  6001      STR         R1,[R0,#0x0]
   91:   VICVectAddr0 = (unsigned long)tc0;    // set interrupt vector in 0
 0000001E  4900      LDR         R1,=tc0?A ; tc0?A
 00000020  4800      LDR         R0,=0xFFFFF100
 00000022  6001      STR         R1,[R0,#0x0]
   92:   VICVectCntl0 = 0x20 | 4;              // use it for Timer 0 Interrupt
 00000024  2124      MOV         R1,#0x24
 00000026  4800      LDR         R0,=0xFFFFF200
 00000028  6001      STR         R1,[R0,#0x0]
 0000002A  4770      BX          R14
 0000002C          ENDP ; 'init_timer?T'



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


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

⌨️ 快捷键说明

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