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

📄 stccoinbox.lst

📁 投币按摩椅驱动程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 565          
 566          void Delay()
 567          {
 568   1         // {P10=1;_nop_();P10=0;}
 569   1          Nop;
 570   1          Nop; /*根据晶振频率制定延时时间*/
 571   1      }
 572          /*
 573          void DelaymS(uint time)
 574          {
 575                  Delay_ms=time;
 576                  while(Delay_ms);
 577          }
 578          */
 579          void delay_20ms()    //20ms
 580          {
 581   1      bDelay20mS=1;
 582   1      while(bDelay20mS);
 583   1      }
 584          
 585          
 586          void delay_160ms()    //160ms
 587          {uchar nCnt;
 588   1      for(nCnt=0;nCnt<8;nCnt++)       
 589   1      {
 590   2      bDelay20mS=1;
 591   2      while(bDelay20mS);
 592   2      }
 593   1      }
 594          
 595          /*
 596          //延时500ms秒
 597          
 598          void delay_500ms()
 599          {
 600            uchar  nCnt;
 601            for(nCnt=0;nCnt<2;nCnt++)
 602              delay_160ms();
 603          }
 604          */
 605          //延时1S
 606          /*
 607          void delay_1s()     //1s
 608          {
 609          bDelay1S=1;
 610          }
C51 COMPILER V7.06   STCCOINBOX                                                            11/10/2007 10:37:46 PAGE 11  

 611          */
 612          //延时1S
 613          void Start(void)
 614          { //EA=0;
 615   1              bScl = 1;
 616   1              bSda = 1;
 617   1              Delay();
 618   1              bSda = 0;
 619   1              Delay();
 620   1              bScl =0;
 621   1      }
 622          void Stop(void)
 623          {
 624   1              bSda = 0;
 625   1              bScl = 1;
 626   1              Delay();
 627   1              bSda = 1;
 628   1              Delay(); 
 629   1              //EA=1;
 630   1      }
 631          bit CheckAck()
 632          {
 633   1              bit bEepromAck ;
 634   1              Delay();
 635   1              bScl = 1 ;
 636   1              Delay();
 637   1              bEepromAck = bSda ;
 638   1              Delay();
 639   1              bScl = 0 ;
 640   1              Delay();
 641   1              return bEepromAck ;
 642   1      }
 643          void Ack(void)
 644          {
 645   1              bSda = 0;
 646   1              Delay();
 647   1              bScl = 1;   //clock:falling edge
 648   1              Delay();
 649   1              bScl = 0;
 650   1              Delay();
 651   1      }
 652          void NoAck(void)
 653          {
 654   1              bSda =1;
 655   1              Delay();
 656   1              bScl = 1;
 657   1              Delay();
 658   1              bScl = 0;
 659   1              Delay();
 660   1      }
 661          
 662          /*******************************************************/
 663          uchar ReadOneByte()
 664          {
 665   1              bit bReadBit ;
 666   1              uchar nCnt,nTemp ;
 667   1              nTemp = 0x00 ;
 668   1              for(nCnt=0;nCnt<8;nCnt++)
 669   1              {
 670   2                      nTemp = nTemp<< 1 ;
 671   2                      Delay();
 672   2                      bScl = 1;       //high level continue for a while ,then read a bit 
C51 COMPILER V7.06   STCCOINBOX                                                            11/10/2007 10:37:46 PAGE 12  

 673   2                      Delay();
 674   2                      bReadBit = bSda;
 675   2                      bScl = 0;
 676   2                      if(bReadBit)
 677   2                      {
 678   3                              nTemp = nTemp | 0x01 ;
 679   3                      } 
 680   2                      else 
 681   2                      {
 682   3                          nTemp = nTemp & 0xfe ;
 683   3                      }
 684   2              }
 685   1              return nTemp ;
 686   1      }
 687          /*******************************************************/
 688          void WriteOneByte(uchar nData)
 689          {
 690   1              uchar nCnt ;
 691   1              for(nCnt=0;nCnt<8;nCnt++)
 692   1              {
 693   2                      if((nData & 0x80) == 0x80)
 694   2                      {
 695   3                              bSda = 1 ;
 696   3                      }
 697   2                      else
 698   2                      {
 699   3                              bSda = 0 ;
 700   3                      }
 701   2                      Delay();
 702   2                      bScl = 1;
 703   2                      Delay();
 704   2                      bScl = 0;
 705   2                      Delay();
 706   2                      nData = nData << 1 ;
 707   2              }
 708   1      }
 709          /*******************************************************/
 710          bit WaitWriteEnd()
 711          {
 712   1              bit bEepromAck;
 713   1              unsigned int nCounter;
 714   1              nCounter = 0;
 715   1              while(1)
 716   1              {
 717   2                      Start();
 718   2                      WriteOneByte(ReadCommand);
 719   2                      bSda = 1;
 720   2                      bEepromAck = CheckAck();
 721   2                      if(bEepromAck ==0) 
 722   2                      {
 723   3                              ReadOneByte();
 724   3                              NoAck();
 725   3                              return TRUE;
 726   3                      }
 727   2                      nCounter++;
 728   2                      if(nCounter>=0xfff)
 729   2                      {
 730   3                              return FALSE;
 731   3                      }
 732   2              }
 733   1      }         
 734          /*******************************************************/
