📄 4506_8bit_ok.lst
字号:
240 2 for(i=0;i<count;i++)
241 2 for(j=0;j<10;j++)
C51 COMPILER V7.05 4506_8BIT_OK 09/21/2005 13:21:37 PAGE 5
242 2 for(k=0;k<120;k++)
243 2 {
244 3 if(KEY1!=1)
245 3 {
246 4 autorun0=1;
247 4 goto next;
248 4 }
249 3 //==========================
250 3 if(KEY7!=1)
251 3 {
252 4 while(KEY7!=1)
253 4 {
254 5 ;
255 5 }
256 4 kk=1000;
257 4 goto next;
258 4 }
259 3 }
260 2 }
261 1 else
262 1 {
263 2 while(1)
264 2 {
265 3 if(KEY1!=1)
266 3 {
267 4 for(i=0;i<100;i++)
268 4 for(j=0;j<100;j++)
269 4 {
270 5 ;
271 5 }
272 4 while(KEY1==0)
273 4 {
274 5 ;
275 5 }
276 4 goto next;
277 4 }
278 3 //==========================
279 3 if(KEY7!=1)
280 3 {
281 4 while(KEY7!=1)
282 4 {
283 5 ;
284 5 }
285 4 kk=1000;
286 4 goto next;
287 4 }
288 3 //==========================
289 3 DelayX10ms(25);
290 3 if(KEY2==0)
291 3 {
292 4 while(KEY2==0)
293 4 {
294 5 ;
295 5 }
296 4 wr_com8080(0x2a);
297 4 otp_value=otp_value+1;
298 4 if(otp_value==256)
299 4 otp_value=0xff;
300 4 wr_com8080(otp_value);
301 4 }
302 3 //==========================
303 3 if(KEY4==0)
C51 COMPILER V7.05 4506_8BIT_OK 09/21/2005 13:21:37 PAGE 6
304 3 {
305 4 while(KEY4==0)
306 4 {
307 5 ;
308 5 }
309 4 wr_com8080(0x2a);
310 4 otp_value=otp_value-1;
311 4 if(otp_value==-1)
312 4 otp_value=0x00;
313 4 wr_com8080(otp_value);
314 4 }
315 3 }
316 2 }
317 1 next:
318 1 //==========================
319 1 RS=1;
320 1 //==========================
321 1 }
322 //=============END===========================================================
323 //=============K9F5608U0A===============
324 //=============RESET====================
325 void reset(void)
326 {
327 1 MCE=0;
328 1 MR_B=1;
329 1 MRE=1;
330 1 MWE=1;
331 1 MCLE=0;
332 1 MALE=0;
333 1 P1=0xff;
334 1 MCLE=1;
335 1 MALE=0;
336 1 MWE=0;
337 1 MWE=0;
338 1 MWE=0;
339 1 MWE=1;
340 1 MWE=1;
341 1 MWE=1;
342 1 MCLE=0;
343 1 MALE=0;
344 1 while(MR_B==0)
345 1 {
346 2 ;
347 2 }
348 1 }
349 //============命令输出函数=================
350 void writecomd(unsigned char comd)
351 {
352 1 P1=comd;
353 1 MCLE=1;
354 1 MALE=0;
355 1 MWE=0;
356 1 MWE=0;
357 1 MWE=1;
358 1 MWE=1;
359 1 MCLE=0;
360 1 MALE=0;
361 1 }
362 //============地址输出函数====================
363 void writeaddr(uchar raddrl,uchar raddrh)
364 {
365 1 P1=0x00;
C51 COMPILER V7.05 4506_8BIT_OK 09/21/2005 13:21:37 PAGE 7
366 1 MCLE=0;
367 1 MALE=1;
368 1 MWE=0;
369 1 MWE=0;
370 1 MWE=1;
371 1 MWE=1;
372 1 P1=raddrl;
373 1 MWE=0;
374 1 MWE=0;
375 1 MWE=1;
376 1 MWE=1;
377 1 P1=raddrh;
378 1 MWE=0;
379 1 MWE=0;
380 1 MWE=1;
381 1 MWE=1;
382 1 MCLE=0;
383 1 MALE=0;
384 1 }
385 //=============数据输出函数=============
386 void writedata(void)
387 {
388 1 P1= *pointer;
389 1 MWE=0;
390 1 MWE=0;
391 1 MWE=1;
392 1 MWE=1;
393 1 pointer++;
394 1 }
395 //=============读操作==================
396 uchar readsta(void)
397 {
398 1 unsigned char soop;
399 1 P1MDOUT=0x00;
400 1 P1=0xff;
401 1 DelayX1ms(20);
402 1 MRE=0;
403 1 MRE=0;
404 1 soop=P1;
405 1 MRE=1;
406 1 P1MDOUT=0xff;
407 1 return(soop);
408 1 }
409 //==============整块擦除1块=32pages 共2048块====
410 uchar blockerase(uint block)
411 {
412 1 unsigned char result;
413 1 writecomd(0x60);
414 1 block=block*32;
415 1 P1=block&0x00ff;
416 1 MCLE=0;
417 1 MALE=1;
418 1 MWE=0;
419 1 MWE=0;
420 1 MWE=0;
421 1 MWE=1;
422 1 MWE=1;
423 1 MWE=1;
424 1 P1=(block&0xff00)>>8;
425 1 MWE=0;
426 1 MWE=0;
427 1 MWE=0;
C51 COMPILER V7.05 4506_8BIT_OK 09/21/2005 13:21:37 PAGE 8
428 1 MWE=1;
429 1 MWE=1;
430 1 MWE=1;
431 1 MCLE=0;
432 1 MALE=0;
433 1 writecomd(0xd0);
434 1 while(MR_B==0)
435 1 {
436 2 ;
437 2 }
438 1 writecomd(0x70);
439 1 result=readsta();
440 1 if((result&0x01)== 1)
441 1 {
442 2 return(1);
443 2 }//出错处理
444 1 else
445 1 return(0);
446 1 }
447 //==============整页写入的详细代码======
448 uchar pagewrite(uchar raddrl,uchar raddrh)
449 {
450 1 int i;
451 1 unsigned char result;
452 1 pointer = &buffer;
453 1 writecomd(0x00);//必须指出开始地址
454 1 writecomd(0x80);
455 1 writeaddr(raddrl,raddrh);
456 1 for(i=0;i<512;i++)
457 1 {
458 2 writedata();
459 2 }
460 1 writecomd(0x10);
461 1 while(MR_B==0)
462 1 {
463 2 ;
464 2 }
465 1 writecomd(0x70);
466 1 result=readsta();
467 1 if((result&0x01) == 1)
468 1 {
469 2 return(1);
470 2 }//出错处理
471 1 else
472 1 return(0);
473 1 }
474 //===============
475 //-----------------------------------------------------------------------------
476 // SYSCLK_Init
477 //-----------------------------------------------------------------------------
478 //
479 // This routine initializes the system clock to use the internal 24.5MHz / 8
480 // oscillator as its clock source. Also enables missing clock detector reset.
481 //
482 void SYSCLK_Init (void)
483 {
484 1 OSCICN = 0x80; // IOSCEN IFRDY 0 0 0 0 IFCN1 IFCN0 (sfr OSCICN=0xB2;内部振荡器
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -