⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 93c46.lst

📁 93c46读写程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 416   9                                                                ewen();
 417   9                                                                flash_number_bit=0x08;
 418   9                                                               }
 419   8                                                         else if((key_s&0x04)==0x00)
 420   8                                                            {
 421   9                                                                 if(++eeprom_data[6]==0x10)
 422   9                                                                    eeprom_data[6]=0x00;
 423   9                                                                 while(k2==0)
 424   9                                                                   {
 425  10                                                                        delay_1ms(200);
 426  10                                                                        if(k2==0)
 427  10                                                                         {
C51 COMPILER V7.07   93C46                                                                 05/15/2008 11:31:32 PAGE 8   

 428  11                                                                          delay_1ms(100);
 429  11                                                                          if(++eeprom_data[6]==0x10)
 430  11                                                                       eeprom_data[6]=0x00;
 431  11                                                                         }
 432  10                                                                       }
 433   9                                                                }
 434   8                                                         else if((key_s&0x02)==0x00)
 435   8                                                              {
 436   9                                                                        erase();
 437   9                                                                        for(i=0;i<10;i++)
 438   9                                        eeprom_data[i]=0x0f;
 439   9                                                                      }
 440   8                                                         else if((key_s&0x01)==0x00)
 441   8                                                              { 
 442   9                                                                        for(i=0;i<8;i++)
 443   9                                                                        write(i, eeprom_data[i]);
 444   9                                                                        ewds();
 445   9                                                                        flash_bit=1;
 446   9                                                                        key_number=0x00;
 447   9                                                                      }
 448   8                                                        }
 449   7                                                 }
 450   6                                              }while(key_number==0x07);
 451   5                                              //
 452   5                                              do
 453   5                                          {
 454   6                                               key_s=key_scan();
 455   6                                               if(key_s^key_v)
 456   6                                                 {
 457   7                                                  delay_1ms(10);
 458   7                                                      key_s=key_scan();
 459   7                                                       if(key_s^key_v)
 460   7                                                        {
 461   8                                                         key_v=key_s;
 462   8                                                         if((key_s&0x08)==0x00)
 463   8                                                           {
 464   9                                                                key_number=0x00;
 465   9                                                                ewen();
 466   9                                                                flash_number_bit=0x00;
 467   9                                                               }
 468   8                                                         else if((key_s&0x04)==0x00)
 469   8                                                            {
 470   9                                                                 if(++eeprom_data[7]==0x10)
 471   9                                                                    eeprom_data[7]=0x00;
 472   9                                                                 while(k2==0)
 473   9                                                                   {
 474  10                                                                        delay_1ms(200);
 475  10                                                                        if(k2==0)
 476  10                                                                         {
 477  11                                                                          delay_1ms(100);
 478  11                                                                          if(++eeprom_data[7]==0x10)
 479  11                                                                       eeprom_data[7]=0x00;
 480  11                                                                         }
 481  10                                                                       }
 482   9                                                                }
 483   8                                                         else if((key_s&0x02)==0x00)
 484   8                                                              {
 485   9                                                                        erase();
 486   9                                                                        for(i=0;i<10;i++)
 487   9                                        eeprom_data[i]=0x0f;
 488   9                                                                      }
 489   8                                                         else if((key_s&0x01)==0x00)
C51 COMPILER V7.07   93C46                                                                 05/15/2008 11:31:32 PAGE 9   

 490   8                                                              {
 491   9                                                                        for(i=0;i<8;i++)
 492   9                                                                        write(i, eeprom_data[i]);
 493   9                                                                        ewds();
 494   9                                                                        flash_bit=1;
 495   9                                                                        key_number=0x00;
 496   9                                                                      }
 497   8                                                        }
 498   7                                                 }
 499   6                                              }while(key_number==0x08);
 500   5                                              flash_bit=1;
 501   5                                       }
 502   4                              }
 503   3                      }
 504   2              }
 505   1      }
 506          
 507          
 508          void write(unsigned char addr, unsigned char indata)
 509          // 写入数据indata到addr
 510          {
 511   1              inop(OP_WRITE_H, addr); // 写入指令和地址
 512   1              shin(indata);
 513   1              CS = 0;
 514   1              delay_1ms(10);                  // Twp
 515   1      }
 516          
 517          unsigned char read(unsigned char addr)
 518          // 读取addr处的数据
 519          {
 520   1              unsigned char out_data;
 521   1              inop(OP_READ_H, addr);  // 写入指令和地址
 522   1              out_data = shout();
 523   1              CS = 0; 
 524   1              return out_data;
 525   1      }
 526          
 527          void ewen()
 528          //允许写
 529          {
 530   1              inop(OP_EWEN_H, OP_EWEN_L);
 531   1              CS= 0;
 532   1      }
 533          
 534          void ewds()
 535          //禁止写
 536          {
 537   1              inop(OP_EWDS_H, OP_EWDS_L);
 538   1              CS= 0;  
 539   1      }
 540          
 541          void erase()
 542          //擦除
 543          {
 544   1              inop(OP_ERAL_H, OP_ERAL_L);
 545   1              delay_1ms(30);
 546   1              CS = 0;
 547   1      }
 548          
 549          
 550           void inop(unsigned char op_h, unsigned char op_l)
 551           //写入指令和地址
