📄 temp.lst
字号:
C51 COMPILER V7.50 TEMP 04/15/2006 16:14:46 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE TEMP
OBJECT MODULE PLACED IN temp.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE temp.c LARGE OPTIMIZE(5,SPEED) BROWSE DEBUG OBJECTEXTEND
line level source
1
2 #include "config.h"
3
4 typedef unsigned char BYTE; //无符号字符型(或者字节型)
5 typedef char SBYTE; //有符号字节型(或者字节型)
6 typedef unsigned int WORD; //无符号整型(或者字型)
7 typedef int SWORD; //有无符号整型(或者字型)
8 typedef unsigned long DWORDS; //无符号长整型(或者双字型)
9 typedef long SDWORD; //有符号长整型(或者双字型)
10 typedef float FSDWORD; //浮点型
11 typedef double DSDWORD; //双精度浮点型
12
13
14 extern PSD_REGS uPSD32;
15
16 #define CS1 uPSD32.DATAOUT_A |= 0x40;
17 #define CS0 uPSD32.DATAOUT_A &= 0xBF;
18
19
20 //void SPI_SendChar(INT8U ch)
21 void vSendByte(INT8U ch)
22 {
23 1 INT8U data i=8;
24 1
25 1 while(i--)
26 1 {
27 2 SCK = 0;
28 2 if((ch & 0x80) == 0x80) SI = 1;
29 2 else SI = 0;
30 2 SCK = 1;
31 2 ch <<= 1;
32 2 }
33 1 }
34 /********************************************************************************************
35 **函数名: bGetByte
36 **功能简介: 从X25645(SPI EEPROM)得到一字节数据
37 **参数说明: bTemp-得到的数据返回
38 **调用函数: 无
39 **全局变量: 无
40 **函数返回: 无
41 **最后修改时间:2003-07-21
42 **********************************************************************************************/
43 /*BYTE bGetByte(void)
44 {
45 BYTE bI=8,bTemp=0;
46
47 while(bI--)
48 {
49 bTemp <<= 1;
50 SCK = 1;
51 SCK = 0;
52 //ch=|SO;
53 if(SO == 1)bTemp |= 0x01;
54 if(SO == 0)bTemp &= 0xfe;
55 }
C51 COMPILER V7.50 TEMP 04/15/2006 16:14:46 PAGE 2
56
57 SCK = 1;//new add-2003-09-02
58
59 return(bTemp);
60 } */
61
62 //INT8U SPI_ReadChar(void)
63 BYTE bGetByte(void)
64 {
65 1 INT8U data i=8, ch=0;
66 1
67 1 while(i--)
68 1 {
69 2 ch <<= 1;
70 2 SCK = 1;
71 2 SCK = 0;
72 2
73 2 if(SO == 1) ch |= 0x01;
74 2 else ch &= 0xFE;
75 2 }
76 1 SCK = 1;
77 1
78 1 return ch;
79 1 }
80
81
82
83 /********************************************************************************************
84 **函数名: bReadStatus
85 **功能简介: 为检查忙标志,读X25645(SPI EEPROM)的状态寄存器
86 **参数说明: 无
87 **调用函数: vSendByte,bGetByte
88 **全局变量: 无
89 **函数返回: bTemp-读出的状态字节
90 **最后修改时间:2003-07-21
91 **********************************************************************************************/
92 /*
93 BYTE bReadStatus(void)
94 {
95 BYTE bTemp;
96 WORD wTemp;
97 DWORDS dwI=0;
98
99 //CS = 0;
100 CS0;
101 vSendByte(RDSR_INST);
102 wTemp = 0xffff;
103 ////wTemp = 0xa0;
104
105 do
106 {
107 bTemp = bGetByte();
108 }while((bTemp & 0x01) == 0x01);
109 //CS = 1;
110 CS1;
111 return(bTemp);
112 } */
113
114 //INT8U SPI_ReadStatus(void)
115 BYTE bReadStatus(void)
116 {
117 1 INT8U data ch;
C51 COMPILER V7.50 TEMP 04/15/2006 16:14:46 PAGE 3
118 1
119 1 CS0;
120 1 // SPI_SendChar(RDSR_INST);
121 1 vSendByte(RDSR_INST);
122 1 JREAD_STATUS0:
123 1 // ch = SPI_ReadChar();
124 1 ch = bGetByte();
125 1 if((ch & 0x01) == 1) goto JREAD_STATUS0;
126 1 CS1;
127 1
128 1 return ch;
129 1 }
130
131 /********************************************************************************************
132 **函数名: vProgramStatus
133 **功能简介: 编程X25645(SPI EEPROM)的状态寄存器
134 **参数说明: bCh-需编程的数据
135 **调用函数: vSendByte
136 **全局变量:
137 *函数返回: 无
138 **最后修改时间:2003-07-21
139 **********************************************************************************************/
140 void vProgramStatus(BYTE bCh)
141 {
142 1 //CS = 0;
143 1 CS0;
144 1 vSendByte(PRSR_INST);
145 1 vSendByte(bCh);
146 1 //CS = 1;
147 1 CS1;
148 1 }
149
150
151
152
153 /********************************************************************************************
154 **函数名: bReadByte
155 **功能简介: 读X25645(SPI EEPROM)某地址的单字节数据
156 **参数说明: wAddr-需要读的地址
157 **调用函数: vSendByte,bGetByte
158 **全局变量: 无?
159 **函数返回: bTemp-读出的该地址的单字节数据 .
160 **最后修改时间:2003-07-21
161 **********************************************************************************************/
162 BYTE bReadByte(WORD wAddr)
163 {
164 1 BYTE bTemp,bAddrh,bAddrl;
165 1
166 1 bAddrl = (BYTE)wAddr;
167 1 wAddr >>= 8;
168 1 bAddrh = (BYTE)wAddr;
169 1 //CS = 0;
170 1 CS0;
171 1 vSendByte(READ_INST);
172 1 vSendByte(0x00);
173 1 vSendByte(bAddrh);
174 1 vSendByte(bAddrl);
175 1 bTemp = bGetByte();
176 1 //CS = 1;
177 1 CS1;
178 1 return(bTemp);
179 1 }
C51 COMPILER V7.50 TEMP 04/15/2006 16:14:46 PAGE 4
180 /********************************************************************************************
181 **函数名: vProgramEnable
182 **功能简介: X25645(SPI EEPROM)编程使能
183 **参数说明: 无
184 **调用函数: vSendByte
185 **全局变量: 无
186 **函数返回: 无
187 **最后修改时间:2003-07-21
188 **********************************************************************************************/
189 void vProgramEnable(void)
190 {
191 1 //CS = 0;
192 1 CS0;
193 1 vSendByte(PREN_INST);
194 1 //CS = 1;
195 1 CS1;
196 1 }
197
198
199 /********************************************************************************************
200 **函数名: vProgramDisable
201 **功能简介: X25645(SPI EEPROM)编程失效复位
202 **参数说明: 无
203 **调用函数: vSendByte
204 **全局变量: 无?
205 **函数返回: 无
206 **最后修改时间:2003-07-21
207 **********************************************************************************************/
208 void vProgramDisable(void)
209 {
210 1 //CS = 0;
211 1 CS0;
212 1 vSendByte(PRDI_INST);
213 1 //CS = 1;
214 1 CS1;
215 1 }
216
217 /********************************************************************************************
218 **函数名: vBulkErase
219 **功能简介: 擦除nx25p40
220 **参数说明: 无
221 **调用函数: vProgramEnable,vSendByte,bReadStatus
222 **全局变量: 无
223 **函数返回: 无
224 **最后修改时间:2004-06-15
225 **********************************************************************************************/
226 void SPI_EraseBulk1(void)
227 {
228 1 //CS = 0;
229 1 vProgramEnable();
230 1 CS0;
231 1 vSendByte(BULK_ERASE);
232 1 //CS = 1;
233 1 CS1;
234 1 bReadStatus();
235 1 }
236
237 /********************************************************************************************
238 **函数名: vSectorErase
239 **功能简介: 扇区擦除nx25p40
240 **参数说明: bSecNum扇区号0~7
241 **调用函数: vProgramEnable,vSendByte,bReadStatus
C51 COMPILER V7.50 TEMP 04/15/2006 16:14:46 PAGE 5
242 **全局变量: 无?
243 **函数返回: 无
244 **最后修改时间:2004-06-15
245 **********************************************************************************************/
246 void vSectorErase(BYTE bSecNum)
247 {
248 1 //CS = 0;
249 1 vProgramEnable();
250 1 CS0;
251 1 vSendByte(SECTOR_ERASE);
252 1 vSendByte(bSecNum);
253 1 vSendByte(0x00);
254 1 vSendByte(0x00);
255 1 //CS = 1;
256 1 CS1;
257 1 bReadStatus();
258 1
259 1 }
260
261
262 /********************************************************************************************
263 **函数名: vProgramByte
264 **功能简介: 编程X25645(SPI EEPROM)单字节到某地址
265 **参数说明: wAddr-需编程的地址,bCh-写入的字节数据
266 **调用函数: vProgramEnable,vSendByte,bReadStatus,vProgramDisable
267 **全局变量: 无
268 **函数返回: 无
269 **最后修改时间:2003-07-21
270 **********************************************************************************************/
271 void vProgramByte(WORD wAddr,BYTE bCh)
272 {
273 1 BYTE bAddrh,bAddrl;
274 1
275 1 vProgramEnable();
276 1
277 1 bAddrl = (BYTE)wAddr;
278 1 wAddr >>= 8;
279 1 bAddrh = (BYTE)wAddr;
280 1 //CS = 0;
281 1 CS0;
282 1 vSendByte(PROGRAM_INST);
283 1 vSendByte(0x00);
284 1 vSendByte(bAddrh);
285 1 vSendByte(bAddrl);
286 1 vSendByte(bCh);
287 1 //CS = 1;
288 1 CS1;
289 1 bReadStatus();
290 1 vProgramDisable();
291 1 }
292
293
294
295
296
297
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 331 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
C51 COMPILER V7.50 TEMP 04/15/2006 16:14:46 PAGE 6
PDATA SIZE = ---- ----
DATA SIZE = ---- 4
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 + -