📄 16f877_modbus.c
字号:
case 6:{
switch(Menu){
case 0:{
XValue++;
if(XValue==0x0c)XValue=0;
return;
}
case 1:{
XValue++;
if(XValue==0x1b)XValue=0x0c;
return;
}
default:return;
}
}
case 3:{
switch(Menu){
case 0:{
if(XValue==0)XValue=0x0c;
XValue--;
return;
}
case 1:{
if(XValue==0x0c)XValue=0x1b;
XValue--;
return;
}
default:return;
}
}
case 5:{
if((XValue==0x0b)||(XValue==0x0c)){
Tree=1;
return;
}
Tree=3;
return;
}
default:return;
}
}
case 3:{
switch(MainSlave&0x01){
case 0x00:{
switch(State){
case 0:{
point=x_number;
break;
}
case 1:{
point=x_number1;
break;
}
case 2:{
point=x_number2;
break;
}
case 3:{
point=x_number3;
break;
}
default:{
State=0;
point=x_number;
Tree=2;
return;
}
}
break;
}
case 0x01:{
point=x_number;
break;
}
default:;
}
switch(KeyValue&0x07){
case 6:{
if(XValue==0x17){
State++;
if(State==0x04)State=0;
if((MainSlave&0x01)==0x00){
return;
}
else{
(*(point+XValue))++;
if((*(point+XValue))>NumberH[XValue])(*(point+XValue))=NumberL[XValue];
State=*(point+XValue);
return;
}
}
if(XValue==0x16){
MainSlave++;
point=x_number;
if((MainSlave&0x01)==0){
x_number[0x16]=0;
SendFlag=0;
Buffer0PointIn=Buffer0;
Buffer0PointOut=Buffer0;
return;
}
else{
x_number[0x16]=1;
rece_counter=0;
BufferPointIn=Buffer;
BufferPointOut=Buffer;
return;
}
}
(*(point+XValue))++;
if((*(point+XValue))>NumberH[XValue])(*(point+XValue))=NumberL[XValue];
return;
}
case 3:{
if(XValue==0x17){
if(State==0)State=4;
State--;
if((MainSlave&0x01)==0x00){
return;
}
else{
if((*(point+XValue))==NumberL[XValue]){
(*(point+XValue))=NumberH[XValue];
State=*(point+XValue);
return;
}
(*(point+XValue))--;
State=*(point+XValue);
return;
}
}
if(XValue==0x16){
MainSlave--;
point=x_number;
if((MainSlave&0x01)==0){
x_number[0x16]=0;
SendFlag=0;
Buffer0PointIn=Buffer0;
Buffer0PointOut=Buffer0;
return;
}
else{
x_number[0x16]=1;
rece_counter=0;
BufferPointIn=Buffer;
BufferPointOut=Buffer;
return;
}
}
if((*(point+XValue))==NumberL[XValue]){
(*(point+XValue))=NumberH[XValue];
return;
}
(*(point+XValue))--;
return;
}
case 5:{
Tree=2;
if(XValue==0x1a){
if((MainSlave&0x01)==0x00){
if(State==0x00){
if(x_number[0x1a]==1){
x_number[0x1a]=0x00;
rom_toram(22);
ram_toee(22);
CLRWDT;
return;
}
}
}
else{
if(x_number[0x1a]==1){
x_number[0x1a]=0x00;
rom_toram(22);
ram_toee(22);
CLRWDT;
return;
}
}
}
if(XValue==0x16){
writeee2b(x_number[0x16],0x16*2);
CLRWDT;
writeee2b(x_number[0x16],(0x16*2+52));
CLRWDT;
writeee2b(x_number[0x16],(0x16*2+104));
CLRWDT;
return;
}
if(XValue==0x17){
if((MainSlave&0x01)==0x01){
writeee2b(x_number[0x17],0x17*2);
CLRWDT;
writeee2b(x_number[0x17],(0x17*2+52));
CLRWDT;
writeee2b(x_number[0x17],(0x17*2+104));
CLRWDT;
}
return;
}
if((MainSlave&0x01)==1){
writeee2b(x_number[XValue],XValue*2);
CLRWDT;
writeee2b(x_number[XValue],(XValue*2+52));
CLRWDT;
writeee2b(x_number[XValue],(XValue*2+104));
CLRWDT;
return;
}
if((MainSlave&0x01)==0){
if(State==0){
writeee2b(x_number[XValue],XValue*2);
CLRWDT;
writeee2b(x_number[XValue],(XValue*2+52));
CLRWDT;
writeee2b(x_number[XValue],(XValue*2+104));
CLRWDT;
return;
}
}
SendFlag++;
buffer.a=*(point+XValue);
*Buffer0PointIn++=State;
if(Buffer0PointIn==&Buffer0[159])Buffer0PointIn=Buffer0;
if(Buffer0PointIn==Buffer0PointOut){
Buffer0PointIn=Buffer0;
Buffer0PointOut=Buffer0;
SendFlag=0;
return;
}
*Buffer0PointIn++=6;
if(Buffer0PointIn==&Buffer0[159])Buffer0PointIn=Buffer0;
if(Buffer0PointIn==Buffer0PointOut){
Buffer0PointIn=Buffer0;
Buffer0PointOut=Buffer0;
SendFlag=0;
return;
}
*Buffer0PointIn++=0;
if(Buffer0PointIn==&Buffer0[159])Buffer0PointIn=Buffer0;
if(Buffer0PointIn==Buffer0PointOut){
Buffer0PointIn=Buffer0;
Buffer0PointOut=Buffer0;
SendFlag=0;
return;
}
*Buffer0PointIn++=XValue;
if(Buffer0PointIn==&Buffer0[159])Buffer0PointIn=Buffer0;
if(Buffer0PointIn==Buffer0PointOut){
Buffer0PointIn=Buffer0;
Buffer0PointOut=Buffer0;
SendFlag=0;
return;
}
*Buffer0PointIn++=buffer.b[1];
if(Buffer0PointIn==&Buffer0[159])Buffer0PointIn=Buffer0;
if(Buffer0PointIn==Buffer0PointOut){
Buffer0PointIn=Buffer0;
Buffer0PointOut=Buffer0;
SendFlag=0;
return;
}
*Buffer0PointIn++=buffer.b[0];
if(Buffer0PointIn==&Buffer0[159])Buffer0PointIn=Buffer0;
if(Buffer0PointIn==Buffer0PointOut){
Buffer0PointIn=Buffer0;
Buffer0PointOut=Buffer0;
SendFlag=0;
return;
}
return;
}
default:return;
}
}
default:asm("RESET");
}
}
/*******************************************************************************
* Function Name : LcdSelectBrush
* Description : LcdSelectBrush
* Input :
* Output : None
* Return : None
*******************************************************************************/
void LcdSelectBrush(uchar line,uchar num)
{
uchar i;
WriteCommand(line);
for(i=0;i<16;i++){
WriteData(SelectTable[num][i]);
}
}
/*******************************************************************************
* Function Name : LcdUserBrush
* Description : LcdUserBrush
* Input :
* Output : None
* Return : None
*******************************************************************************/
void LcdValueBrush(uchar line,uchar x)
{
uchar i;
WriteCommand(line);
for(i=0;i<16;i++){
WriteData(ValueTable[x][i]);
}
}
/*******************************************************************************
* Function Name : Init
* Description : Init
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void Init(void)
{
Tree=0;
LcdFlag=1;
MainSendNoack=0;
point=x_number;
x_number[0x1b]=0;
x_number[0x1c]=0;
x_number1[0x1b]=0;
x_number1[0x1c]=0;
x_number2[0x1b]=0;
x_number2[0x1c]=0;
x_number3[0x1b]=0;
x_number3[0x1c]=0;
x_number[0x1a]=0;
BufferPointIn=Buffer;
BufferPointOut=Buffer;
Buffer0PointIn=Buffer0;
Buffer0PointOut=Buffer0;
TMR0ON=0;
MainSlave=x_number[0x16];
State=x_number[0x17];
}
/*******************************************************************************
* Function Name : LcdBrush
* Description : LcdBrush
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void LcdBrush(void)
{
uchar i;
if(LcdErro==1){
if(LcdFlag==0)return;
LcdFlag=0;
LcdScanTime++;
if(LcdScanTime<100)return;
LcdScanTime=0;
LcdErro=0;
return;
}
if(LcdFlag==0)return;
LcdFlag=0;
LcdScanTime++;
if(LcdScanTime<100)return;
LcdScanTime=0;
switch(Tree){
case 0:{
LcdSelectBrush(line1,4);
LcdSelectBrush(line2,5);
LcdSelectBrush(line3,6);
LcdSelectBrush(line4,7);
return;
}
case 1:{
LcdSelectBrush(line1,4);
LcdSelectBrush(line2,8);
LcdSelectBrush(line3,Menu);
LcdSelectBrush(line4,10);
return;
}
case 2:{
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:{
;
}
}
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);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -