📄 93c66try.lst
字号:
325 1 SK_93c66=1;
326 1 SK_93c66=0;
327 1 DI_93c66=0;//0
328 1 DI_93c66=0;
329 1 SK_93c66=1;
330 1 SK_93c66=0;
331 1 SK_93c66=0;
332 1
333 1 CD_1=0;
334 1 SK_93c66=1;//0
335 1 SK_93c66=0;
336 1 C1=DO_93c66;
337 1 SK_93c66=1;//1
338 1 SK_93c66=0;
339 1 C2=DO_93c66;
340 1 SK_93c66=1;//2
341 1 SK_93c66=0;
342 1 C3=DO_93c66;
343 1 SK_93c66=1;//3
344 1 SK_93c66=0;
345 1 C4=DO_93c66;
346 1 SK_93c66=1;//4
347 1 SK_93c66=0;
348 1 C5=DO_93c66;
349 1 SK_93c66=1;//5
350 1 SK_93c66=0;
351 1 C6=DO_93c66;
352 1 SK_93c66=1;//6
353 1 SK_93c66=0;
354 1 C7=DO_93c66;
355 1 SK_93c66=1;//7
356 1 SK_93c66=0;
357 1 C8=DO_93c66;
358 1 while(1)
359 1 {
360 2 ;
361 2 }
362 1
363 1
364 1 //unsigned int n,tmp;
365 1
C51 COMPILER V7.09 93C66TRY 10/31/2005 17:14:39 PAGE 7
366 1 /*
367 1 unsigned int n,tmp;
368 1
369 1 P0=0xff;
370 1 for(n=0;n<0x1ff;n++)//in 46 n range from 0 to 7f
371 1 {
372 1 if(!WRITE(n,n))
373 1 {
374 1 CD_3=0;
375 1 P0=0x65;
376 1 while(1)
377 1 {};
378 1 }
379 1 }
380 1 while(1)
381 1 {
382 1 for(n=0;n<0x1ff;n++)//in 46 n range from 0 to 7f
383 1 {
384 1 tmp=(n<<1);
385 1 CD_2=1;
386 1 CD_1=0;
387 1 P0=READ(n);
388 1 delay1(60000);
389 1 CD_1=1;
390 1 CD_2=0;
391 1 P0=tmp;
392 1 delay1(60000);
393 1 }
394 1 }
395 1 */
396 1
397 1 //CD_1=0;
398 1 //while(1)
399 1 //{
400 1 //for(n=0;n<0x1ff;n++)
401 1 //{P0=(READ(n)<<1);
402 1 //delay1(30000);
403 1
404 1
405 1 }
406 //-----------------------------------------------------COPY--------------------------------------------
407 //2 .用C51 软件包对CAT93c66 器件进行读写操作
408 //(1 )CAT93c66 的汇编读写软件包
409 /*=========================================================*/
410 /* CSI93c66 操作子程序 */
411 /* 注意:这里使用的CSI93c66 为8 位结构的EEROM
412 */
413 /*=========================================================*/
414 //#include <Reg764.h>
415 /*87LPC764 的头文件*/
416 void delay1(unsigned int num)
417 {
418 1 while(num!=0){num=num-1;}
419 1 }
420 /***********************************************************************/
421 /*名称: START_93c66() */
422 /*说明: 用于93c66 的启动,防止由于CS_93c66 的改动而引起数据时序混乱 */
423 /***********************************************************************/
424 void START_93c66()
425 {
426 1 //DO_93c66=1; /*防止DO 由于是低电平而无法输入*/
427 1 //CS_93c66=1;
C51 COMPILER V7.09 93C66TRY 10/31/2005 17:14:39 PAGE 8
428 1 /*开启93c66*/
429 1 CS_93c66=0;
430 1 DI_93c66=0;
431 1 SK_93c66=0;
432 1 CS_93c66=1;
433 1 delay1(1000);
434 1 }
435 /***************************************************************************/
436 /*名称:END_93c66() */
437 /*说明:用于93c66 的结束,防止由于CS_93c66 的改动而引起数据线为0 而无法输入*/
438 /***************************************************************************/
439 void END_93c66()
440 {
441 1 CS_93c66=0;
442 1 // DI_93c66=1;
443 1 // SK_93c66=1;
444 1 }
445 /***********************************************************************/
446 /*名称:SEND_DATA_93c66() */
447 /*说明:在93c66 启动下,送入指定位数的数据 */
448 /*输入: op_data 要输入的数据 */
449 /* num 输入的位数 */
450 /**********************************************************************/
451 void SEND_DATA_93c66(unsigned int op_data,unsigned char num)
452 {
453 1 unsigned char temp1;
454 1 op_data=op_data<<(16-num); /*左移去掉无用位*/
455 1 for(temp1=0;temp1<num;temp1++)
456 1 {
457 2 if( (op_data&0X8000)==00 )
458 2 {DI_93c66=0;}
459 2 else
460 2 {DI_93c66=1;}
461 2 SK_93c66=1;SK_93c66=1;SK_93c66=1;SK_93c66=1;
462 2 SK_93c66=0;SK_93c66=0;SK_93c66=0;SK_93c66=0;
463 2 op_data=op_data<<1;
464 2 }
465 1 }
466 /***********************************************************************/
467 /*名称: EWEN_93c66() */
468 /*说明: 93c66 的编程启动.操作码(100 11XXXXXXX) */
469 /***********************************************************************/
470 void EWEN_93c66()
471 {
472 1 START_93c66();
473 1 // SEND_DATA_93c66(0X0013,0X05); /*送入3 位操作码+11*/
474 1 // SEND_DATA_93c66(0X0000,Addr_bit-2); /*送入9 位地址*/
475 1 SEND_DATA_93c66(0X0980,0X0C);
476 1 END_93c66();
477 1 }
478 /***********************************************************************/
479 /*名称: EWDS_93c66() */
480 /*说明: 93c66 的编程关闭.操作码(100 00XXXXXXX) */
481 /**********************************************************************/
482 void EWDS_93c66()
483 {
484 1 START_93c66();
485 1 // SEND_DATA_93c66(0X0004,0X03);
486 1 // SEND_DATA_93c66(0X0000,Addr_bit);
487 1 SEND_DATA_93c66(0X0800,0X0C);
488 1 END_93c66();
489 1 }
C51 COMPILER V7.09 93C66TRY 10/31/2005 17:14:39 PAGE 9
490 /***********************************************************************/ /*名称:READ() */
491 /*说明:93c66 的字读取程序 */
492 /*输入:要读取的字节地址(9 位) */
493 /*输出:读取的字数值 */
494 /**********************************************************************/
495 unsigned char READ(unsigned int address)
496 {
497 1 unsigned char temp1;
498 1 unsigned char temp2;
499 1 START_93c66();
500 1 SEND_DATA_93c66(0X0006,0X03);
501 1 SEND_DATA_93c66(address,Addr_bit);
502 1 temp2=0; /*存放返回数据的缓冲先清零*/
503 1 for(temp1=0;temp1<8;temp1++) /*循环读出8 个数据*/
504 1 {
505 2 temp2=temp2<<1;
506 2 SK_93c66=1;SK_93c66=0;
507 2 if(DO_93c66==1)
508 2 {temp2=temp2|0X01;}
509 2 }
510 1 END_93c66();
511 1
512 1 return temp2;
513 1 }
514 /**********************************************************************/
515 /*名称:WRITE() */
516 /*说明:93c66 的字写入程序 */
517 /*输入: address 要写入的字节地址(9 位) */
518 /* op_data 要写入的数据(8 位) */
519 /*输出: 读取的字数值 */
520 /**********************************************************************/
521 unsigned char WRITE(unsigned int address,unsigned int op_data)
522 {
523 1 unsigned char temp1;
524 1 unsigned int temp2;
525 1 EWEN_93c66();
526 1 START_93c66();
527 1 SEND_DATA_93c66(0X0005,0X03);
528 1 SEND_DATA_93c66(address,Addr_bit);
529 1 SEND_DATA_93c66(op_data,0X08);
530 1 CS_93c66=0;
531 1 CS_93c66=0;
532 1 CS_93c66=0;
533 1 CS_93c66=0;
534 1 CS_93c66=1;
535 1 temp1=1;
536 1 temp2=50000; /*设置一个最大延时等待数值.注意在不同的晶振下延时是不同的*/
537 1 while(!DO_93c66)
538 1 {
539 2 temp2=temp2-1;
540 2 if(temp2==0)
541 2 {
542 3 temp1=0;//temp1=0则写入失败
543 3 break; /*最大等待延时后说明擦除失败*/
544 3 }
545 2 }
546 1 END_93c66();
547 1 EWDS_93c66();
548 1 return temp1;
549 1 }
550 /***********************************************************************/
551 /*名称:ERASE() */
C51 COMPILER V7.09 93C66TRY 10/31/2005 17:14:39 PAGE 10
552 /*说明:93c66 的字擦除程序 */
553 /*输入: address 要擦除的字地址(9 位) */
554 /**********************************************************************/
555 /*
556 unsigned char ERASE(unsigned char address)
557 {data unsigned char temp1;
558 data unsigned int temp2;
559 EWEN_93c66();
560 START_93c66();
561 SEND_DATA_93c66(0X07,0X03);
562 SEND_DATA_93c66(address,0X06);
563 CS_93c66=0;
564 CS_93c66=1;
565 temp1=1;
566 temp2=50000;
567 while(!DO_93c66)
568 {temp2=temp2-1;
569 if(temp2==0)
570 {temp1=0;
571 break;
572 }
573 }
574 END_93c66();
575 EWDS_93c66(); //返回表示擦除状态的特征
576 return temp1;
577 }
578 */
579
580
581 /**********************************************************************/
582 /*名称:ERAL() */
583 /*说明:93c66 的全部擦除程序 */
584 /**********************************************************************/
585 /*
586 unsigned char ERAL()
587 {data unsigned char temp1;
588 data unsigned int temp2;
589 EWEN_93c66();
590 START_93c66();
591 SEND_DATA_93c66(0X04,0X03);
592 SEND_DATA_93c66(0X20,0X06);
593 CS_93c66=0;
594 CS_93c66=1;
595 temp1=1;
596 temp2=50000;
597 while(!DO_93c66)
598 {temp2=temp2-1;
599 if(temp2==0)
600 {temp1=0;
601 break;
602 }
603 }
604 END_93c66();
605 EWDS_93c66(); //返回表示擦除状态的特征
606 return temp1;
607 }
608 */
609
610
611 /***********************************************************************/
612 /*名称:WRAL() */
613 /*说明:93c66 的写全部程序 */
C51 COMPILER V7.09 93C66TRY 10/31/2005 17:14:39 PAGE 11
614 /*输入: op_data 要写入的数据(16 位) */
615 /*输出: 读取的字数值 */
616 /***********************************************************************/
617 /*
618 unsigned char WRAL(unsigned int op_data)
619 {data unsigned char temp1;
620 data unsigned int temp2;
621 EWEN_93c66();
622 START_93c66();
623 SEND_DATA_93c66(0X04,0X03);
624 SEND_DATA_93c66(0X10,0X06);
625 SEND_DATA_93c66(op_data,0X10);
626 CS_93c66=0;
627 CS_93c66=1;
628 temp1=1;
629 temp2=50000; //设置一个最大延时等待数值.注意在不同的晶振下延时是不同的
630 while(!DO_93c66)
631 {temp2=temp2-1;
632 if(temp2==0)
633 {temp1=0;
634 break;
635 }
636 }
637 END_93c66();
638 EWDS_93c66();
639 return op_data;
640 }
641
642 */
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 775 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 2
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 + -