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

📄 stccoinboxnew.lst

📁 投币按摩椅驱动程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 858   3                      }
 859   2              }
 860   1              Stop();
 861   1              EA=1;
 862   1              return TRUE ;
 863   1              
 864   1              
 865   1      }
 866          /*
 867          uchar ByteReadFromRom(uchar nAddress)
 868          {
 869                  bit bEepromAck ;
 870                  uchar nData;
 871                  Start();
 872                  //WP=0;
 873                  WriteOneByte(WriteCommand);
 874                  //WP=1;
 875                  bSda = 1 ;
 876                  bEepromAck = CheckAck();
 877                  if(bEepromAck==1) return FALSE ; 
 878                  //WP=0;
 879                  WriteOneByte(nAddress);
 880                  //WP=1;
 881                  bSda = 1 ;
 882                  bEepromAck = CheckAck();
 883                  if(bEepromAck==1) return FALSE ;
 884                  Start();
 885                  //WP=0;
 886                  WriteOneByte(ReadCommand);
 887                  //WP=1;
 888                  bSda = 1 ;
 889                  bEepromAck = CheckAck();
 890                  if(bEepromAck==1) return FALSE ;
 891                  nData = ReadOneByte();  
 892            NoAck(); 
 893            Stop();
 894                  return nData ;
 895          }
 896          */
 897          bit WriteToRom(uchar * nData,uchar nAddress,uchar nNum)
 898          {
 899   1              bit bEepromAck ;
 900   1              uchar nCnt;
 901   1              EA=0;
 902   1              Start();
 903   1              WriteOneByte(WriteCommand);
 904   1              bSda = 1 ;
 905   1              bEepromAck = CheckAck();
 906   1              if(bEepromAck == 1) return FALSE ;
 907   1              WriteOneByte(nAddress);
 908   1              bSda = 1 ;
 909   1              bEepromAck = CheckAck();
 910   1              if(bEepromAck == 1) return FALSE ;
 911   1              for(nCnt=0;nCnt<nNum;nCnt++)
 912   1              {
 913   2                      WriteOneByte(nData[nCnt]) ;
 914   2                      bSda = 1 ;
C51 COMPILER V8.05a   STCCOINBOXNEW                                                        01/26/2008 08:39:50 PAGE 16  

 915   2                      bEepromAck = CheckAck();
 916   2                      if(bEepromAck == 1) return FALSE ;
 917   2              }
 918   1              Stop();
 919   1              
 920   1              if((WaitWriteEnd() == FALSE))
 921   1              {
 922   2                      EA=1;
 923   2                      return FALSE;
 924   2              }
 925   1              //Delay100us(200); //在STOP命令发出后,24C02开始写,在约20MS
 926   1              EA=1;
 927   1              return TRUE;
 928   1      }
 929          /********************************************************/
 930          bit ByteWriteToRom(uchar nAddress,uchar nData)
 931          {
 932   1              bit bEepromAck;
 933   1              EA=0;
 934   1              Start();
 935   1              WriteOneByte(WriteCommand);
 936   1              bSda = 1;
 937   1              bEepromAck = CheckAck();
 938   1              if(bEepromAck ==1) return FALSE;
 939   1              WriteOneByte(nAddress);
 940   1              bSda = 1;
 941   1              bEepromAck = CheckAck();
 942   1              if(bEepromAck ==1) return FALSE;
 943   1              WriteOneByte(nData);
 944   1              bSda = 1;
 945   1              bEepromAck = CheckAck();
 946   1              if(bEepromAck ==1) return FALSE;
 947   1              Stop();
 948   1              if((WaitWriteEnd() == FALSE))
 949   1              {EA=1;
 950   2                      return FALSE;
 951   2              }
 952   1              EA=1;
 953   1              //Delay100us(100);
 954   1              return TRUE;
 955   1      }
 956          /////////////////////////////////////////////////////////
 957          
 958          /********************************************
 959          内部函数,输出ACK ,每个字节传输完成,输出ack=0,结束读书据,ack=1;
 960          ********************************************/
 961          /*
 962          void WriteACK(uchar ack)
 963          {
 964             bSda=ack;
 965             Delay();
 966             bScl=1;
 967             Delay();
 968             bScl=0;
 969          }
 970          */
 971          /********************************************
 972          内部函数,等待ACK
 973          ********************************************/
 974          /*
 975          void WaitACK()
 976          {  uchar errtime=20;
C51 COMPILER V8.05a   STCCOINBOXNEW                                                        01/26/2008 08:39:50 PAGE 17  

 977             bSda=1;
 978             Delay(); //读ACK
 979             bScl=1;
 980             Delay();
 981             while(bSda)
 982             {  errtime--;
 983                if(!errtime) Stop();
 984             }
 985             bScl=0;
 986             Delay();
 987          }
 988          */
 989          /********************************************
 990          内部函数.输出数据字节
 991          入口:B=数据
 992          ********************************************/
 993          /*
 994          void writebyte(uchar wdata)
 995          {
 996             uchar nCnt;
 997             for(nCnt=0;nCnt<8;nCnt++)
 998             {
 999                 if(wdata&0x80) bSda=1;
1000                 else bSda=0;
1001                 wdata<<=1;
1002                 bScl=1;
1003                 Delay();
1004                 bScl=0;
1005             }
1006             WaitACK();     //I2C器件或通讯出错,将会退出I2C通讯
1007          }
1008          
1009          */
1010          /********************************************
1011          内部函数.输入数据
1012          出口:B
1013          ********************************************/
1014          /*
1015          uchar Readbyte()
1016          {
1017             uchar nCnt,bytedata;
1018             bSda=1;
1019             for(nCnt=0;nCnt<8;nCnt++)
1020             {
1021                bScl=1; 
1022                bytedata<<=1;
1023                bytedata|=bSda;
1024                bScl=0;
1025                Delay();
1026             }
1027             return(bytedata);
1028          }
1029          */
1030          /********************************************
1031          输出数据->pcf8563
1032          ********************************************/
1033          /*
1034          void writeData(uchar address,uchar mdata)
1035          {
1036             Start();
1037             WriteOneByte(0xa2); //写命令//
1038             WriteOneByte(address); //写地址//
C51 COMPILER V8.05a   STCCOINBOXNEW                                                        01/26/2008 08:39:50 PAGE 18  

1039             WriteOneByte(mdata); //写数据//
1040             Stop();
1041          }
1042           */
1043           void writeData(uchar address,uchar mdata)
1044          {bit bEepromAck ;
1045   1              EA=0;
1046   1              Start();
1047   1              WriteOneByte(0xa2);
1048   1              bSda = 1;
1049   1                      bEepromAck = CheckAck();
1050   1              WriteOneByte(address);
1051   1              bSda = 1;
1052   1                      bEepromAck = CheckAck();
1053   1              WriteOneByte(mdata);
1054   1              bSda = 1;
1055   1                      bEepromAck = CheckAck();
1056   1              Stop();
1057   1              EA=1;
1058   1      }
1059           
1060          
1061                  
1062          /********************************************
1063          输入数据<-pcf8563
1064          ********************************************/
1065          uchar ReadData(uchar address) /*单字节*/
1066          {  uchar rdata;
1067   1              bit bEepromAck ;
1068   1         Start();
1069   1         WriteOneByte(0xa2); /*写命令*/
1070   1          bSda = 1 ;
1071   1              bEepromAck = CheckAck();
1072   1              if(bEepromAck==1) return FALSE ;
1073   1         WriteOneByte(address); /*写地址*/
1074   1           bSda = 1 ;
1075   1              bEepromAck = CheckAck();
1076   1              if(bEepromAck==1) return FALSE ;
1077   1         Start();
1078   1         WriteOneByte(0xa3); /*读命令*/
1079   1          bSda = 1 ;
1080   1              bEepromAck = CheckAck();
1081   1              if(bEepromAck==1) return FALSE ;
1082   1         rdata=ReadOneByte();
1083   1        NoAck(); 
1084   1        Stop();
1085   1         return(rdata);
1086   1      }
1087          void ReadData1(uchar address,uchar count,uchar * buff) /*多字节*/
1088          {  bit bEepromAck;
1089   1              uchar nCnt;
1090   1         Start();
1091   1         WriteOneByte(0xa2); /*写命令*/
1092   1          bSda = 1 ;
1093   1              bEepromAck = CheckAck();
1094   1              if(bEepromAck==1) return ;//FALSE;
1095   1         WriteOneByte(address); /*写地址*/
1096   1       bSda = 1 ;
1097   1              bEepromAck = CheckAck();
1098   1              if(bEepromAck==1) return;// FALSE;
1099   1              Start();
1100   1              //WP=0;
C51 COMPILER V8.05a   STCCOINBOXNEW                                                        01/26/2008 08:39:50 PAGE 19  

1101   1         WriteOneByte(0xa3); /*读命令*/
1102   1        bSda = 1 ;
1103   1              bEepromAck = CheckAck();
1104   1              if(bEepromAck==1) return;// FALSE;
1105   1              //Start();
1106   1         for(nCnt=0;nCnt<count;nCnt++)
1107   1         {
1108   2              buff[nCnt]=ReadOneByte();
1109   2              if(nCnt!=count-1)
1110   2                      {
1111   3                              Ack();
1112   3                              bSda = 1 ;
1113   3                      }
1114   2                      else
1115   2                      {
1116   3                              NoAck(); 
1117   3                      }
1118   2         }
1119   1         Stop();
1120   1      }
1121          
1122          
1123          /********************************************
1124          内部函数,读入时间到内部缓冲区
1125          ********************************************/
1126          void P8563_Read()
1127          {   uchar idata time[7];
1128   1          ReadData1(0x02,0x07,time);
1129   1          g8563_Store[0]=time[0]&0x7f;//&0x7f; /*秒*/
1130   1          g8563_Store[1]=time[1]&0x7f;//time[1]&0x7f; /*分*/
1131   1          g8563_Store[2]=time[2]&0x3f; /*小时*/
1132   1          g8563_Store[3]=time[3]&0x3F; /*日*/
1133   1          g8563_Store[4]=time[4]&0x07; /*星期*/
1134   1          g8563_Store[5]=time[5]&0x1F; /*月*/
1135   1          g8563_Store[6]=time[6]&0xFF; /*年*/
1136   1      }
1137          /********************************************
1138          读入时间到内部缓冲区----外部调用 
1139          ********************************************/
1140          void P8563_gettime()
1141          {
1142   1          P8563_Read();
1143   1          if(g8563_Store[0]==0)
1144   1            P8563_Read(); /*如果为秒=0,为防止时间变化,再读一次*/
1145   1      }
1146          /********************************************
1147          写时间修改值
1148          ********************************************/
1149          void P8563_settime()
1150          {

⌨️ 快捷键说明

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