📄 spi.lst
字号:
C51 COMPILER V7.06 SPI 06/12/2008 23:57:32 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE SPI
OBJECT MODULE PLACED IN SPI.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE SPI.C DEBUG OBJECTEXTEND
stmt level source
1 /*
2 * All rights reserved.
3 * atmel corporation data flash at45db161B driver.
4 */
5
6 #ifndef __SPI_C__
7 #define __SPI_C__
8
9 //#pragma LARGE
10 #include "SPI.h"
11 #include "config.h"
12 #include <stdlib.h>
13 #include <intrins.h>
14 // AT45DB161 operate code define
15 #define AT45DB_BUFFER1_XFER 0x53
16 #define AT45DB_BUFFER2_XFER 0x55
17 #define AT45DB_BUFFER1_WRITE 0x84
18 #define AT45DB_BUFFER2_WRITE 0x87
19 #define AT45DB_WRITE_ONLY1 0x88
20 #define AT45DB_WRITE_ONLY2 0x89
21 #define AT45DB_PAGE_ERASE 0x81
22 #define AT45DB_STATUS_READ 0xd7
23 #define AT45DB_ARRAY_READ 0xE8
24
25 // Added by alex 2007/10/24
26 #define MAIN_TO_BUFFER1_TRANSFER 0x53
27 #define BUFFER1_WRITE_ONLY 0x84
28 #define BUFFER1_TO_MAIN_IN_ERASE 0x83
29 #define AUTO_PAGE_REWRITE 0x58
30
31 #define _at45db_begin() _nop_();\
32 _nop_();\
33 EE_CS = 0;
34
35 #define _at45db_end() EE_CS = 1;
36
37 void delay_ms(unsigned long count)
38 {
39 1 unsigned char i;
40 1 while (count--)
41 1 {
42 2 for (i=0; i<180; i++)
43 2 {
44 3 _nop_();
45 3 _nop_();
46 3 }
47 2 }
48 1 }
49
50 void _delayxms(unsigned short count)
51 {
52 1 unsigned char i;
53 1 while (count--)
54 1 {
55 2 for (i=0; i<120; i++)
C51 COMPILER V7.06 SPI 06/12/2008 23:57:32 PAGE 2
56 2 {
57 3 _nop_();
58 3 }
59 2 }
60 1 }
61
62
63 void at45db_init()
64 {
65 1 _delayxms(100);
66 1
67 1 EE_RST = 1;
68 1 EE_CS = 1;
69 1 EE_SCK = 1;
70 1 EE_SO = 1;
71 1 EE_SI = 1;
72 1 }
73
74
75 void _at45db_write8(unsigned char udata) //small
76 {
77 1 unsigned char i;
78 1 for (i = 0; i < 8; i ++)
79 1 {
80 2 EE_SCK = 0;
81 2 if ((udata & 0x80) == 0x80)
82 2 {
83 3 EE_SO = 1;
84 3 }
85 2 else
86 2 {
87 3 EE_SO = 0;
88 3 }
89 2 udata = udata << 1;
90 2 EE_SCK = 1;
91 2 }
92 1 EE_SO = 0;
93 1 EE_SCK = 0;
94 1 }
95
96 unsigned char _at45db_read8() //small
97 {
98 1 //unsigned char i, rdata = 0x00;
99 1 unsigned char i;
100 1 xdata unsigned char rdata = 0x00;
101 1 //EE_SI = 1;
102 1 for (i = 0; i < 8; i ++)
103 1 {
104 2 EE_SCK = 1;
105 2
106 2 rdata = (rdata << 1) | EE_SI;
107 2
108 2 EE_SCK = 0;
109 2 }
110 1
111 1 return rdata;
112 1 }
113
114
115 unsigned char _at45db_check_busy()
116 {
117 1 unsigned char idle = 0x80;
C51 COMPILER V7.06 SPI 06/12/2008 23:57:32 PAGE 3
118 1 unsigned short i = 1024;
119 1
120 1 while (i --) //
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -