📄 slave1.lst
字号:
ARM COMPILER V2.40c, slave1 07/12/05 12:16:24 PAGE 1
ARM COMPILER V2.40c, COMPILATION OF MODULE slave1
OBJECT MODULE PLACED IN slave1.OBJ
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe slave1.c ARM OPTIMIZE(SIZE) DEBUG TABS(4)
stmt level source
1 /*********************************************************************
2
3 Author : ADI - Apps www.analog.com/MicroConverter
4
5 Date : Sept. 2005
6
7 File : slave1.c
8
9 Hardware : Applicable to ADuC702x rev H or I silicon
10 Currently targetting ADuC7026.
11
12 Description : SPI slave is to use with master.c or master1.c
13 the slaves receives values from the master and
14 keeps transmitting '0' as it is the default value at reset.
15
16 *********************************************************************/
17
18
19
20 #include<ADuC7026.h>
21 void IRQ_Handler(void) __irq; // IRQ Funtion Prototype
22 char i;
23 char received_data[30];
24
25
26 int main(void) {
27 1
28 1 GP4DAT = 0x04000000; // P4.2 configured as an output. LED is turned on
29 1 IRQEN = SPI_SLAVE_BIT;
30 1
31 1 GP1CON = 0x22220000; // configure SPI on SPM
32 1 SPICON = 0x1409; // enable SPI slave mode
33 1
34 1 while (1) {
35 2
36 2 }
37 1 }
38
39
40 /********************************************************************/
41 /* */
42 /* Interrupt Service Rountine */
43 /* */
44 /********************************************************************/
45
46 void IRQ_Handler() __irq {
47 1 GP4DAT ^= 0x00040000; // Complement P4.2
48 1 if ((IRQSTA & SPI_SLAVE_BIT) != 0) {
49 2 received_data[i] = SPIRX;
50 2 i++;
51 2 SPITX = i;
52 2 if (i==30) i=0;
53 2 }
54 1 return ;
55 1 }
56
ARM COMPILER V2.40c, slave1 07/12/05 12:16:24 PAGE 2
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** EXTERNALS:
EXTERN NUMBER (__startup)
*** PUBLICS:
PUBLIC IRQ_Handler?A
PUBLIC main
PUBLIC i
PUBLIC received_data
*** DATA SEGMENT '?DT0?slave1':
00000000 i:
00000000 DS 1
00000001 received_data:
00000001 DS 30
*** CODE SEGMENT '?PR?main?slave1':
26: int main(void) {
00000000 E92D4000 STMDB R13!,{LR}
28: GP4DAT = 0x04000000; // P4.2 configured as an output. LED is turned on
00000004 E3A01301 MOV R1,#0x4000000
00000008 E5100000 LDR R0,=0xFFFFF460
0000000C E5801000 STR R1,[R0,#0x0]
29: IRQEN = SPI_SLAVE_BIT;
00000010 E3A01A01 MOV R1,#0x1000
00000014 E5100000 LDR R0,=0xFFFF0008
00000018 E5801000 STR R1,[R0,#0x0]
31: GP1CON = 0x22220000; // configure SPI on SPM
0000001C E5101000 LDR R1,=0x22220000
00000020 E5100000 LDR R0,=0xFFFFF404
00000024 E5801000 STR R1,[R0,#0x0]
32: SPICON = 0x1409; // enable SPI slave mode
00000028 E5101000 LDR R1,=0x1409
0000002C E5100000 LDR R0,=0xFFFF0A10
00000030 E5801000 STR R1,[R0,#0x0]
36: }
00000034 L_1:
00000034 EAFFFFFE B L_1 ; Targ=0x34
37: }
00000038 E8BD0008 LDMIA R13!,{R3}
0000003C E12FFF13 BX R3
00000040 ENDP ; 'main'
*** CODE SEGMENT '?PR?IRQ_Handler?A?slave1':
46: void IRQ_Handler() __irq {
00000000 E92D000F STMDB R13!,{R0-R3}
47: GP4DAT ^= 0x00040000; // Complement P4.2
00000004 E5100000 LDR R0,=0xFFFFF460
00000008 E5901000 LDR R1,[R0,#0x0]
0000000C E2211701 EOR R1,R1,#0x40000
00000010 E5801000 STR R1,[R0,#0x0]
48: if ((IRQSTA & SPI_SLAVE_BIT) != 0) {
00000014 E5100000 LDR R0,=0xFFFF0000
00000018 E5900000 LDR R0,[R0,#0x0]
0000001C E3100A01 TST R0,#0x1000
00000020 0A000015 BEQ L_5 ; Targ=0x7C
49: received_data[i] = SPIRX;
00000024 E5100000 LDR R0,=0xFFFF0A04
00000028 E5900000 LDR R0,[R0,#0x0]
0000002C E1A00C00 MOV R0,R0,LSL #24
00000030 E1A00C20 MOV R0,R0,LSR #24
00000034 E5101000 LDR R1,=i ; i
00000038 E5D11000 LDRB R1,[R1,#0x0] ; i
0000003C E1A03001 MOV R3,R1
00000040 E5102000 LDR R2,=received_data ; received_data
ARM COMPILER V2.40c, slave1 07/12/05 12:16:24 PAGE 3
00000044 E7C20003 STRB R0,[R2,+R3]
50: i++;
00000048 E5100000 LDR R0,=i ; i
0000004C E2811001 ADD R1,R1,#0x0001
00000050 E5C01000 STRB R1,[R0,#0x0] ; i
51: SPITX = i;
00000054 E5100000 LDR R0,=i ; i
00000058 E5D00000 LDRB R0,[R0,#0x0] ; i
0000005C E1A02000 MOV R2,R0
00000060 E5101000 LDR R1,=0xFFFF0A08
00000064 E5812000 STR R2,[R1,#0x0]
52: if (i==30) i=0;
00000068 E350001E CMP R0,#0x001E
0000006C 1A000002 BNE L_5 ; Targ=0x7C
00000070 E3A01000 MOV R1,#0x0
00000074 E5100000 LDR R0,=i ; i
00000078 E5C01000 STRB R1,[R0,#0x0] ; i
53: }
0000007C L_5:
55: }
0000007C E8BD000F LDMIA R13!,{R0-R3}
00000080 E25EF004 SUBS R15,R14,#0x0004
00000084 ENDP ; 'IRQ_Handler?A'
Module Information Static
----------------------------------
code size = ------
data size = 31
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 + -