📄 x5045v2.lst
字号:
C51 COMPILER V7.50 X5045V2 10/02/2005 13:48:37 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE X5045V2
OBJECT MODULE PLACED IN X5045v2.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\c51.exe X5045v2.c DB OE SMALL ROM(LARGE)
line level source
1 /****************************************************************/
2 /*功能:通过SPI接口向X5045内的EEPROM写入整页(16字节)的数据
3 /*版本:v1.0
4 /*设计人:
5 /*编写日期:2005-09-25
6 /*最后修改日期: 2005-10-02
7 /*状态:passed
8 /****************************************************************/
9 /*头文件定义*/
10 #include <reg51.h>
11 #include <intrins.h>
12 /*预定义部分*/
13 #define uchar unsigned char
14 #define uint unsigned int
15 #define pagenum 16
16 sbit XCS=P1^0;
17 sbit XSI=P1^1;
18 sbit XSCK=P1^2;
19 sbit XSO=P1^3;
20 uchar pagedata[32]=/*
21 {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
22 0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,
23 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,
24 0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f};
25 */
26 {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
27 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
28 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
29 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
30
31 /*函数声明部分*/
32 void write_byte(uchar byte);
33 uchar read_byte();
34 void write_en();
35 void write_cmd(uchar cmd);
36 uchar read_status();
37 bit check_ready();
38 void write_one_data(uchar dat);
39 uchar read_one_data();
40 void write_page(uchar *page,uchar addr);
41 uchar *read_page(uchar addr);
42 /*主函数部分*/
43 /*********************************************************************/
44 /*函数名:main()
45 /*功能:主函数
46 /*输入参数:无
47 /*返回值:无
48 /*编写日期:
49 /*最后修改日期:
50 /********************************************************************/
51 void main()
52 {
53 1 uchar status;
54 1 //uchar *page;
55 1 uint i=1000,j=100;
C51 COMPILER V7.50 X5045V2 10/02/2005 13:48:37 PAGE 2
56 1 P1=0xff;
57 1 XCS=0;XSI=0;XSCK=0;XSO=0;
58 1 write_en();
59 1 write_cmd(0x20);
60 1 status=read_status();
61 1 while(!check_ready());
62 1 for(i=0;i<512/16;i++)
63 1 {
64 2 write_en();
65 2 write_page(&pagedata[0],i*32);
66 2 while(!check_ready());
67 2 write_en();
68 2 write_page(&pagedata[16],i*32+16);
69 2 while(!check_ready());
70 2 }
71 1 while(1);
72 1 }
73
74 /*其他函数定义部分*/
75 /*********************************************************************/
76 /*函数名:
77 /*功能:
78 /*输入参数:
79 /*返回值:
80 /*调用函数:
81 /*被调用函数:
82 /*编写日期:
83 /*最后修改日期:
84 /********************************************************************/
85 void write_byte(uchar byte)
86 {
87 1 uchar i=0;
88 1 uchar tmp;
89 1 for(i=0;i<8;i++)
90 1 {
91 2 XSCK=0;
92 2 tmp=byte&0x80;
93 2 if(tmp!=0)
94 2 XSI=1;
95 2 else
96 2 XSI=0;
97 2 XSCK=1;
98 2 _nop_();
99 2 byte<<=1;
100 2 }
101 1 }
102 /*********************************************************************/
103 /*函数名:
104 /*功能:
105 /*输入参数:
106 /*返回值:
107 /*调用函数:
108 /*被调用函数:
109 /*编写日期:
110 /*最后修改日期:
111 /********************************************************************/
112 uchar read_byte()
113 {
114 1 uchar i;
115 1 uchar byte=0;
116 1 for(i=0;i<8;i++)
117 1 {
C51 COMPILER V7.50 X5045V2 10/02/2005 13:48:37 PAGE 3
118 2 byte<<=1;
119 2 XSCK=0;
120 2 _nop_();
121 2 if(XSO==1)
122 2 byte+=1;
123 2 XSCK=1;
124 2 }
125 1 XSCK=0;
126 1 return(byte);
127 1 }
128 /*********************************************************************/
129 /*函数名:
130 /*功能:
131 /*输入参数:
132 /*返回值:
133 /*调用函数:
134 /*被调用函数:
135 /*编写日期:
136 /*最后修改日期:
137 /********************************************************************/
138 void write_en()
139 {
140 1 XCS=0;
141 1 write_byte(0x06);
142 1 XCS=1;
143 1 }
144 /*********************************************************************/
145 /*函数名:
146 /*功能:
147 /*输入参数:
148 /*返回值:
149 /*调用函数:
150 /*被调用函数:
151 /*编写日期:
152 /*最后修改日期:
153 /********************************************************************/
154 void write_one_data(uchar dat)
155 {
156 1 XSCK=0;XCS=0;
157 1 write_byte(0x02);
158 1 write_byte(0x00);
159 1 write_byte(dat);
160 1 XCS=1;
161 1 }
162 /*********************************************************************/
163 /*函数名:
164 /*功能:
165 /*输入参数:
166 /*返回值:
167 /*调用函数:
168 /*被调用函数:
169 /*编写日期:
170 /*最后修改日期:
171 /********************************************************************/
172 uchar read_one_data()
173 {
174 1 uchar dat;
175 1 XSCK=0;XCS=0;
176 1 write_byte(0x03);
177 1 write_byte(0x00);
178 1 dat=read_byte();
179 1 XCS=1;
C51 COMPILER V7.50 X5045V2 10/02/2005 13:48:37 PAGE 4
180 1 return(dat);
181 1 }
182 /*********************************************************************/
183 /*函数名:
184 /*功能:
185 /*输入参数:
186 /*返回值:
187 /*调用函数:
188 /*被调用函数:
189 /*编写日期:
190 /*最后修改日期:
191 /********************************************************************/
192 void write_cmd(uchar cmd)
193 {
194 1 XCS=0;
195 1 write_byte(0x01);
196 1 write_byte(cmd);
197 1 XCS=1;
198 1 }
199 /*********************************************************************/
200 /*函数名:
201 /*功能:
202 /*输入参数:
203 /*返回值:
204 /*调用函数:
205 /*被调用函数:
206 /*编写日期:
207 /*最后修改日期:
208 /********************************************************************/
209 uchar read_status()
210 {
211 1 uchar status;
212 1 XCS=0;
213 1 write_byte(0x05);
214 1 status=read_byte();
215 1 XCS=1;
216 1 return(status);
217 1 }
218 /*********************************************************************/
219 /*函数名:
220 /*功能:
221 /*输入参数:
222 /*返回值:
223 /*调用函数:
224 /*被调用函数:
225 /*编写日期:
226 /*最后修改日期:
227 /********************************************************************/
228 bit check_ready()
229 {
230 1 uchar status=0xff;
231 1 write_en();
232 1 status=read_status();
233 1 status=status & 0x01;
234 1 if(!status)
235 1 return 1;
236 1 else
237 1 return 0;
238 1 }
239 /*********************************************************************/
240 /*函数名:
241 /*功能:
C51 COMPILER V7.50 X5045V2 10/02/2005 13:48:37 PAGE 5
242 /*输入参数:
243 /*返回值:
244 /*调用函数:
245 /*被调用函数:
246 /*编写日期:
247 /*最后修改日期:
248 /********************************************************************/
249 void write_page(uchar *page,uchar addr)
250 {
251 1 uchar i;
252 1 //uchar dat;
253 1 XSCK=0;XCS=0;
254 1 write_byte(0x02);
255 1 write_byte(addr);
256 1 for(i=0;i<pagenum;i++)
257 1 {
258 2 // dat=page[i]+addr;
259 2 write_byte(page[i]);//+addr);
260 2 }
261 1 XCS=1;
262 1 }
263 /*********************************************************************/
264 /*函数名:
265 /*功能:
266 /*输入参数:
267 /*返回值:
268 /*调用函数:
269 /*被调用函数:
270 /*编写日期:
271 /*最后修改日期:
272 /********************************************************************/
273 uchar *read_page(uchar addr)
274 {
275 1 uchar i;
276 1 uchar page[pagenum];
277 1 XSCK=0;XCS=0;
278 1 write_byte(0x03);
279 1 write_byte(addr);
280 1 for(i=0;i<pagenum;i++)
281 1 {
282 2 page[i]=read_byte();
283 2 }
284 1 XCS=1;
285 1 return(page);
286 1 }
287 /********************END********************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 339 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 32 24
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 + -