?? main.lst
字號(hào):
ARM COMPILER V2.51a, main 02/11/06 17:49:22 PAGE 1
ARM COMPILER V2.51a, COMPILATION OF MODULE main
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe main.c ARM BROWSE DEBUG TABS(4)
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 /* HELLO.C: Hello World Example */
7 /* */
8 /******************************************************************************/
9
10 #include <stdio.h> /* I/O Functions */
11 #include <LPC21XX.H> /* LPC22XX Peripheral Registers */
12
13 unsigned int Send_byte (unsigned Data);
14 void wait(void);
15 unsigned int read_byte (void);
16
17 #define CS_HIGH IOSET0 = 0x1000
18 #define CS_LOW IOCLR0 = 0x1000
19
20 unsigned int result= 0;
21 unsigned int result2 = 0;
22
23 int main (void)
24 {
25 1
26 1 PINSEL0 |= 0x5500; //Select SPI pins and enable SSEL0
27 1
28 1 CS_HIGH;
29 1 IODIR0 = 0x1000; //Configure GPIO pin to control the CS on the SPI eeprom
30 1 //Set the pin High
31 1 //VPBDIV = 0x01; //Set the Clock VBP clock to 60 Mhz // 0x04
32 1
33 1 S0SPCCR = 0x32; //Set SPI bit rate at 300Khz //0xC8
34 1 S0SPCR = 0x00000020; //set control register
35 1
36 1 wait();
37 1
38 1 CS_LOW;
39 1 result = Send_byte(0x55);
40 1
41 1 result = Send_byte(0x05);
42 1
43 1 while(1) {
44 2
45 2 result = Send_byte(0xAA);
46 2 //result = Send_byte(0xAA);
48 2 //result = Send_byte(0xAA);
49 2 //result = Send_byte(0xAA);
50 2 //result = Send_byte(0xAA);
51 2
52 2 }
53 1
54 1
55 1 CS_HIGH;
56 1
57 1 while(1) { }
58 1 }
59
ARM COMPILER V2.51a, main 02/11/06 17:49:22 PAGE 2
60 unsigned int Send_byte (unsigned Data)
61 {
62 1 unsigned int result;
63 1 result = S0SPSR;
64 1 S0SPDR = Data;
65 1 while (!(S0SPSR & 0x80)) ;
66 1 /*while(S0SPSR == 0)
67 1 {
68 1 ;
69 1 }
70 1 */
71 1 return S0SPSR;
72 1 }
73
74 unsigned int read_byte (void)
75 {
76 1
77 1 while(S0SPSR == 0)
78 1 {
79 2 ;
80 2 }
81 1
82 1 return S0SPDR;
83 1 }
84
85 void wait(void)
86 {
87 1 unsigned delay;
88 1 for(delay = 0;delay<0x10000;delay++) //a bit of setteling time
89 1 {
90 2 ;
91 2 }
92 1 }
93
ARM COMPILER V2.51a, main 02/11/06 17:49:22 PAGE 3
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** EXTERNALS:
EXTERN NUMBER (__startup)
*** PUBLICS:
PUBLIC Send_byte?A
PUBLIC wait?A
PUBLIC read_byte?A
PUBLIC main
PUBLIC result
PUBLIC result2
*** DATA SEGMENT '?DT0?main':
00000000 result:
00000000 BEGIN_INIT
00000000 00000000 DD 0x0
00000004 END_INIT
00000004 result2:
00000004 BEGIN_INIT
00000004 00000000 DD 0x0
00000008 END_INIT
*** CODE SEGMENT '?PR?main?main':
23: int main (void)
00000000 E92D4000 STMDB R13!,{LR}
26: PINSEL0 |= 0x5500; //Select SPI pins and enable SSEL0
00000004 E5100000 LDR R0,=0xE002C000
00000008 E5901000 LDR R1,[R0,#0x0]
0000000C E3811C55 ORR R1,R1,#0x5500
00000010 E5801000 STR R1,[R0,#0x0]
28: CS_HIGH;
00000014 E3A04A01 MOV R4,#0x1000
00000018 E5100000 LDR R0,=0xE0028004
29: IODIR0 = 0x1000; //Configure GPIO pin to control the CS on the SPI eeprom
00000020 E5100000 LDR R0,=0xE0028008
00000024 E5804000 STR R4,[R0,#0x0]
33: S0SPCCR = 0x32; //Set SPI bit rate at 300Khz //0xC8
00000028 E3A01032 MOV R1,#0x32
0000002C E5100000 LDR R0,=0xE002000C
00000030 E5C01000 STRB R1,[R0,#0x0]
34: S0SPCR = 0x00000020; //set control register
00000034 E3A01020 MOV R1,#0x20
00000038 E5100000 LDR R0,=0xE0020000
0000003C E5C01000 STRB R1,[R0,#0x0]
36: wait();
00000040 EBFFFFEE BL wait?A ; Targ=0x0
38: CS_LOW;
00000044 E5100000 LDR R0,=0xE002800C
00000048 E5804000 STR R4,[R0,#0x0]
39: result = Send_byte(0x55);
0000004C E3A00055 MOV R0,#0x55
00000050 EBFFFFEA BL Send_byte?A ; Targ=0x0
00000054 E5101000 LDR R1,=result ; result
00000058 E5810000 STR R0,[R1,#0x0] ; result
41: result = Send_byte(0x05);
0000005C E3A00005 MOV R0,#0x5
00000060 EBFFFFE6 BL Send_byte?A ; Targ=0x0
00000064 E5101000 LDR R1,=result ; result
00000068 E5810000 STR R0,[R1,#0x0] ; result
43: while(1) {
0000006C L_3:
45: result = Send_byte(0xAA);
0000006C E3A000AA MOV R0,#0xAA
ARM COMPILER V2.51a, main 02/11/06 17:49:22 PAGE 4
00000070 EBFFFFE2 BL Send_byte?A ; Targ=0x0
00000074 E5101000 LDR R1,=result ; result
00000078 E5810000 STR R0,[R1,#0x0] ; result
52: }
0000007C EAFFFFFA B L_3 ; Targ=0x6C
58: }
00000080 E8BD0008 LDMIA R13!,{R3}
00000084 E12FFF13 BX R3
00000088 ENDP ; 'main'
*** CODE SEGMENT '?PR?Send_byte?A?main':
60: unsigned int Send_byte (unsigned Data)
00000000 ---- Variable 'Data' assigned to Register 'R0' ----
61: {
00000000 ; SCOPE-START
63: result = S0SPSR;
00000000 E5101000 LDR R1,=0xE0020004
00000004 E5D11000 LDRB R1,[R1,#0x0]
64: S0SPDR = Data;
00000008 E1A01000 MOV R1,R0 ; Data
0000000C E1A01C01 MOV R1,R1,LSL #24 ; Data
00000010 E1A01C21 MOV R1,R1,LSR #24
00000014 E5100000 LDR R0,=0xE0020008
00000018 E5C01000 STRB R1,[R0,#0x0]
65: while (!(S0SPSR & 0x80)) ;
0000001C L_9:
0000001C E5100000 LDR R0,=0xE0020004
00000020 E5D00000 LDRB R0,[R0,#0x0]
00000024 E3100080 TST R0,#0x0080
00000028 0AFFFFFB BEQ L_9 ; Targ=0x1C
71: return S0SPSR;
0000002C E5100000 LDR R0,=0xE0020004
00000030 E5D00000 LDRB R0,[R0,#0x0]
00000034 ; SCOPE-END
72: }
00000034 E12FFF1E BX R14
00000038 ENDP ; 'Send_byte?A'
*** CODE SEGMENT '?PR?read_byte?A?main':
80: }
00000000 L_14:
00000000 E5100000 LDR R0,=0xE0020004
00000004 E5D00000 LDRB R0,[R0,#0x0]
00000008 E3500000 CMP R0,#0x0000
0000000C 0AFFFFFB BEQ L_14 ; Targ=0x0
82: return S0SPDR;
00000010 E5100000 LDR R0,=0xE0020008
00000014 E5D00000 LDRB R0,[R0,#0x0]
83: }
00000018 E12FFF1E BX R14
0000001C ENDP ; 'read_byte?A'
*** CODE SEGMENT '?PR?wait?A?main':
86: {
00000000 ; SCOPE-START
88: for(delay = 0;delay<0x10000;delay++) //a bit of setteling time
00000000 E3A00000 MOV R0,#0x0
00000004 ---- Variable 'delay' assigned to Register 'R0' ----
91: }
00000004 L_19:
00000004 E2800001 ADD R0,R0,#0x0001 ; delay
00000008 E1A01000 MOV R1,R0 ; delay
0000000C E3510801 CMP R1,#0x10000 ; delay
00000010 3AFFFFFB BCC L_19 ; Targ=0x4
00000014 ; SCOPE-END
92: }
00000014 E12FFF1E BX R14
00000018 ENDP ; 'wait?A'
ARM COMPILER V2.51a, main 02/11/06 17:49:22 PAGE 5
Module Information Static
----------------------------------
code size = ------
data size = 8
const size = ------
End of Module Information.
ARM COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -