?? spi.lst
字號:
ARM COMPILER V2.53, spi 23/07/06 16:59:03 PAGE 1
ARM COMPILER V2.53, COMPILATION OF MODULE spi
OBJECT MODULE PLACED IN spi.obj
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe driver\spi.c THUMB WARNINGLEVEL(3) OPTIMIZE(8,SPEED) DEBUG PRINT(.\SPI.LST)
-TABS(4) OBJECT(spi.obj)
stmt level source
1 /*------------------------------------------------------
2 FILE NAME : spi.c
3 DESCRIPTION : lpc2132 spi driver
4 VERSION : 0.0.0 (C)aureole
5 AUTHOR : Aureole
6 CREATE DATE : 4.1.2006
7 MODIFY DATE : ---
8 LOGS :-\
9 1. First create for hardware test. 4.1.2006
10
11
12 --------------------------------------------------------*/
13
14 //-------------Include Files----------------------------//
15 #include "..\include\spi.h"
16 #include "..\include\config.h"
17 #include "..\include\common.h"
18
19 //-------------Function area--------------------------//
20 /*---------------------------------------------------------------
21 NAME : initialize_master_spi
22 ENTRY TYPE: void
23 RETURN TYPE: void
24 PURPOSE : ---
25 VERSION : 0.1
26 DESCRIPTION:
27 CREATE DATE: 4.1.2006
28 LOGS : 1.first create;
29 -----------------------------------------------------------------*/
30 void initialize_master_spi(void)
31 {
32 1
33 1 PINSEL0|=0x00005500; //Set PIN Connect SPI Function;
34 1
35 1 S0SPCCR=0X8; //Set SPI Clock;SPCCR bit0 MUST BE SET 0,AND SPCCR MUST >=8;
36 1
37 1 S0SPCR=(0<<3)| // CPHA = 0, 數據在SCK 的第一個時鐘沿采樣
38 1 (0<<4)| // CPOL = 1, SCK 為低有效,CPOL = 0, SCK 為高有效
39 1 (1<<5)| // MSTR = 1, SPI 處于主模式
40 1 (0<<6)| // LSBF = 0, SPI 數據傳輸MSB (位7)在先
41 1 (0<<7); // SPIE = 0, SPI 中斷被禁止
42 1
43 1
44 1 }
45
46
47 /*---------------------------------------------------------------
48 NAME : send_data_to_spi
49 ENTRY TYPE: unsigned char
50 RETURN TYPE: unsigned char
51 PURPOSE : ---
52 VERSION : 0.1
53 DESCRIPTION:
54 CREATE DATE: 4.1.2006
55 LOGS : 1.first create;
56 -----------------------------------------------------------------*/
57 unsigned char send_data_to_spi(unsigned char dat)
58 {
ARM COMPILER V2.53, spi 23/07/06 16:59:03 PAGE 2
59 1 S0SPDR=dat;
60 1 while(!(S0SPSR&0x80)); // 等待SPIF置位,即等待數據發送完;
61 1 return(S0SPDR);
62 1 }
ARM COMPILER V2.53, spi 23/07/06 16:59:03 PAGE 3
ASSEMBLY LISTING OF GENERATED OBJECT CODE
*** PUBLICS:
PUBLIC initialize_master_spi?T
PUBLIC send_data_to_spi?T
*** CODE SEGMENT '?PR?initialize_master_spi?T?spi':
33: PINSEL0|=0x00005500; //Set PIN Connect SPI Function;
00000000 4800 LDR R2,=0x5500
00000002 4800 LDR R0,=0xE002C000
00000004 6801 LDR R1,[R0,#0x0]
00000006 4311 ORR R1,R2
00000008 6001 STR R1,[R0,#0x0]
35: S0SPCCR=0X8; //Set SPI Clock;SPCCR bit0 MUST BE SET 0,AND SPCCR MUST >=8;
0000000A 2108 MOV R1,#0x8
0000000C 4800 LDR R0,=0xE002000C
0000000E 7001 STRB R1,[R0,#0x0]
37: S0SPCR=(0<<3)| // CPHA = 0, 數據在SCK 的第一個時鐘沿采樣
00000010 2120 MOV R1,#0x20
00000012 4800 LDR R0,=0xE0020000
00000014 8001 STRH R1,[R0,#0x0]
44: }
00000016 4770 BX R14
00000018 ENDP ; 'initialize_master_spi?T'
*** CODE SEGMENT '?PR?send_data_to_spi?T?spi':
57: unsigned char send_data_to_spi(unsigned char dat)
00000000 1C01 MOV R1,R0 ; dat
00000002 ---- Variable 'dat' assigned to Register 'R1' ----
59: S0SPDR=dat;
00000002 1C08 MOV R0,R1 ; dat
00000004 0601 LSL R1,R0,#0x18 ; dat
00000006 0E09 LSR R1,R1,#0x18
00000008 4800 LDR R0,=0xE0020008
0000000A 8001 STRH R1,[R0,#0x0]
60: while(!(S0SPSR&0x80)); // 等待SPIF置位,即等待數據發送完;
0000000C L_1:
0000000C 4800 LDR R0,=0xE0020004
0000000E 7800 LDRB R0,[R0,#0x0]
00000010 2180 MOV R1,#0x80
00000012 4208 TST R0,R1
00000014 D0FA BEQ L_1 ; T=0x0000000C
61: return(S0SPDR);
00000016 4800 LDR R0,=0xE0020008
00000018 8800 LDRH R0,[R0,#0x0]
62: }
0000001A 4770 BX R14
0000001C ENDP ; 'send_data_to_spi?T'
Module Information Static
----------------------------------
code size = ------
data size = ------
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 + -