C51 COMPILER V7.07   93C46                                                                 05/15/2008 11:31:32 PAGE 10  

 552            {unsigned char i;
 553   1         SK=0;
 554   1         DI=1;
 555   1         CS=1;
 556   1         SK=1;
 557   1         _nop_();
 558   1         SK=0;
 559   1         DI=(bit)(op_h&0x80);
 560   1         SK=1;
 561   1         op_h<<=1;
 562   1         SK=0;
 563   1         DI=(bit)(op_h&0x80);
 564   1         SK=1;
 565   1         _nop_();
 566   1         SK=0;
 567   1         op_l<<=1;
 568   1         for(i=0;i<7;i++)
 569   1          {
 570   2               DI=(bit)(op_l&0x80);
 571   2               SK=1;
 572   2               op_l<<=1;
 573   2               SK=0;
 574   2              }
 575   1         DI=1;
 576   1        }  
 577          
 578          void shin(unsigned char indata)         
 579          //移入数据
 580          {
 581   1              unsigned char i;
 582   1              for(i = 0; i < 8; i++)
 583   1              {
 584   2                      DI = (bit)(indata & 0x80);      // 先移入高位
 585   2                      SK = 1;
 586   2                      indata <<= 1;
 587   2                      SK = 0;         
 588   2              }
 589   1              DI = 1;
 590   1      }
 591          
 592          unsigned char shout(void)                       
 593          // 移出数据
 594          {
 595   1              unsigned char i, out_data;
 596   1              for(i = 0; i < 8; i++)
 597   1              {
 598   2                      SK = 0;
 599   2                      out_data <<= 1;
 600   2                      SK = 1;
 601   2                      out_data |= (unsigned char)DO;
 602   2              }
 603   1              return(out_data);
 604   1      }
 605          
 606          void delay_1ms(unsigned char ms)        
 607          // 延时子程序
 608          {                                               
 609   1              unsigned char i;
 610   1              while(ms--)
 611   1              {
 612   2                      for(i = 0; i < 120; i++);
 613   2              }
C51 COMPILER V7.07   93C46                                                                 05/15/2008 11:31:32 PAGE 11  

 614   1      }
 615          unsigned char key_scan()
 616          //按键扫描
 617          {
 618   1       unsigned char key_number;
 619   1       key_number=0x00;
 620   1       key_number|=k1;
 621   1       key_number<<=1;
 622   1       key_number|=k2;
 623   1       key_number<<=1;
 624   1       key_number|=k3;
 625   1       key_number<<=1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -