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

📄 demo.lst

📁 NXP产品LPC23XX的开发板的源文件
💻 LST
📖 第 1 页 / 共 2 页
字号:


*** CODE SEGMENT '?PR?tc0_isr?A?demo':
   73: void tc0_isr (void) __irq {
 00000000  E92D501F  STMDB       R13!,{R0-R4,R12,LR}
 00000004  ---- Variable 'val' assigned to Register 'R4' ----
 00000004            ; SCOPE-START
   77:   if (DataRun) {                            /* Data Stream is running */
 00000004  E5100000  LDR         R0,=DataRun ; DataRun
 00000008  E5D00000  LDRB        R0,[R0,#0x0] ; DataRun
 0000000C  E3500000  CMP         R0,#0x0000
 00000010  0A000035  BEQ         L_5  ; Targ=0xEC
   78:     val = DataBuf[DataOut];                 /* Get Audio Sample */
 00000014  E5100000  LDR         R0,=DataOut ; DataOut
 00000018  E1D020B0  LDRH        R2,[R0,#0x0] ; DataOut
 0000001C  E1A01002  MOV         R1,R2
 00000020  E1A01081  MOV         R1,R1,LSL #1
 00000024  E5100000  LDR         R0,=DataBuf ; DataBuf
 00000028  E19000B1  LDRH        R0,[R0,R1]
 0000002C  E1A00800  MOV         R0,R0,LSL #16
 00000030  E1A00840  MOV         R0,R0,ASR #16
 00000034  E1A04000  MOV         R4,R0
   79:     cnt = (DataIn - DataOut) & (B_S - 1);   /* Buffer Data Count */
 00000038  E1A00002  MOV         R0,R2
 0000003C  E5101000  LDR         R1,=DataIn ; DataIn
 00000040  E1D110B0  LDRH        R1,[R1,#0x0] ; DataIn
 00000044  E0411000  SUB         R1,R1,R0
 00000048  E20110FF  AND         R1,R1,#0x00FF
 0000004C  ---- Variable 'cnt' assigned to Register 'R1' ----
   80:     if (cnt == (B_S - P_C*P_S)) {           /* Too much Data in Buffer */
 0000004C  E1A00001  MOV         R0,R1 ; cnt
 00000050  E35000E0  CMP         R0,#0x00E0 ; cnt
 00000054  1A000002  BNE         L_6  ; Targ=0x64
   81:       DataOut++;                            /* Skip one Sample */
 00000058  E5100000  LDR         R0,=DataOut ; DataOut
 0000005C  E2822001  ADD         R2,R2,#0x0001
 00000060  E1C020B0  STRH        R2,[R0,#0x0] ; DataOut
   82:     }
 00000064          L_6:
   83:     if (cnt > (P_C*P_S)) {                  /* Still enough Data in Buffer */
 00000064  E1A00001  MOV         R0,R1 ; cnt
 00000068  E3500020  CMP         R0,#0x0020 ; cnt
 0000006C  9A000003  BLS         L_7  ; Targ=0x80
   84:       DataOut++;                            /* Update Data Out Index */
 00000070  E5100000  LDR         R0,=DataOut ; DataOut
 00000074  E1D010B0  LDRH        R1,[R0,#0x0] ; DataOut
ARM COMPILER V2.53,  demo                                                                  05/09/06  14:20:50  PAGE 6   

 00000078  E2811001  ADD         R1,R1,#0x0001
 0000007C  E1C010B0  STRH        R1,[R0,#0x0] ; DataOut
   85:     }
 00000080          L_7:
   86:     DataOut &= B_S - 1;                     /* Adjust Buffer Out Index */
 00000080  E5100000  LDR         R0,=DataOut ; DataOut
 00000084  E1D010B0  LDRH        R1,[R0,#0x0] ; DataOut
 00000088  E20110FF  AND         R1,R1,#0x00FF
 0000008C  E5100000  LDR         R0,=DataOut ; DataOut
 00000090  E1C010B0  STRH        R1,[R0,#0x0] ; DataOut
   87:     if (val < 0) VUM -= val;                /* Accumulate Neg Value */
 00000094  E1A00004  MOV         R0,R4 ; val
 00000098  E3500000  CMP         R0,#0x0000 ; val
 0000009C  AA000005  BGE         L_8  ; Targ=0xB8
 000000A0  E1A02004  MOV         R2,R4 ; val
 000000A4  E5100000  LDR         R0,=VUM ; VUM
 000000A8  E5901000  LDR         R1,[R0,#0x0] ; VUM
 000000AC  E0411002  SUB         R1,R1,R2 ; val
 000000B0  E5801000  STR         R1,[R0,#0x0] ; VUM
 000000B4  EA000004  B           L_9  ; Targ=0xCC
 000000B8          L_8:
   88:     else         VUM += val;                /* Accumulate Pos Value */
 000000B8  E1A02004  MOV         R2,R4 ; val
 000000BC  E5100000  LDR         R0,=VUM ; VUM
 000000C0  E5901000  LDR         R1,[R0,#0x0] ; VUM
 000000C4  E0811002  ADD         R1,R1,R2 ; val
 000000C8  E5801000  STR         R1,[R0,#0x0] ; VUM
 000000CC          L_9:
   89:     val  *= Volume;                         /* Apply Volume Level */
 000000CC  E5100000  LDR         R0,=Volume ; Volume
 000000D0  E5900000  LDR         R0,[R0,#0x0] ; Volume
 000000D4  E0040490  MUL         R4,R0,R4
   90:     val >>= 16;                             /* Adjust Value */
 000000D8  E1A04844  MOV         R4,R4,ASR #16 ; val
   91:     val  += 0x8000;                         /* Add Bias */
 000000DC  E2844902  ADD         R4,R4,#0x8000 ; val
   92:     val  &= 0xFFFF;                         /* Mask Value */
 000000E0  E5100000  LDR         R0,=0xFFFF
 000000E4  E0044000  AND         R4,R4,R0 ; val
   93:   } else {
 000000E8  EA000000  B           L_10  ; Targ=0xF0
 000000EC          L_5:
   94:     val = 0x8000;                           /* DAC Middle Point */
 000000EC  E3A04902  MOV         R4,#0x8000
   95:   }
 000000F0          L_10:
   97:   if (Mute) {
 000000F0  E5100000  LDR         R0,=Mute ; Mute
 000000F4  E5D00000  LDRB        R0,[R0,#0x0] ; Mute
 000000F8  E3500000  CMP         R0,#0x0000
 000000FC  0A000000  BEQ         L_11  ; Targ=0x104
   98:     val = 0x8000;                           /* DAC Middle Point */
 00000100  E3A04902  MOV         R4,#0x8000
   99:   }
 00000104          L_11:
  101:   DACR = val & 0xFFC0;                      /* Set Speaker Output */
 00000104  E1A01004  MOV         R1,R4 ; val
 00000108  E5100000  LDR         R0,=0xFFC0
 0000010C  E0011000  AND         R1,R1,R0 ; val
 00000110  E5100000  LDR         R0,=0xE006C000
 00000114  E5801000  STR         R1,[R0,#0x0]
  103:   if ((Tick++ & 0x03FF) == 0) {             /* On every 1024th Tick */
 00000118  E5101000  LDR         R1,=Tick ; Tick
 0000011C  E5910000  LDR         R0,[R1,#0x0] ; Tick
 00000120  E2802001  ADD         R2,R0,#0x0001
 00000124  E5812000  STR         R2,[R1,#0x0] ; Tick
ARM COMPILER V2.53,  demo                                                                  05/09/06  14:20:50  PAGE 7   

 00000128  E5101000  LDR         R1,=0x3FF
 0000012C  E1100001  TST         R0,R1
 00000130  1A000022  BNE         L_12  ; Targ=0x1C0
  104:     get_potval();                           /* Get Potenciometer Value */
 00000134  EBFFFFB1  BL          get_potval?A  ; Targ=0x0
  105:     if (VolCur == 0x8000) {                 /* Check for Minimum Level */
 00000138  E5100000  LDR         R0,=VolCur ; VolCur
 0000013C  E1D000B0  LDRH        R0,[R0,#0x0] ; VolCur
 00000140  E1A01000  MOV         R1,R0
 00000144  E3510902  CMP         R1,#0x8000
 00000148  1A000003  BNE         L_13  ; Targ=0x15C
  106:       Volume = 0;                           /* No Sound */
 0000014C  E3A02000  MOV         R2,#0x0
 00000150  E5100000  LDR         R0,=Volume ; Volume
 00000154  E5802000  STR         R2,[R0,#0x0] ; Volume
  107:     } else {
 00000158  EA000004  B           L_14  ; Targ=0x170
 0000015C          L_13:
  108:       Volume = VolCur * PotVal;             /* Chained Volume Level */
 0000015C  E5100000  LDR         R0,=PotVal ; PotVal
 00000160  E1D000B0  LDRH        R0,[R0,#0x0] ; PotVal
 00000164  E0010190  MUL         R1,R0,R1
 00000168  E5100000  LDR         R0,=Volume ; Volume
 0000016C  E5801000  STR         R1,[R0,#0x0] ; Volume
  109:     }
 00000170          L_14:
  110:     val = VUM >> 20;                        /* Scale Accumulated Value */
 00000170  E5100000  LDR         R0,=VUM ; VUM
 00000174  E5904000  LDR         R4,[R0,#0x0] ; VUM
 00000178  E1A04A24  MOV         R4,R4,LSR #20
  111:     VUM = 0;                                /* Clear VUM */
 0000017C  E3A01000  MOV         R1,#0x0
 00000180  E5100000  LDR         R0,=VUM ; VUM
 00000184  E5801000  STR         R1,[R0,#0x0] ; VUM
  112:     if (val > 7) val = 7;                   /* Limit Value */
 00000188  E1A00004  MOV         R0,R4 ; val
 0000018C  E3500007  CMP         R0,#0x0007 ; val
 00000190  DA000000  BLE         L_15  ; Targ=0x198
 00000194  E3A04007  MOV         R4,#0x7
 00000198          L_15:
  113:     IOCLR1 = LEDMSK;                        /* Turn Off all LEDs */
 00000198  E3A018FF  MOV         R1,#0xFF0000
 0000019C  E5100000  LDR         R0,=0xE002801C
 000001A0  E5801000  STR         R1,[R0,#0x0]
  114:     IOSET1 = LEDMSK >> (7 - val);           /* LEDs show VU Meter */
 000001A4  E1A01004  MOV         R1,R4 ; val
 000001A8  E3A00007  MOV         R0,#0x7
 000001AC  E0400001  SUB         R0,R0,R1 ; val
 000001B0  E3A018FF  MOV         R1,#0xFF0000
 000001B4  E1A01051  MOV         R1,R1,ASR R0
 000001B8  E5100000  LDR         R0,=0xE0028014
 000001BC  E5801000  STR         R1,[R0,#0x0]
  115:   }
 000001C0          L_12:
  117:   T0IR = 1;                                 /* Clear Interrupt Flag */
 000001C0  E3A01001  MOV         R1,#0x1
 000001C4  E5100000  LDR         R0,=0xE0004000
 000001C8  E5801000  STR         R1,[R0,#0x0]
  118:   VICVectAddr = 0;                          /* Acknowledge Interrupt */
 000001CC  E3A01000  MOV         R1,#0x0
 000001D0  E5100000  LDR         R0,=0xFFFFF030
 000001D4  E5801000  STR         R1,[R0,#0x0]
 000001D8            ; SCOPE-END
  119: }
 000001D8  E8BD501F  LDMIA       R13!,{R0-R4,R12,LR}
 000001DC  E25EF004  SUBS        R15,R14,#0x0004
ARM COMPILER V2.53,  demo                                                                  05/09/06  14:20:50  PAGE 8   

 000001E0          ENDP ; 'tc0_isr?A'


*** CODE SEGMENT '?PR?main?demo':
  124: int main (void) {
 00000000  B500      PUSH        {LR}
  126:   PINSEL1 = 0x01080000;                     /* Select AOUT,AIN1 */
 00000002  4800      LDR         R1,=0x1080000
 00000004  4800      LDR         R0,=0xE002C004
 00000006  6001      STR         R1,[R0,#0x0]
  127:   IODIR1  = LEDMSK;                         /* LED's defined as Outputs */
 00000008  4800      LDR         R1,=0xFF0000
 0000000A  4800      LDR         R0,=0xE0028018
 0000000C  6001      STR         R1,[R0,#0x0]
  129:   AD0CR   = 0x00200E02;                     /* ADC: 10-bit AIN1 @ 4MHz */
 0000000E  4800      LDR         R1,=0x200E02
 00000010  4800      LDR         R0,=0xE0034000
 00000012  6001      STR         R1,[R0,#0x0]
  130:   DACR    = 0x00008000;                     /* DAC Output set to Middle Point */
 00000014  4800      LDR         R1,=0x8000
 00000016  4800      LDR         R0,=0xE006C000
 00000018  6001      STR         R1,[R0,#0x0]
  133:   T0MR0 = VPB_CLOCK/DATA_FREQ - 1;          /* TC0 Match Value 0 */
 0000001A  4800      LDR         R1,=0x752
 0000001C  4800      LDR         R0,=0xE0004018
 0000001E  6001      STR         R1,[R0,#0x0]
  134:   T0MCR = 3;                                /* TCO Interrupt and Reset on MR0 */
 00000020  2103      MOV         R1,#0x3
 00000022  4800      LDR         R0,=0xE0004014
 00000024  6001      STR         R1,[R0,#0x0]
  135:   T0TCR = 1;                                /* TC0 Enable */
 00000026  2101      MOV         R1,#0x1
 00000028  4800      LDR         R0,=0xE0004004
 0000002A  6001      STR         R1,[R0,#0x0]
  138:   VICVectAddr1 = (unsigned long)tc0_isr;    /* TC0 Interrupt -> Vector 1 */
 0000002C  4900      LDR         R1,=tc0_isr?A ; tc0_isr?A
 0000002E  4800      LDR         R0,=0xFFFFF104
 00000030  6001      STR         R1,[R0,#0x0]
  139:   VICVectCntl1 = 0x20 | 4;                  /* TC0 Interrupt -> IRQ Slot 1 */
 00000032  2124      MOV         R1,#0x24
 00000034  4800      LDR         R0,=0xFFFFF204
 00000036  6001      STR         R1,[R0,#0x0]
  140:   VICIntEnable = 1 << 4;                    /* Enable TC0 Interrupt */
 00000038  2110      MOV         R1,#0x10
 0000003A  4800      LDR         R0,=0xFFFFF010
 0000003C  6001      STR         R1,[R0,#0x0]
  142:   USB_Init();                               /* USB Initialization */
 0000003E  F7FF      BL          USB_Init?T  ; T=0x0001  (1)
 00000040  FFDF      BL          USB_Init?T  ; T=0x0001  (2)
  143:   USB_Connect(TRUE);                        /* USB Connect */
 00000042  2001      MOV         R0,#0x1
 00000044  F7FF      BL          USB_Connect?T  ; T=0x0001  (1)
 00000046  FFDC      BL          USB_Connect?T  ; T=0x0001  (2)
  145:   while (1);                                /* Loop forever */
 00000048          L_16:
 00000048  E7FE      B           L_16  ; T=0x00000048
  146: }
 0000004A  BC08      POP         {R3}
 0000004C  4718      BX          R3
 0000004E          ENDP ; 'main'



Module Information          Static
----------------------------------
  code size            =    ------
  data size            =       532
  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 + -