?? spi.lst
字號:
C51 COMPILER V7.50 SPI 02/05/2007 16:33:26 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE SPI
OBJECT MODULE PLACED IN .\OBJ\SPI.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE SPI.C ROM(COMPACT) OPTIMIZE(9,SPEED) NOAREGS DEFINE(PROJECT=DMO04015800,MCU
-_CFG=BIT5101,VP_IF_CFG=VP_IF_BITEK) PRINT(.\LST\SPI.lst) OBJECT(.\OBJ\SPI.obj)
line level source
1 /* **********************************************************************
2
3 Copyright (c) 2002-2006 Beyond Innovation Technology Co., Ltd
4
5 All rights are reserved. Reproduction in whole or in parts is
6 prohibited without the prior written consent of the copyright owner.
7 ----------------------------------------------------------------------
8
9 Module: SPI.C
10
11 Purpose: Implementation of SPI module.
12
13 Version: 0.01 02:23PM 2005/08/22
14
15 Compiler: Keil 8051 C Compiler v8.01
16
17 Reference:
18
19 ----------------------------------------------------------------------
20 Modification:
21
22 R0.01 02:23PM 2005/08/22 Jeffrey Chang
23 Reason:
24 1. Original.
25 Solution:
26
27 ********************************************************************** */
28
29 #define _SPI_C_
30
31
32 /* ------------------------------------
33 Header Files
34 ------------------------------------ */
35 #include <intrins.h>
36
37 #include "common.h"
38 #include "spi.h"
39
40 /* ------------------------------------
41 Macro Definitions
42 ------------------------------------ */
43
44 #define NOP_24 { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_()
-; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _
-nop_();}
45 #define NOP_20 { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_()
-; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); }
46 #define NOP_18 { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_()
-; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); }
47 #define NOP_15 { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_()
-; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); }
48 #define NOP_12 { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_()
-; _nop_(); _nop_(); }
C51 COMPILER V7.50 SPI 02/05/2007 16:33:26 PAGE 2
49 #define NOP_10 { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_()
-; }
50 #define NOP_3 { _nop_(); _nop_(); _nop_(); }
51 #define NOP_2 { _nop_(); _nop_(); }
52 #define NOP_1 { _nop_(); }
53 #define NOP_0 { }
54
55 /*
56 1) 12-clock mode
57 12 / 14.318MHz = 838 ns !
58
59 2) 6-clock mode
60 6 / 14.318MHz = 419 ns !
61 */
62
63 #define SPI_T_S0 NOP_1 /* Min. 150 ns */
64 #define SPI_T_H0 NOP_1 /* Min. 150 ns */
65 #define SPI_T_S1 NOP_1 /* Min. 150 ns */
66 #define SPI_T_H1 NOP_1 /* Min. 150 ns */
67 #define SPI_T_W1L NOP_1 /* Min. 210 ns */
68 #define SPI_T_W1H NOP_1 /* Min. 210 ns */
69 #define SPI_T_W2 NOP_1 /* Min. 1 us */
70
71 #define SPI_REG_MASK 0x20
72 #define SPI_DATA_MASK 0x80
73
74
75 #define SPI_SET_SDA(HiLo) { SPI_MOSI = (HiLo) ? HIGH : LOW; }
76 #define SPI_SET_SCL(HiLo) { SPI_SPICLK = (HiLo) ? HIGH : LOW; }
77 #define SPI_SET_CS(HiLo) { SPI_SS = (HiLo) ? HIGH : LOW; }
78
79
80 /* ------------------------------------
81 Type Definitions
82 ------------------------------------ */
83
84
85 /* ------------------------------------
86 Variables Definitions
87 ------------------------------------ */
88 sbit SPI_MOSI = P1 ^ 4; /* Master Out Slave In (SDA) */
89 sbit SPI_SPICLK = P1 ^ 3; /* SPI clock (SCL) */
90 sbit SPI_SS = P1 ^ 2; /* Slave Select (CS) */
91
92
93 /* ------------------------------------
94 Function Prototypes
95 ------------------------------------ */
96
97
98 /* -------------------------------------------------------------------
99 Name: SPI_Init -
100 Purpose: .
101 Passed: None.
102 Returns: None.
103 Notes:
104 ------------------------------------------------------------------- */
105 void SPI_Init (void)
106 {
107 1 SPI_SET_CS(HIGH);
108 1 SPI_SET_SDA(LOW);
109 1 SPI_SET_SCL(LOW);
C51 COMPILER V7.50 SPI 02/05/2007 16:33:26 PAGE 3
110 1
111 1 #ifdef NOT_JUNK
SPI_TxByte(0x00, 0x03);
SPI_TxByte(0x01, 0x18);
SPI_TxByte(0x03, 0x40);
SPI_TxByte(0x04, 0x0B);
SPI_TxByte(0x05, 0x76);
SPI_TxByte(0x06, 0x15);
SPI_TxByte(0x07, 0x1E);
SPI_TxByte(0x08, 0x00);
SPI_TxByte(0x0C, 0x26);
SPI_TxByte(0x0D, 0x40);
SPI_TxByte(0x0E, 0x40);
SPI_TxByte(0x0F, 0x40);
SPI_TxByte(0x10, 0x40);
SPI_TxByte(0x11, 0x40);
SPI_TxByte(0x12, 0x88);
SPI_TxByte(0x13, 0x88);
#endif
131 1 } /* SPI_Init */
132
133
134 /* -------------------------------------------------------------------
135 Name: SPI_PowerOff -
136 Purpose: .
137 Passed: None.
138 Returns: None.
139 Notes:
140 ------------------------------------------------------------------- */
141 void SPI_PowerOff (void)
142 {
143 1 SPI_TxByte(0x05, 0x5E);
144 1 } /* SPI_PowerOff */
145
146
147 /* -------------------------------------------------------------------
148 Name: SPI_PowerOn -
149 Purpose: .
150 Passed: None.
151 Returns: None.
152 Notes:
153 ------------------------------------------------------------------- */
154 void SPI_PowerOn (void)
155 {
156 1 SPI_TxByte(0x02, 0x42);
157 1 } /* SPI_PowerOn */
158
159
160 /* -------------------------------------------------------------------
161 Name: SPI_TxByte -
162 Purpose: To transmit a 16-bit command to SPI slave device.
163 Passed:
164 Returns: None.
165 Notes:
166 ------------------------------------------------------------------- */
167 void SPI_TxByte (
168 UB8 bReg,
169 UB8 bData
170 )
171 {
C51 COMPILER V7.50 SPI 02/05/2007 16:33:26 PAGE 4
172 1 UB8 bMask;
173 1
174 1
175 1 SPI_SET_CS(LOW);
176 1
177 1 for (bMask = SPI_REG_MASK; bMask; bMask >>= 1)
178 1 {
179 2 SPI_SET_SDA(bReg & bMask);
180 2
181 2 // SDA is loaded one bit a time at the rising edge of SCL
182 2 SPI_SET_SCL(HIGH);
183 2 SPI_T_H1;
184 2 SPI_SET_SCL(LOW);
185 2 }
186 1
187 1 SPI_SET_SDA(LOW);
188 1
189 1 SPI_SET_SCL(HIGH);
190 1 SPI_T_H1;
191 1 SPI_SET_SCL(LOW);
192 1 SPI_T_H1;
193 1
194 1 SPI_SET_SDA(HIGH);
195 1
196 1 SPI_SET_SCL(HIGH);
197 1 SPI_T_H1;
198 1 SPI_SET_SCL(LOW);
199 1 SPI_T_H1;
200 1
201 1 for (bMask = SPI_DATA_MASK; bMask; bMask >>= 1)
202 1 {
203 2 SPI_SET_SDA(bData & bMask);
204 2
205 2 // SDA is loaded one bit a time at the rising edge of SCL
206 2 SPI_SET_SCL(HIGH);
207 2 SPI_T_H1;
208 2 SPI_SET_SCL(LOW);
209 2 }
210 1
211 1 SPI_T_H0;
212 1 SPI_SET_CS(HIGH);
213 1 SPI_SET_SDA(LOW);
214 1
215 1 } /* SPI_TxByte */
216
217
218
219 /* -------------------------------------------------------------------
220 Name: -
221 Purpose: .
222 Passed: None.
223 Returns: None.
224 Notes:
225 ------------------------------------------------------------------- */
226
227
228 /* **********************************************************************
229
230 Description:
231
232
233 ********************************************************************** */
C51 COMPILER V7.50 SPI 02/05/2007 16:33:26 PAGE 5
234
235 /* %% End Of File %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */
236
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 95 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -