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

📄 t0int.lst

📁 完整的wav文件播放程序采用lpc2148芯片
💻 LST
📖 第 1 页 / 共 2 页
字号:
   50:       DA_val = ((sample >> 15) + 0x8000) & 0xFFFF;
 00000088  E1A02001  MOV         R2,R1 ; sample
 0000008C  E1A027C2  MOV         R2,R2,ASR #15 ; sample
 00000090  E2822902  ADD         R2,R2,#0x8000
 00000094  E5101000  LDR         R1,=0xFFFF
 00000098  E0022001  AND         R2,R2,R1
 0000009C  E1A02802  MOV         R2,R2,LSL #16
 000000A0  E1A02822  MOV         R2,R2,LSR #16
 000000A4  E5101000  LDR         R1,=DA_val ; DA_val
 000000A8  E1C120B0  STRH        R2,[R1,#0x0] ; DA_val
   52:       DACR = DA_val;
 000000AC  E5101000  LDR         R1,=DA_val ; DA_val
 000000B0  E1D110B0  LDRH        R1,[R1,#0x0] ; DA_val
 000000B4  E1A02001  MOV         R2,R1
 000000B8  E5101000  LDR         R1,=0xE006C000
 000000BC  E5812000  STR         R2,[R1,#0x0]
   53:       if (p_record >= eot) {
 000000C0  E5101000  LDR         R1,=p_record ; p_record
 000000C4  E5911000  LDR         R1,[R1,#0x0] ; p_record
 000000C8  E5102000  LDR         R2,=eot ; eot
 000000CC  E5922000  LDR         R2,[R2,#0x0] ; eot
 000000D0  E1510002  CMP         R1,R2
 000000D4  3A00005A  BCC         L_2  ; Targ=0x244
   54:         IOCLR1 =  0x00FF0000;                          /* Turn off LEDs */
 000000D8  E3A028FF  MOV         R2,#0xFF0000
 000000DC  E5101000  LDR         R1,=0xE002801C
 000000E0  E5812000  STR         R2,[R1,#0x0]
   55:         IOSET1 =  (0x01 <<  16) & 0xFF0000;            /* Turn on LED */            
 000000E4  E3A02801  MOV         R2,#0x10000
 000000E8  E5101000  LDR         R1,=0xE0028014
 000000EC  E5812000  STR         R2,[R1,#0x0]
   56:         mode = PAUSE;                                  /* Next time the tc0 routine is entered, it playing is pau
             -sed */
 000000F0  E3A02001  MOV         R2,#0x1
 000000F4  E5101000  LDR         R1,=mode ; mode
 000000F8  E5812000  STR         R2,[R1,#0x0] ; mode
   58:       break;
 000000FC  EA000050  B           L_2  ; Targ=0x244
   60:     case PAUSE:
ARM COMPILER V2.50a,  T0Int                                                                23/09/08  18:04:45  PAGE 5   

 00000100          L_4:
   61:       if (timeval == 0)
 00000100  E5101000  LDR         R1,=timeval ; timeval
 00000104  E5911000  LDR         R1,[R1,#0x0] ; timeval
 00000108  E3510000  CMP         R1,#0x0000
 0000010C  1A00004C  BNE         L_2  ; Targ=0x244
   62:         mode = NEXT;                                   /* After 10 seconds are up, switch to next record block */
 00000110  E3A02002  MOV         R2,#0x2
 00000114  E5101000  LDR         R1,=mode ; mode
 00000118  E5812000  STR         R2,[R1,#0x0] ; mode
   63:       break;
 0000011C  EA000048  B           L_2  ; Targ=0x244
   65:     case NEXT:
 00000120          L_5:
   66:         if (blockindex < LASTBLOCK) { blockindex++; } else { blockindex = FIRSTBLOCK; }  /* goto first block when la
             -st was played */
 00000120  E5101000  LDR         R1,=blockindex ; blockindex
 00000124  E5912000  LDR         R2,[R1,#0x0] ; blockindex
 00000128  E3520002  CMP         R2,#0x0002
 0000012C  2A000003  BCS         L_9  ; Targ=0x140
 00000130  E5101000  LDR         R1,=blockindex ; blockindex
 00000134  E2822001  ADD         R2,R2,#0x0001
 00000138  E5812000  STR         R2,[R1,#0x0] ; blockindex
 0000013C  EA000002  B           L_6  ; Targ=0x14C
 00000140          L_9:
 00000140  E3A02001  MOV         R2,#0x1
 00000144  E5101000  LDR         R1,=blockindex ; blockindex
 00000148  E5812000  STR         R2,[R1,#0x0] ; blockindex
   68:     case PREV:
 0000014C          L_6:
   69:       if (mode != NEXT)                                
 0000014C  E3500002  CMP         R0,#0x0002
 00000150  0A00000A  BEQ         L_11  ; Targ=0x180
   70:         if (blockindex > FIRSTBLOCK) { blockindex--; } else { blockindex = LASTBLOCK; }  /* goto last block when 
             -first was played */
 00000154  E5100000  LDR         R0,=blockindex ; blockindex
 00000158  E5901000  LDR         R1,[R0,#0x0] ; blockindex
 0000015C  E3510001  CMP         R1,#0x0001
 00000160  9A000003  BLS         L_12  ; Targ=0x174
 00000164  E5100000  LDR         R0,=blockindex ; blockindex
 00000168  E2411001  SUB         R1,R1,#0x0001
 0000016C  E5801000  STR         R1,[R0,#0x0] ; blockindex
 00000170  EA000002  B           L_11  ; Targ=0x180
 00000174          L_12:
 00000174  E3A01002  MOV         R1,#0x2
 00000178  E5100000  LDR         R0,=blockindex ; blockindex
 0000017C  E5801000  STR         R1,[R0,#0x0] ; blockindex
 00000180          L_11:
   72:       {
 00000180            ; SCOPE-START
   73:       unsigned int blockaddress = (blockindex * BLOCKSIZE);                              /* calculate the absolut
             -e memory address of the block*/
 00000180  E5100000  LDR         R0,=blockindex ; blockindex
 00000184  E5900000  LDR         R0,[R0,#0x0] ; blockindex
 00000188  E1A01000  MOV         R1,R0
 0000018C  E1A01781  MOV         R1,R1,LSL #15
 00000190  ---- Variable 'blockaddress' assigned to Register 'R1' ----
   74:         p_wav_hdr = (void*) blockaddress;                                                /* point the Wave/RIFF s
             -tructure to the new block */
 00000190  E1A03001  MOV         R3,R1 ; blockaddress
 00000194  E5102000  LDR         R2,=p_wav_hdr ; p_wav_hdr
 00000198  E5823000  STR         R3,[R2,#0x0] ; p_wav_hdr
   75:         p_record = (signed short*)(void*) blockaddress + 0x24;                           /* Set the sample pointe
             -r after the wave file header */
 0000019C  E1A03001  MOV         R3,R1 ; blockaddress
 000001A0  E2833048  ADD         R3,R3,#0x0048
ARM COMPILER V2.50a,  T0Int                                                                23/09/08  18:04:45  PAGE 6   

 000001A4  E5102000  LDR         R2,=p_record ; p_record
 000001A8  E5823000  STR         R3,[R2,#0x0] ; p_record
   77:         if (p_wav_hdr->length < BLOCKSIZE){                                              
 000001AC  E5102000  LDR         R2,=p_wav_hdr ; p_wav_hdr
 000001B0  E5924000  LDR         R4,[R2,#0x0] ; p_wav_hdr
 000001B4  E5942004  LDR         R2,[R4,#0x4]
 000001B8  E1A03002  MOV         R3,R2
 000001BC  E3530902  CMP         R3,#0x8000
 000001C0  2A000004  BCS         L_14  ; Targ=0x1D8
   78:           eot = (unsigned int)(blockaddress + p_wav_hdr->length);                        /* Get the end of the fi
             -le from either the header or */
 000001C4  E1A03001  MOV         R3,R1 ; blockaddress
 000001C8  E0833002  ADD         R3,R3,R2 ; blockaddress
 000001CC  E5102000  LDR         R2,=eot ; eot
 000001D0  E5823000  STR         R3,[R2,#0x0] ; eot
   79:         } else {
 000001D4  EA000004  B           L_15  ; Targ=0x1EC
 000001D8          L_14:
   80:           eot = (unsigned int)(blockaddress + BLOCKSIZE) -1;                            /* set to the maximum (bl
             -ock boundary)                */
 000001D8  E1A02001  MOV         R2,R1 ; blockaddress
 000001DC  E2822902  ADD         R2,R2,#0x8000
 000001E0  E2422001  SUB         R2,R2,#0x0001
 000001E4  E5101000  LDR         R1,=eot ; eot
 000001E8  E5812000  STR         R2,[R1,#0x0] ; eot
   81:         } 
 000001EC          L_15:
   82:         if (blockindex == LASTBLOCK)                                                    /* don't play the content
             - of the bootloader */
 000001EC  E3500002  CMP         R0,#0x0002
 000001F0  1A000004  BNE         L_16  ; Targ=0x208
   83:         eot -= SIZE_OF_BOOTLOADER;
 000001F4  E5101000  LDR         R1,=eot ; eot
 000001F8  E5912000  LDR         R2,[R1,#0x0] ; eot
 000001FC  E2422A03  SUB         R2,R2,#0x3000
 00000200  E5101000  LDR         R1,=eot ; eot
 00000204  E5812000  STR         R2,[R1,#0x0] ; eot
 00000208          L_16:
 00000208            ; SCOPE-END
   86:       IOCLR1 =  0x00FF0000;                                     /* Turn off LEDs */
 00000208  E3A028FF  MOV         R2,#0xFF0000
 0000020C  E5101000  LDR         R1,=0xE002801C
 00000210  E5812000  STR         R2,[R1,#0x0]
   87:       IOSET1 = (0x01 <<  (blockindex + 16)) & 0xFF0000;         /* Turn on LED */
 00000214  E2800010  ADD         R0,R0,#0x0010
 00000218  E3A01001  MOV         R1,#0x1
 0000021C  E1A01011  MOV         R1,R1,LSL R0
 00000220  E20118FF  AND         R1,R1,#0xFF0000
 00000224  E5100000  LDR         R0,=0xE0028014
 00000228  E5801000  STR         R1,[R0,#0x0]
   89:       print_info = 1;                                           /* indicate that track information is printed in 
             -the main loop */
 0000022C  E3A01001  MOV         R1,#0x1
 00000230  E5100000  LDR         R0,=print_info ; print_info
 00000234  E5C01000  STRB        R1,[R0,#0x0] ; print_info
   90:       mode = PLAY;                                              /* Next time the tc0 routine is entered, it start
             -s playing */
 00000238  E3A01000  MOV         R1,#0x0
 0000023C  E5100000  LDR         R0,=mode ; mode
 00000240  E5801000  STR         R1,[R0,#0x0] ; mode
   92:   }
 00000244          L_2:
   93:   T0IR        = 1;                            // Clear interrupt flag
 00000244  E3A01001  MOV         R1,#0x1
 00000248  E5100000  LDR         R0,=0xE0004000
 0000024C  E5801000  STR         R1,[R0,#0x0]
ARM COMPILER V2.50a,  T0Int                                                                23/09/08  18:04:45  PAGE 7   

   94:   VICVectAddr = 0;                            // Acknowledge Interrupt
 00000250  E3A01000  MOV         R1,#0x0
 00000254  E5100000  LDR         R0,=0xFFFFF030
 00000258  E5801000  STR         R1,[R0,#0x0]
 0000025C            ; SCOPE-END
   96: }
 0000025C  E8BD001F  LDMIA       R13!,{R0-R4}
 00000260  E25EF004  SUBS        R15,R14,#0x0004
 00000264          ENDP ; 'tc0?A'


*** CODE SEGMENT '?PR?init_timer?A?T0Int':
  101:   T0MR0 = T0_RlFreq;                          // 0.125uSec = 1875-1 counts
 00000000  E5101000  LDR         R1,=0x752
 00000004  E5100000  LDR         R0,=0xE0004018
 00000008  E5801000  STR         R1,[R0,#0x0]
  102:   T0MCR = 3;                                  // Interrupt and Reset on MR0
 0000000C  E3A01003  MOV         R1,#0x3
 00000010  E5100000  LDR         R0,=0xE0004014
 00000014  E5801000  STR         R1,[R0,#0x0]
  103:   T0TCR = 1;                                  // Timer0 Enable
 00000018  E3A01001  MOV         R1,#0x1
 0000001C  E5100000  LDR         R0,=0xE0004004
 00000020  E5801000  STR         R1,[R0,#0x0]
  104:   VICVectAddr0 = (unsigned long)tc0;          // set interrupt vector in 0
 00000024  E5101000  LDR         R1,=tc0?A ; tc0?A
 00000028  E5100000  LDR         R0,=0xFFFFF100
 0000002C  E5801000  STR         R1,[R0,#0x0]
  105:   VICVectCntl0 = 0x20 | 4;                    // use it for Timer 0 Interrupt
 00000030  E3A01024  MOV         R1,#0x24
 00000034  E5100000  LDR         R0,=0xFFFFF200
 00000038  E5801000  STR         R1,[R0,#0x0]
  106:   VICIntEnable = 0x00000010;                  // Enable Timer0 Interrupt
 0000003C  E3A01010  MOV         R1,#0x10
 00000040  E5100000  LDR         R0,=0xFFFFF010
 00000044  E5801000  STR         R1,[R0,#0x0]
  107:   mode = NEXT;
 00000048  E3A01002  MOV         R1,#0x2
 0000004C  E5100000  LDR         R0,=mode ; mode
 00000050  E5801000  STR         R1,[R0,#0x0] ; mode
  108:   blockindex = FIRSTBLOCK - 1l;
 00000054  E3A01000  MOV         R1,#0x0
 00000058  E5100000  LDR         R0,=blockindex ; blockindex
 0000005C  E5801000  STR         R1,[R0,#0x0] ; blockindex
  109: }
 00000060  E12FFF1E  BX          R14
 00000064          ENDP ; 'init_timer?A'



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