📄 up51s011.lst
字号:
180 1 SCK = 0;
181 1 CS = 1;
182 1 wip_poll(); // 检测写入进度
183 1 }
184
185 //********************************************************************************************
186 //* 单一字节读取
187 //* 传入参数: 无
188 //* 返回值: 读取的字节
189
190 unsigned char byte_read()
191 {
192 1 unsigned int addr;
193 1 unsigned char read_data;
194 1
195 1 addr = BYTE_ADDR; // 设置要读取的地址
196 1 SCK = 0;
197 1 CS = 0;
198 1 if(addr & 0x100)
199 1 {
200 2 outbyt(READ_INST | 0x08);// 传送读取指令和地址最高位"1"
201 2 }
202 1 else
203 1 {
204 2 outbyt(READ_INST); // 传送读取指令和地址最高位"0"
205 2 }
206 1 outbyt((unsigned char)addr); // 传送地址低字节
207 1 read_data = inbyt(); // 读取字节
208 1 SCK = 0;
209 1 CS = 1;
210 1
211 1 return read_data;
212 1 }
213
214 //********************************************************************************************
215 //* 页写入
216 //* 传入参数: 无
217 //* 返回值: 无
218
219 void page_write()
220 {
221 1 unsigned int addr;
222 1 addr = PAGE_ADDR; // 设置要写入的地址
223 1 SCK = 0;
224 1 CS = 0;
225 1 if(addr & 0x100)
226 1 {
227 2 outbyt(WRITE_INST | 0x08); //传送写入指令和地址最高位"1"
228 2 }
229 1 else
230 1 {
231 2 outbyt(WRITE_INST); // 传送写入指令和地址最高位"0"
232 2 }
233 1 outbyt((unsigned char)addr); // 传送地址低字节
234 1 outbyt(PAGE_DATA1); // 传送第一个字节数据
235 1 outbyt(PAGE_DATA2); // 传送第二个字节数据
236 1 outbyt(PAGE_DATA3); // 传送第三个字节数据
237 1 SCK = 0;
238 1 CS = 1;
239 1 wip_poll(); // 检测写入进度
240 1 }
241
C51 COMPILER V7.08 UP51S011 03/20/2005 18:17:36 PAGE 5
242 //********************************************************************************************
243 //* 连续读取3个字节
244 //* 传入参数: 无
245 //* 返回值: 最后一次读取的字节
246
247 unsigned char sequ_read()
248 {
249 1 unsigned int addr;
250 1 unsigned char read_data;
251 1
252 1 addr = PAGE_ADDR; // 设置第一个字节的地址
253 1 SCK = 0;
254 1 CS = 0;
255 1 if(addr & 0x100)
256 1 {
257 2 outbyt(READ_INST | 0x08); //传送读取指令和地址最高位"1"
258 2 }
259 1 else
260 1 {
261 2 outbyt(READ_INST); // 传送读取指令和地址最高位"0"
262 2 }
263 1 outbyt((unsigned char)addr); // 传送地址低字节
264 1
265 1 inbyt(); // 读取第一个字节
266 1 inbyt(); // 读取第二个字节
267 1 read_data = inbyt(); // 读取第三个字节
268 1
269 1 SCK = 0;
270 1 CS = 1;
271 1
272 1 return read_data;
273 1 }
274
275 //********************************************************************************************
276 //* 复位看门狗定时器
277 //* 传入参数: 无
278 //* 返回值: 无
279
280 void rst_wdog()
281 {
282 1 CS = 0;
283 1 _nop_();
284 1 _nop_();
285 1 CS = 1;
286 1 }
287
288 //********************************************************************************************
289 //* 写入进度查询
290 //* 传入参数: 无
291 //* 返回值: 无
292
293 void wip_poll()
294 {
295 1 unsigned char i; // 设置最大的查询次数
296 1
297 1 //// 如果WIP位为'1'并且未达到最大查询次数, 则继续查询
298 1 //// 如果WIP位为'0', 则写入周期完成, 返回
299 1 for(i = 0; i < MAX_POLL; i++)
300 1 {
301 2 if(rdsr_cmd() & 0x01) // 读取状态寄存器
302 2 {
303 3 continue;
C51 COMPILER V7.08 UP51S011 03/20/2005 18:17:36 PAGE 6
304 3 }
305 2 return;
306 2 }
307 1 }
308
309
310 //********************************************************************************************
311 //* 传送字节数据到EEPROM, 高位在前
312 //* 传入参数: write_data --- 要传送的字节
313 //* 返回值: 无
314
315 void outbyt(unsigned char write_data)
316 {
317 1 unsigned char i;
318 1 for(i = 0; i < 8; i++)
319 1 {
320 2 SCK = 0;
321 2 SI = (bit)(write_data & 0x80); //传送一个位到SI
322 2 write_data <<= 1;
323 2 SCK = 1;
324 2 }
325 1 SI = 0;
326 1 }
327
328 //********************************************************************************************
329 //* 从EEPROM接收数据, 高位在前
330 //* 传入参数: 无
331 //* 返回值: A --- 接收到的字节
332
333 unsigned char inbyt()
334 {
335 1
336 1 unsigned char i;
337 1 unsigned char read_data;
338 1 for(i = 0; i < 8; i++)
339 1 {
340 2 SCK = 0;
341 2 read_data <<= 1;
342 2 SCK = 1;
343 2 read_data |= (unsigned char)SO;
344 2 }
345 1 return read_data;
346 1 }//********************************************************************************************
347 void delay()
348 {
349 1 unsigned int i,j;
350 1 for(i=0;i<200;i++)
351 1 for(j=0;j<1000;j++)
352 1 ;
353 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 410 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 9
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 + -