C51 COMPILER V7.06   STCCOINBOX                                                            11/10/2007 10:37:46 PAGE 13  

 735          
 736          bit ReadFromRom(uchar * nData,uchar nAddress,uchar nNum)
 737          {
 738   1              bit bEepromAck ;
 739   1              uchar nCnt;
 740   1              Start();
 741   1              //WP=0;
 742   1              WriteOneByte(WriteCommand);
 743   1              //WP=1;
 744   1              bSda = 1 ;
 745   1              bEepromAck = CheckAck();
 746   1              if(bEepromAck==1) return FALSE ; 
 747   1              //WP=0;
 748   1              WriteOneByte(nAddress);
 749   1              //WP=1;
 750   1              bSda = 1 ;
 751   1              bEepromAck = CheckAck();
 752   1              if(bEepromAck==1) return FALSE ;
 753   1              Start();
 754   1              //WP=0;
 755   1              WriteOneByte(ReadCommand);
 756   1              //WP=1;
 757   1              bSda = 1 ;
 758   1              bEepromAck = CheckAck();
 759   1              if(bEepromAck==1) return FALSE ;
 760   1              for(nCnt=0;nCnt<nNum;nCnt++)
 761   1              {
 762   2                      nData[nCnt] = ReadOneByte();
 763   2                      if(nCnt!=(nNum-1))
 764   2                      {
 765   3                              Ack();
 766   3                              bSda = 1 ;
 767   3                      }
 768   2                      else
 769   2                      {
 770   3                              NoAck(); 
 771   3                      }
 772   2              }
 773   1              Stop();
 774   1              return TRUE ;
 775   1              
 776   1              
 777   1      }
 778          /*
 779          uchar ByteReadFromRom(uchar nAddress)
 780          {
 781                  bit bEepromAck ;
 782                  uchar nData;
 783                  Start();
 784                  //WP=0;
 785                  WriteOneByte(WriteCommand);
 786                  //WP=1;
 787                  bSda = 1 ;
 788                  bEepromAck = CheckAck();
 789                  if(bEepromAck==1) return FALSE ; 
 790                  //WP=0;
 791                  WriteOneByte(nAddress);
 792                  //WP=1;
 793                  bSda = 1 ;
 794                  bEepromAck = CheckAck();
 795                  if(bEepromAck==1) return FALSE ;
 796                  Start();
C51 COMPILER V7.06   STCCOINBOX                                                            11/10/2007 10:37:46 PAGE 14  

 797                  //WP=0;
 798                  WriteOneByte(ReadCommand);
 799                  //WP=1;
 800                  bSda = 1 ;
 801                  bEepromAck = CheckAck();
 802                  if(bEepromAck==1) return FALSE ;
 803                  nData = ReadOneByte();  
 804            NoAck(); 
 805            Stop();
 806                  return nData ;
 807          }
 808          */
 809          bit WriteToRom(uchar * nData,uchar nAddress,uchar nNum)
 810          {
 811   1              bit bEepromAck ;
 812   1              uchar nCnt;
 813   1              Start();
 814   1              WriteOneByte(WriteCommand);
 815   1              bSda = 1 ;
 816   1              bEepromAck = CheckAck();
 817   1              if(bEepromAck == 1) return FALSE ;
 818   1              WriteOneByte(nAddress);
 819   1              bSda = 1 ;
 820   1              bEepromAck = CheckAck();
 821   1              if(bEepromAck == 1) return FALSE ;
 822   1              for(nCnt=0;nCnt<nNum;nCnt++)
 823   1              {
 824   2                      WriteOneByte(nData[nCnt]) ;
 825   2                      bSda = 1 ;
 826   2                      bEepromAck = CheckAck();
 827   2                      if(bEepromAck == 1) return FALSE ;
 828   2              }
 829   1              Stop();
 830   1              if((WaitWriteEnd() == FALSE))
 831   1              {
 832   2                      return FALSE;
 833   2              }
 834   1              //Delay100us(200); //在STOP命令发出后,24C02开始写,在约20MS
 835   1              return TRUE;
 836   1      }
 837          /********************************************************/
 838          bit ByteWriteToRom(uchar nAddress,uchar nData)
 839          {
 840   1              bit bEepromAck;
 841   1              Start();
 842   1              WriteOneByte(WriteCommand);
 843   1              bSda = 1;
 844   1              bEepromAck = CheckAck();
 845   1              if(bEepromAck ==1) return FALSE;
 846   1              WriteOneByte(nAddress);
 847   1              bSda = 1;
 848   1              bEepromAck = CheckAck();
 849   1              if(bEepromAck ==1) return FALSE;
 850   1              WriteOneByte(nData);
 851   1              bSda = 1;
 852   1              bEepromAck = CheckAck();
 853   1              if(bEepromAck ==1) return FALSE;

⌨️ 快捷键说明

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