📄 16f877_modbus.c
字号:
}
}
else{
NumberDivide(*(point+XValue));
for(i=0;i<16;i++){
WriteData(NumberBuffer[i]);
}
}
LcdSelectBrush(line4,10);
return;
}
case 3:{
LcdSelectBrush(line1,Menu);
switch(MainSlave&0x01){
case 0x01:{
WriteCommand(0x81);
WriteData(0xb4);
WriteData(0xd3);
break;
}
case 0x00:{
switch(State){
case 0:{
WriteCommand(0x81);
WriteData(0xd6);
WriteData(0xf7);
break;
}
case 1:{
WriteCommand(0x81);
WriteData(0xb4);
WriteData(0xd3);
WriteData(0xa2);
WriteData(0xd9);
break;
}
case 2:{
WriteCommand(0x81);
WriteData(0xb4);
WriteData(0xd3);
WriteData(0xa2);
WriteData(0xda);
break;
}
case 3:{
WriteCommand(0x81);
WriteData(0xb4);
WriteData(0xd3);
WriteData(0xa2);
WriteData(0xdb);
break;
}
default:{
State=0;
WriteData(0xd6);
WriteData(0xf7);
}
}
break;
}
default:{
;
}
}
if(XValue==0x17){
switch(MainSlave&0x01){
case 0:{
LcdValueBrush(line2,0x17);
}
break;
case 1:{
LcdSelectBrush(line2,21);
}
break;
default:;
}
}
else LcdValueBrush(line2,XValue);
LcdSelectBrush(line3,9);
WriteCommand(line3);
if(XValue==0x17){
for(i=0;i<8;i++){
WriteData(0x20);
}
WriteData(0xa3);
WriteData(State+0xb0);
for(i=0;i<6;i++){
WriteData(0x20);
}
}
else{
NumberDivide(*(point+XValue));
for(i=0;i<16;i++){
WriteData(NumberBuffer[i]);
}
}
LcdSelectBrush(line4,11);
return;
}
default:return;
}
}
/*******************************************************************************
* Function Name : NumberDivide
* Description : NumberDivide
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void NumberDivide(uint n)
{
if(XValue==0x05){
NumberBuffer[0]=0x20;
NumberBuffer[1]=0x20;
NumberBuffer[2]=0x20;
NumberBuffer[3]=0x20;
NumberBuffer[4]=0x4d;
NumberBuffer[5]=0x6f;
NumberBuffer[6]=0x64;
NumberBuffer[7]=0x65;
NumberBuffer[8]=0x42;
NumberBuffer[9]=0x75;
NumberBuffer[10]=0x73;
NumberBuffer[11]=0x20;
NumberBuffer[12]=0x20;
NumberBuffer[13]=0x20;
NumberBuffer[14]=0x20;
NumberBuffer[15]=0x20;
return;
}
if(XValue==0x0b){
NumberBuffer[0]=0x20;
NumberBuffer[1]=0x20;
NumberBuffer[2]=0x20;
NumberBuffer[3]=0x20;
NumberBuffer[4]=0x20;
NumberBuffer[5]=0x20;
NumberBuffer[6]=0x20;
NumberBuffer[7]=0x20;
NumberBuffer[8]=0x20;
NumberBuffer[9]=0x20;
NumberBuffer[10]=0x20;
NumberBuffer[11]=0x20;
NumberBuffer[12]=0x20;
NumberBuffer[13]=0x20;
NumberBuffer[14]=0x20;
NumberBuffer[15]=0x20;
return;
}
if(XValue==0x0c){
NumberBuffer[0]=0x20;
NumberBuffer[1]=0x20;
NumberBuffer[2]=0x20;
NumberBuffer[3]=0x20;
NumberBuffer[4]=0x20;
NumberBuffer[5]=0x20;
NumberBuffer[6]=0x20;
NumberBuffer[7]=0x20;
NumberBuffer[8]=0x20;
NumberBuffer[9]=0x20;
NumberBuffer[10]=0x20;
NumberBuffer[11]=0x20;
NumberBuffer[12]=0x20;
NumberBuffer[13]=0x20;
NumberBuffer[14]=0x20;
NumberBuffer[15]=0x20;
return;
}
NumberBuffer[0]=0x20;
NumberBuffer[1]=0x20;
switch(PointTable[XValue]){
case 0:{
if(n>=1000){
NumberBuffer[2]=0x20;
NumberBuffer[3]=0x20;
NumberBuffer[4]=0xa3;
NumberBuffer[5]=(n/1000+0xB0);
NumberBuffer[6]=0xa3;
NumberBuffer[7]=((n%1000)/100+0xb0);
NumberBuffer[8]=0xa3;
NumberBuffer[9]=((n%100)/10+0xb0);
NumberBuffer[10]=0xa3;
NumberBuffer[11]=((n%10)+0xb0);
break;
}
if(n>=100){
NumberBuffer[2]=0x20;
NumberBuffer[3]=0x20;
NumberBuffer[4]=0x20;
NumberBuffer[5]=0x20;
NumberBuffer[6]=0xa3;
NumberBuffer[7]=((n/100)+0xb0);
NumberBuffer[8]=0xa3;
NumberBuffer[9]=((n%100)/10+0xb0);
NumberBuffer[10]=0xa3;
NumberBuffer[11]=(n%10+0xb0);
break;
}
if(n>=10){
NumberBuffer[2]=0x20;
NumberBuffer[3]=0x20;
NumberBuffer[4]=0x20;
NumberBuffer[5]=0x20;
NumberBuffer[6]=0x20;
NumberBuffer[7]=0x20;
NumberBuffer[8]=0xa3;
NumberBuffer[9]=(n/10+0xb0);
NumberBuffer[10]=0xa3;
NumberBuffer[11]=(n%10+0xb0);
break;
}
NumberBuffer[2]=0x20;
NumberBuffer[3]=0x20;
NumberBuffer[4]=0x20;
NumberBuffer[5]=0x20;
NumberBuffer[6]=0x20;
NumberBuffer[7]=0x20;
NumberBuffer[8]=0x20;
NumberBuffer[9]=0x20;
NumberBuffer[10]=0xa3;
NumberBuffer[11]=(n+0xb0);
break;
}
case 1:{
if(n>=1000){
NumberBuffer[2]=0xa3;
NumberBuffer[3]=(n/1000+0xB0);
NumberBuffer[4]=0xa3;
NumberBuffer[5]=((n%1000)/100+0xb0);
NumberBuffer[6]=0xa3;
NumberBuffer[7]=((n%100)/10+0xb0);
NumberBuffer[8]=0xa3;
NumberBuffer[9]=0xae;
NumberBuffer[10]=0xa3;
NumberBuffer[11]=((n%10)+0xb0);
break;
}
if(n>=100){
NumberBuffer[2]=0x20;
NumberBuffer[3]=0x20;
NumberBuffer[4]=0xa3;
NumberBuffer[5]=(n/100+0xb0);
NumberBuffer[6]=0xa3;
NumberBuffer[7]=((n%100)/10+0xb0);
NumberBuffer[8]=0xa3;
NumberBuffer[9]=0xae;
NumberBuffer[10]=0xa3;
NumberBuffer[11]=((n%10)+0xb0);
break;
}
if(n>=10){
NumberBuffer[2]=0x20;
NumberBuffer[3]=0x20;
NumberBuffer[4]=0x20;
NumberBuffer[5]=0x20;
NumberBuffer[6]=0xa3;
NumberBuffer[7]=(n/10+0xb0);
NumberBuffer[8]=0xa3;
NumberBuffer[9]=0xae;
NumberBuffer[10]=0xa3;
NumberBuffer[11]=(n%10+0xb0);
break;
}
NumberBuffer[2]=0x20;
NumberBuffer[3]=0x20;
NumberBuffer[4]=0x20;
NumberBuffer[5]=0x20;
NumberBuffer[6]=0xa3;
NumberBuffer[7]=0xb0;
NumberBuffer[8]=0xa3;
NumberBuffer[9]=0xae;
NumberBuffer[10]=0xa3;
NumberBuffer[11]=(n+0xb0);
break;
}
case 2:{
if(n>=1000){
NumberBuffer[2]=0xa3;
NumberBuffer[3]=(n/1000+0xB0);
NumberBuffer[4]=0xa3;
NumberBuffer[5]=((n%1000)/100+0xb0);
NumberBuffer[6]=0xa3;
NumberBuffer[7]=0xae;
NumberBuffer[8]=0xa3;
NumberBuffer[9]=((n%100)/10+0xb0);
NumberBuffer[10]=0xa3;
NumberBuffer[11]=((n%10)+0xb0);
break;
}
if(n>=100){
NumberBuffer[2]=0x20;
NumberBuffer[3]=0x20;
NumberBuffer[4]=0xa3;
NumberBuffer[5]=(n/100+0xb0);
NumberBuffer[6]=0xa3;
NumberBuffer[7]=0xae;
NumberBuffer[8]=0xa3;
NumberBuffer[9]=((n%100)/10+0xb0);
NumberBuffer[10]=0xa3;
NumberBuffer[11]=((n%10)+0xb0);
break;
}
if(n>=10){
NumberBuffer[2]=0x20;
NumberBuffer[3]=0x20;
NumberBuffer[4]=0xa3;
NumberBuffer[5]=0xb0;
NumberBuffer[6]=0xa3;
NumberBuffer[7]=0xae;
NumberBuffer[8]=0xa3;
NumberBuffer[9]=(n/10+0xb0);
NumberBuffer[10]=0xa3;
NumberBuffer[11]=(n%10+0xb0);
break;
}
NumberBuffer[2]=0x20;
NumberBuffer[3]=0x20;
NumberBuffer[4]=0xa3;
NumberBuffer[5]=0xb0;
NumberBuffer[6]=0xa3;
NumberBuffer[7]=0xae;
NumberBuffer[8]=0xa3;
NumberBuffer[9]=0xb0;
NumberBuffer[10]=0xa3;
NumberBuffer[11]=(n+0xb0);
break;
}
}
NumberBuffer[12]=0x20;
NumberBuffer[13]=0x20;
NumberBuffer[14]=0xa3;
NumberBuffer[15]=SigneTable[XValue];
}
/*******************************************************************************
* Function Name : SendDataHandle
* Description : SendDataHandle
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void SendDataHandle(void)
{
uchar i,n=0;
if(SendFlag>0){
SendFlag--;
if(Buffer0PointOut==Buffer0PointIn){
SendFlag=0;
return;
}
DataPoint=data_buf0;
for(i=0;i<6;i++){
*DataPoint++=*Buffer0PointOut++;
if(Buffer0PointOut==Buffer0+159)Buffer0PointOut=Buffer0;
}
RES:
n++;
if(n==3){
LcdErro=1;
LcdSelectBrush(line3,23);
return;
}
for(i=0;i<9;i++){
data_buf[i]=data_buf0[i];
}
UsartSendMain(6);
while(MainSendNoack==0){
UsartReceveSlave();
if(rece_ok==1){
rece_ok=0;
if(data_buf[1]==0x86)goto RES;
return;
}
}
MainSendNoack=0;
LcdErro=1;
LcdSelectBrush(line3,20);
return;
}
else{
Buffer0PointOut=Buffer0;
Buffer0PointIn=Buffer0;
}
}
/*******************************************************************************
* Function Name : Check
* Description : Check
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void Check(void)
{
if(LcdFlag==0)return;;
LcdFlag=0;
LcdScanTime++;
if(LcdScanTime<100)return;
LcdScanTime=0;
if((MainSlave&0x01)==0){
data_buf[0]=1;
data_buf[1]=3;
data_buf[2]=0;
data_buf[3]=0x1c;
data_buf[4]=0;
data_buf[5]=1;
UsartSendMain(6);
while(MainSendNoack==0){
CLRWDT;
UsartReceveSlave();
if(rece_ok==1){
rece_ok=0;
if(data_buf[1]==0x83)break;
buffer.b[1]=data_buf[3];
buffer.b[0]=data_buf[4];
x_number1[0x1c]=buffer.a;
break;
}
}
MainSendNoack=0;
data_buf[0]=1;
data_buf[1]=3;
data_buf[2]=0;
data_buf[3]=0x1d;
data_buf[4]=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -