spi.lst
来自「显示屏驱动源代码」· LST 代码 · 共 412 行 · 第 1/2 页
LST
412 行
189 2 SPI_SDA = 1;// delay about 1us
190 2 else
191 2 SPI_SDA = 0;// delay about 1us
192 2
193 2 SPIdelay(DELAY);// delay about 1us
194 2
195 2 SPI_SCL=1; // CLOCK = High
196 2 SPIdelay(DELAY);// delay about 1us
197 2
198 2 if(j != 0)
199 2 {
200 3 SPI_SCL = 0;
201 3 SPIdelay(DELAY); // delay about 1us // CLOCK = Low
202 3 }
203 2 }
204 1
205 1 SPI_SCL=1;
206 1 SPIdelay(DELAY); // delay about 1us // CLOCK = Low
207 1
208 1 SPI_SDA = 1; // Data Low
209 1 SPIdelay(DELAY);// delay about 1us
210 1
211 1 SPI_CS_EN; //SPI_CS = 1; // EN = High
212 1 SPIdelay(DELAY);// delay about 1us
213 1
214 1 SPIdelay(50); // delay about 25us
215 1
216 1 SPI_CS_DS; //SPI_CS = 0; // EN = Low CS Low
217 1 SPIdelay(DELAY);// delay about 1us
218 1
219 1 SPI_SCL = 0; // SCL Low
220 1 SPIdelay(DELAY);// delay about 1us
221 1
222 1 for (j = 23; j >= 0; j--)//17
223 1 {
224 2
225 2 SPIdelay(DELAY);// delay about 1us // CLOCK = Low
226 2
227 2 if ((xData >> j) & 0x00000001L) // DATA HIGH or LOW
228 2 SPI_SDA = 1;
229 2 else
230 2 SPI_SDA = 0;
231 2
232 2 SPIdelay(DELAY);// delay about 1us
233 2
234 2 SPI_SCL=1; // CLOCK = High
235 2 SPIdelay(DELAY);// delay about 1us
236 2
237 2 if(j != 0)
238 2 {
C51 COMPILER V7.06 SPI 02/21/2008 14:00:31 PAGE 5
239 3 SPI_SCL = 0;
240 3 SPIdelay(DELAY);// delay about 1us // CLOCK = Low
241 3 }
242 2 }
243 1
244 1 SPI_SCL=1;
245 1 SPIdelay(DELAY); // delay about 1us // CLOCK = Low
246 1
247 1 SPI_SDA = 1; // Data Low
248 1 SPIdelay(DELAY);// delay about 1us
249 1
250 1 SPI_CS_EN; //SPI_CS = 1; // EN = High
251 1 SPIdelay(DELAY);// delay about 1us
252 1 }
253
254
255 WORD ReadSPI(BYTE addr)
256 {
257 1 //volatile S3C2413_IOPORT_REG *s2413IOP = (S3C2413_IOPORT_REG *)OALPAtoVA(S3C2413_BASE_REG_PA_IOPORT, FAL
-SE);
258 1 int j;
259 1 //unsigned char DELAY=100;
260 1 unsigned char DELAY=10; // delay about 1us
261 1 DWORD xAddress;
262 1 BYTE xData;
263 1 WORD rData ;
264 1
265 1 xAddress = 0x00600000L|(0x000000ffL & addr);
266 1 xData = 0x63;
267 1
268 1 ///////////////////////address
269 1 SPI_CS_EN; //SPI_CS = 1; // EN = High CS high
270 1 SPI_SCL=1; // SCL High
271 1 SPI_SDA = 1; // Data High
272 1
273 1 SPIdelay(DELAY); // delay about 1us
274 1
275 1 SPI_CS_DS; //SPI_CS = 0; // EN = Low CS Low
276 1 SPIdelay(DELAY);// delay about 1us
277 1
278 1 SPI_SCL = 0; // SCL Low
279 1 SPIdelay(DELAY);// delay about 1us
280 1
281 1 for (j = 23; j >= 0; j--)//17
282 1 {
283 2
284 2 if ((xAddress >> j) & 0x00000001L) // DATA HIGH or LOW
285 2 SPI_SDA = 1;// delay about 1us
286 2 else
287 2 SPI_SDA = 0;// delay about 1us
288 2
289 2 SPIdelay(DELAY);// delay about 1us
290 2
291 2 SPI_SCL=1; // CLOCK = High
292 2 SPIdelay(DELAY);// delay about 1us
293 2
294 2 if(j != 0)
295 2 {
296 3 SPI_SCL = 0;
297 3 SPIdelay(DELAY); // delay about 1us // CLOCK = Low
298 3 }
299 2 }
C51 COMPILER V7.06 SPI 02/21/2008 14:00:31 PAGE 6
300 1
301 1 SPI_SCL=1;
302 1 SPIdelay(DELAY); // delay about 1us // CLOCK = Low
303 1
304 1 SPI_SDA = 1; // Data Low
305 1 SPIdelay(DELAY);// delay about 1us
306 1
307 1 SPI_CS_EN; //SPI_CS = 1; // EN = High
308 1 SPIdelay(DELAY);// delay about 1us
309 1
310 1 SPIdelay(50); // delay about 25us
311 1
312 1 SPI_CS_DS; //SPI_CS = 0; // EN = Low CS Low
313 1 SPIdelay(DELAY);// delay about 1us
314 1
315 1 SPI_SCL = 0; // SCL Low
316 1 SPIdelay(DELAY);// delay about 1us
317 1
318 1
319 1 for (j=7; j >= 0; j--)
320 1 {
321 2
322 2 if ((xData >> j) & 0x01)
323 2 SPI_SDA = 1;
324 2 else
325 2 SPI_SDA = 0;
326 2
327 2 SPIdelay(DELAY);// delay about 1us
328 2
329 2 SPI_SCL=1; // CLOCK = High
330 2 SPIdelay(DELAY);// delay about 1us
331 2
332 2 SPI_SCL = 0; // SCL Low
333 2 SPIdelay(DELAY);// delay about 1us
334 2 }
335 1
336 1 //SPI_SDA = 1;
337 1 //SPIdelay(DELAY);// delay about 1us
338 1
339 1 SPI_SCL = 0;
340 1 SPIdelay(DELAY);// delay about 1us // CLOCK = Low
341 1
342 1 for (j=15; j >=0; j--)
343 1 {
344 2
345 2 SPIdelay(DELAY);// delay about 1us // CLOCK = Low
346 2
347 2 SPI_SCL=1; // CLOCK = High
348 2 SPIdelay(DELAY);// delay about 1us
349 2
350 2 rData <<= 1;
351 2 if( SPI_SDA ) rData |= 1;
352 2 SPIdelay(DELAY);// delay about 1us
353 2
354 2 if(j != 0)
355 2 {
356 3 SPI_SCL = 0;
357 3 SPIdelay(DELAY);// delay about 1us // CLOCK = Low
358 3 }
359 2 }
360 1
361 1 SPI_SCL=1;
C51 COMPILER V7.06 SPI 02/21/2008 14:00:31 PAGE 7
362 1 SPIdelay(DELAY); // delay about 1us // CLOCK = Low
363 1
364 1 SPI_SDA = 1; // Data Low
365 1 SPIdelay(DELAY);// delay about 1us
366 1
367 1 SPI_CS_EN; //SPI_CS = 1; // EN = High
368 1 SPIdelay(DELAY);// delay about 1us
369 1
370 1 return rData;
371 1 }
372 #endif
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 929 ----
CONSTANT SIZE = 62 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- 17
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 + =
减小字号Ctrl + -
显示快捷键?