📄 tools.i
字号:
} IicStop(); FgTimeout=0; if(ack==0) break; } Delay(75); IIcWP=1; } unsigned char IicReceiveByte(void) { unsigned char i; unsigned char bytedata=0; SDA=1; for(i=0;i<8;i++) { SCL=1; IicWait(); bytedata<<=1; if (SDA) bytedata |=0x01; SCL=0; IicWait(); } return bytedata; } bit IicSentByte(unsigned char bytedata) { unsigned char i; bit ack; for(i=0;i<8;i++) { if(bytedata & 0x80) { SDA=1; } else { SDA=0; } bytedata <<=1; IicWait(); SCL=1; IicWait(); SCL=0; IicWait(); } SDA=1; IicWait(); SCL=1; IicWait(); ack=SDA; SCL=0; IicWait(); return ack; } void IicStart(void) { SDA=1; SCL=1; IicWait(); SDA=0; IicWait(); SCL=0; } void IicStop(void) { SDA=0; IicWait(); SCL=1; IicWait(); SDA=1; } void IicWait(void) { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); } void SendAcknowledge(bit ack) { SDA=ack; SCL=1; IicWait(); SCL=0; } void LcdStart(void) { LcdCs=0; Delay(3); } void LcdStop(void) { LcdCs=1; Delay(3); } void LcdSendId(unsigned char ID) { unsigned char data i; for(i=3;i>0;i--) { LcdWr=0; Delay(3); if((ID&0x80)==0x80) { LcdData=1; } else { LcdData=0; } LcdWr=1; Delay(3); ID=ID<<1; } } void LcdSendAddress(unsigned char Address) { unsigned char data i; for(i=6;i>0;i--) { LcdWr=0; Delay(3); if((Address&0x80)==0x80) { LcdData=1; } else { LcdData=0;; } LcdWr=1; Delay(3); Address=Address<<1; } } void LcdSendByte(unsigned char Data) { unsigned char data i,k; for(i=2;i>0;i--) { for(k=4;k>0;k--) { LcdWr=0; Delay(3); if((Data&0x80)==0x80) { LcdData=1; } else { LcdData=0; } LcdWr=1; Delay(3); Data=Data<<1; } } } void LcdFull(unsigned char DataOne,unsigned char DataTwo,unsigned char DataThree,unsigned char DataFour) { unsigned char data i,j,k; unsigned char idata DataBufA[4],DataBufB[4]; unsigned char code Digit[12]={ 0xBE, 0x06, 0x7C, 0x5E, 0xC6, 0xDA, 0xFA, 0x0E, 0xFE, 0xDE, 0xf8, 0x40, }; DataBufA[0]=DataOne; DataBufA[1]=DataTwo; DataBufA[2]=DataThree; DataBufA[3]=DataFour; if(BataMoveFg==1) { for(i=0;i<4;i++) { k=DataBufA[i]; j=DataBufA[i+1]; k=k&0x0f; k=k<<4; j=j>>4; j=j&0x0f; DataBufB[i]=k|j; } } for(i=0;i<3;i++) { k=DataBufB[i] & 0xf0; k=k>>4; LcdShowBuf[i+i]=Digit[k]; k=DataBufB[i] & 0x0f; LcdShowBuf[i+i+1]=Digit[k]; } } void LcdDisplayData(unsigned char DataOne,unsigned char DataTwo,unsigned char DataThree,unsigned char DataFour,unsigned char DataFive,unsigned char DataSix,unsigned char DataSeven) { unsigned char data i; LcdShowBuf[6]=DataFive; LcdShowBuf[7]=DataSix; if(ComFg) { LcdShowBuf[7]=LcdShowBuf[7]|0x10; ComFg=0; ComTimeA=0; ComTimeB=0; } else { if(ComTimeB>=30) { LcdShowBuf[7]=LcdShowBuf[7]&0xef; } } if( ReverseFg) { LcdShowBuf[7]=LcdShowBuf[7]|0x40; } else { LcdShowBuf[7]=LcdShowBuf[7]&0xbf; } switch(DataSeven) { case 0x00 : LcdFull(DataOne,DataTwo,DataThree,DataFour); break; case 0x21 : LcdFull(DataOne,DataTwo,DataThree,DataFour); LcdShowBuf[1]=LcdShowBuf[1]|0x01; break; case 0x41 : LcdFull(DataOne,DataTwo,DataThree,DataFour); LcdShowBuf[1]=LcdShowBuf[1]|0x01; LcdShowBuf[3]=LcdShowBuf[3]|0x01; break; case 0x51 : LcdFull(DataOne,DataTwo,DataThree,DataFour); LcdShowBuf[4]=LcdShowBuf[4]|0x01; break; } LcdStart(); LcdSendId(0xa0); LcdSendAddress(0x00); for(i=0;i<8;i++) { LcdSendByte(LcdShowBuf[i]); Delay(3); } LcdStop(); Delay(3); } void LcdSendCommand(unsigned char Command) { unsigned char data i; LcdStart(); LcdSendId(0x80); for(i=0;i<9;i++) { LcdWr=0; Delay(3); if((Command&0x80)==0x80) { LcdData=1; } else { LcdData=0; } LcdWr=1; Delay(3); Command=Command<<1; } LcdStop(); } unsigned char HexToBcd(unsigned char Bytedata) { unsigned char ii,Byte; ii=0; while(Bytedata>0x0a) { Bytedata=Bytedata-0x0a; ii=ii+1; } Byte=16*ii+Bytedata; return Byte; } unsigned char BcdToHex(unsigned char Bytedata) { unsigned char i,j,Byte; i=Bytedata & 0xf0; j=Bytedata & 0x0f; Byte=10*(i>>4)+j; return Byte; } void DataSave(void) { unsigned char idata i,j,k,l; EA=0; j=0x00; l=0x60; for(i=0;i<5;i++) { k=HexToBcd(AddUpPulseData[i]); IicByteWrite(0xa0,j,k); k=HexToBcd(ReversePulseData[i]); IicByteWrite(0xa0,l,k); j++; l++; } EA=1; } void DataPickup(void) { unsigned char idata i,j,k; EA=0; j=0x00; k=0x60; for(i=0;i<5;i++) { AddUpPulseData[i]=BcdToHex(IicByteRead(0xa0,j)); ReversePulseData[i]=BcdToHex(IicByteRead(0xa0,k)); j++; k++; } EA=1; } void SeriesSend(void) { unsigned char idata i; SendDataBuf[0]=0x10; SendDataBuf[1]=0x10; SendDataBuf[4]=SendDataBuf[1]+SendDataBuf[2]+SendDataBuf[3]; SendDataBuf[5]=0x16; for(i=0;i<SendDataBuf[9]+11;i++) { SeriesSentByte(SendDataBuf[i]); } } void SeriesSentByte(unsigned char Byte) { unsigned char idata i,j,k; k=Byte; ES=0; for(i=0;i<8;i++) { if(k & 0x80) { j++; if(j==2) { j=0; } } k <<=1; } if(j==0) { TB8=0; } else { TB8=1; } SBUF=Byte; while(TI!=1); TI=0; ES=1; } void DataFill(void) { unsigned char data i; for(i=0;i<8;i++) { SendDataBuf[i]=InceptDataBuf[i]; } } void ToDay(unsigned char Day) { unsigned char data CheckSum ,i; for(i=0x1f;i<Day;i++) { if(IIcByteStar==0) { IIcByteStar=0xc0; } IIcByteStar=IIcByteStar-16; } DataFill(); CheckSum=0x00; SendDataBuf[8]=0x81; SendDataBuf[9]=18; IicMuchByteRead(0xa2,IIcByteStar,16); for(i=12;i<28;i++) { SendDataBuf[i]=IIcBuf[i-12]; } for(i=0;i<(SendDataBuf[9]+11);i++) { CheckSum=CheckSum+SendDataBuf[i]; } SendDataBuf[SendDataBuf[9]+10]=CheckSum; SendDataBuf[SendDataBuf[9]+11]=0x16; SeriesSend(); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -