?? main.lst
字號:
ARM COMPILER V2.50a, Main 23/09/08 18:04:45 PAGE 1
ARM COMPILER V2.50a, COMPILATION OF MODULE Main
OBJECT MODULE PLACED IN .\Obj\Main.obj
COMPILER INVOKED BY: d:\Keil\ARM\BIN\CA.exe Main.c ARM OPTIMIZE(7,SPEED) BROWSE DEBUG PRINT(.\FLASH\MAIN.LST) TABS(4) OB
-JECT(.\Obj\Main.obj)
stmt level source
1 /******************************************************************************/
2 /* This file is part of the uVision/ARM development tools */
3 /* Copyright KEIL ELEKTRONIK GmbH 2002-2004 */
4 /******************************************************************************/
5 /* */
6 /* MAIN.C: Wave Player */
7 /* */
8 /******************************************************************************/
9
10 #include <stdio.h> /* standard I/O .h-file */
11 #include <LPC213x.H> /* LPC21xx definitions */
12 #include <math.h>
13
14 extern int getkey(void);
15 #include "arm.h"
16
17 #include "modes.h"
18 extern enum modes mode;
19
20 #include "riffwave.h"
21 static const unsigned char alignment[][5] = {{"ERR"},{"BYTE"},{"WORD"},{"ERR"},{"DWORD"}};
22
23 extern void init_serial (void); /* Initialize Serial Interface */
24 extern void init_timer (void); /* 8kHz Timer Interrupt Routine */
25
26 extern unsigned long timeval;
27 extern unsigned char print_info;
28 extern struct wav_hdr* p_wav_hdr;
29 extern unsigned int blockindex;
30
31 signed int volume;
32
33 extern void IRQDisable(void);
34 extern void IRQEnable(void);
35 char test;
36 void IRQDisable1 (void) __swi(0)
37 {
38 1 __asm
39 1 {
40 1 MRS R0, SPSR
41 1 ORR R0, R0, #0x80
42 1 MSR SPSR_c, R0
43 1 // MOVS PC, LR
44 1 }
45 1
46 1 test++;
47 1 }
48 void IRQEnable1 (void) __swi(1)
49 {
50 1 __asm
51 1 {
52 1 MRS R0, SPSR
53 1 BIC R0, R0, #0x80
54 1 MSR SPSR_c, R0
55 1 // MOVS PC, LR
56 1 }
57 1
58 1 test++;
ARM COMPILER V2.50a, Main 23/09/08 18:04:45 PAGE 2
59 1 }
60
61
62 void get_input(void) { /* HID processing function */
63 1 unsigned int cnt=0;
64 1 unsigned int val;
65 1 unsigned int key;
66 1
67 1 if(key=getkey()) { /* Next track */
68 2 switch(key){
69 3 case 'n':
70 3 case 'N':
71 3 mode = NEXT;
72 3 break; /* Previous track */
73 3 case 'p':
74 3 case 'P':
75 3 mode = PREV;
76 3 break;
77 3 }
78 2 }
79 1
80 1 AD0CR |= 0x01000000; /* Start A/D Conversion */
81 1 do {
82 2 val = AD0DR; /* Read A/D Data Register */
83 2 } while ((val & 0x80000000) == 0); /* Wait for end of A/D Conversion */
84 1 AD0CR &= ~0x01000000; /* Stop A/D Conversion */
85 1 volume = ((val >> 1) & 0x7FE0); /* Extract AIN0 Value */
86 1 }
87
88 int main (void) {
89 1 unsigned int alignidx;
90 1
91 1 IODIR1 = 0x00FF0000; /* P1.16..23 defined as Outputs */
92 1 AD0CR = 0x00200402; /* Setup A/D: 10-bit AIN0 @ 3MHz */
93 1 PINSEL1 = 0x01080000; /* enable DAC */
94 1
95 1 test=0;
96 1 // IRQDisable();
97 1 // IRQEnable();
98 1 // IRQDisable1();
99 1 IRQEnable1();
100 1
101 1 get_input(); /* has to be called before starting the timer to get volume l
-evel */
102 1
103 1 init_serial(); /* Initialize Serial Interface to 115200 baud */
104 1 init_timer ();
105 1
106 1 printf ("\nMCB2130 WAVE AUDIO PLAYER\n\n");
107 1
108 1 while (1) { /* Loop forever */
109 2 if (print_info)
110 2 {
111 3 alignidx = p_wav_hdr->sample_size;
112 3 if (alignidx > 4) alignidx = 0;
113 3 print_info = 0;
114 3 printf ("Playing Block %01d\n", blockindex);
115 3 printf ("File information:\n");
116 3 printf ("=================\n");
117 3 printf ("File Size: : %d\n", p_wav_hdr->length);
118 3 printf ("Format identifier : %01d\n", p_wav_hdr->format);
119 3 printf ("Number of Channels: %01d\n", p_wav_hdr->channels);
120 3 printf ("Sampling Rate : %05d Hz\n", p_wav_hdr->sample_rate);
121 3 printf ("Bytes per Second : %05d\n", p_wav_hdr->bytes_per_second);
122 3 printf ("Sample Alignment : %s\n", alignment[alignidx]);
123 3 printf ("Sample resolution : %02d\n\n", p_wav_hdr->precision);
ARM COMPILER V2.50a, Main 23/09/08 18:04:45 PAGE 3
124 3 }
125 2 get_input();
126 2 }
127 1 }
128
ARM COMPILER V2.50a, Main 23/09/08 18:04:45 PAGE 4
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** EXTERNALS:
EXTERN CODE32 (printf?A)
EXTERN CODE32 (getkey?A)
EXTERN DATA (mode)
EXTERN CODE32 (init_serial?A)
EXTERN CODE32 (init_timer?A)
EXTERN DATA (print_info)
EXTERN DATA (p_wav_hdr)
EXTERN DATA (blockindex)
EXTERN NUMBER (__startup)
*** PUBLICS:
PUBLIC IRQDisable1?A
PUBLIC IRQEnable1?A
PUBLIC get_input?A
PUBLIC main
PUBLIC volume
PUBLIC test
*** DATA SEGMENT '?CON?Main':
00000000 ??S_15:
00000000 DB 'Sample resolution : %02d',0x0A,0x0A,0x00
0000001B ??S_14:
0000001B DB 'Sample Alignment : %s',0x0A,0x00
00000033 ??S_13:
00000033 DB 'Bytes per Second : %05d',0x0A,0x00
0000004D ??S_12:
0000004D DB 'Sampling Rate : %05d Hz',0x0A,0x00
0000006A ??S_11:
0000006A DB 'Number of Channels: %01d',0x0A,0x00
00000084 ??S_10:
00000084 DB 'Format identifier : %01d',0x0A,0x00
0000009E ??S_9:
0000009E DB 'File Size: : %d',0x0A,0x00
000000B6 ??S_8:
000000B6 DB '=================',0x0A,0x00
000000C9 ??S_7:
000000C9 DB 'File information:',0x0A,0x00
000000DC ??S_6:
000000DC DB 'Playing Block %01d',0x0A,0x00
000000F0 ??S_5:
000000F0 DB 0x0A,'MCB2130 WAVE AUDIO PLAYER',0x0A,0x0A
0000010C DB 0x00
0000010D alignment:
0000010D BEGIN_INIT
0000010D DB 'ERR',0x00
00000111 SPACE 1
00000112 DB 'BYTE',0x00
00000117 DB 'WORD',0x00
0000011C DB 'ERR',0x00
00000120 SPACE 1
00000121 DB 'DWORD'
00000126 END_INIT
*** DATA SEGMENT '?DT0?Main':
00000000 volume:
00000000 DS 4
00000004 test:
00000004 DS 1
*** CODE SEGMENT '?PR?IRQDisable1?A?Main':
40: MRS R0, SPSR
00000000 E14F0000 MRS R0,SPSR
41: ORR R0, R0, #0x80
ARM COMPILER V2.50a, Main 23/09/08 18:04:45 PAGE 5
00000004 E3800080 ORR R0,R0,#0x0080
42: MSR SPSR_c, R0
00000008 E161F000 MSR SPSR_c,R0
46: test++;
0000000C E5100000 LDR R0,=test ; test
00000010 E5D01000 LDRB R1,[R0,#0x0] ; test
00000014 E2811001 ADD R1,R1,#0x0001
00000018 E5C01000 STRB R1,[R0,#0x0] ; test
47: }
0000001C E12FFF1E BX R14
00000020 ENDP ; 'IRQDisable1?A'
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -