📄 txd232.c
字号:
void Initre()
{
if (RXBUF0==0x68)
{
relong=1;
reflag&=0xfc;
}
else
{
relong=0;
reflag&=0xfc;
}
}
////////////////////////////////////////////////
interrupt [UART0RX_VECTOR] void UART0RX(void)
{
unsigned char temp,temp1;
if (((unsigned int)recount)==0xff)
{
if(relong>7)
{
psave=psave-(relong-8);
recount=recount-(relong-8);
Initre();
}
else
{
Initre();
}
}
else
{
if (relong==0)
{
if (RXBUF0==0x68) relong++;
else
{
Initre();
}
}
else if(0<relong&&relong<7)
{
temp1=Read_256(0x64c1-relong*2-1)*16+(Read_256(0x64c1-relong*2)%16);
if ((reflag&0x03)==0)
{
if(RXBUF0==0xff)
{
relong++;
reflag&=0xfc;
reflag|=0x02;
}
else if(RXBUF0==temp1)
{
relong++;
reflag&=0xfc;
reflag|=0x01;
}
else
{
Initre();
}
}
else if((reflag&0x03)==1)
{
if (RXBUF0==temp1) relong++;
else
{
Initre();
}
}
else if((reflag&0x03)==2)
{
if (RXBUF0==0xff) relong++;
else
{
Initre();
}
}
}
else if(relong==7)
{
if (RXBUF0==0x68) relong++;
else
{
Initre();
}
}
else if(relong==8)
{
temp=RXBUF0;
temp=temp|(reflag<<7);///////功能码
Write_256(0x7800+psave,temp);
recount++;
relong++;
psave++;
}
else if(relong==9)
{
bagcount=RXBUF0;
Write_256(0x7800+psave,bagcount)
recount++;
relong++;
psave++;
}
else
{
if (relong-10<=bagcount)
{
temp=RXBUF0;
Write_256(0x7800+psave,temp);
recount++;
relong++;
psave++;
}
else
{
if (RXBUF0==0x16)
{
reflag+=0x04;
Initre();
}
else
{
psave=psave-(relong-8);
recount=recount-(relong-8);
Initre();
}
}
}
}
}
///////////////////////////////////////
interrupt [UART1RX_VECTOR] void UART1RX(void)
{
if (sendlong==0xff)
{
timeout=0;
}
else
{
Write_256(0x7900+sendlong,RXBUF1);
if (sendlong==0)
{
if (RXBUF1==0x68)
{
sendlong++;
cs=0x68;
}
}
else if(sendlong==9)
{
re485long=RXBUF1;
sendlong++;
cs=cs+re485long;
}
else if(sendlong==re485long+10)
{
if (cs==RXBUF1)
sendlong++;
else
timeout=0;
}
else if(sendlong==re485long+11)
{
if(RXBUF1==0x16)
{
sendlong++;
timeout|=0x40;
}
else
timeout=0;
}
else
{
sendlong++;
cs=cs+RXBUF1;
}
}
}
///////////////////////////////////////
void Transmission()
{
unsigned char temp,temp1,l;
if((timeout&0x80)==0x80)
{
if ((timeout&0x40)==0x40)
{
Send(0,0x7900,0);
timeout=0;
P5OUT|=BIT5;
}
else if(kalendar_clk[6]>=(((kalendar_clk[6]+5)/60*60)+(timeout&0x3f)))
{
timeout=0;
P5OUT|=BIT5;
Trcom();
}
}
else
{
if((reflag&0xfc)!=0)
{
temp1=Cscala();
l=ppop+1;
temp=Read_256(0x7800+l);
l=ppop+temp+2;
temp=Read_256(0x7800+l);
if(temp1==temp)
{
Tran();
}
else
{
Trcom();
}
}
}
}
//////////////////////////////////////
void Sendothersys(void)
{
unsigned char i,l,lon,temp;
l=ppop+1;
lon=Read_256(0x7800+l);
timeout=(kalendar_clk[6]+5)%60;
timeout|=0x80;
P5OUT|=BIT5;
for(i=0;i<lon;i++)
{
l=ppop+2+i;
temp=Read_256(0x7800+l);
Sendcom1(temp);
}
sendlong=0;
Trdelay(1000);
P5OUT&=~BIT5;
}
//////////////////////////////////////
void Tran()
{
unsigned char i=0,temp2,f,l,l1,ff;
unsigned long temp1,tempaddr;
unsigned int temp3;
float temp;
ff=Read_256(0x7800+ppop);
ff&=0x7f;
switch(ff)
{
case 1:
sendlong=0x41;
for(i=0;i<6;i++)
{
tempcom[i]=kalendar_clk[i];
}
for(i=0;i<13;i++)
{
temp=Read256_4(0x6400+i*4);
temp=temp*65535.0*10;
temp1=(unsigned int)temp;
temp2=((temp1/10)%10)*16+temp1%10;
Write256_4(0x7a00+i*2,temp2);
temp2=((temp1/1000)%10)*16+(temp1/100)%10;
Write256_4(0x7a01+i*2,temp2);
}
for(i=0;i<4;i++)
{
temp2=Read_85834(0x20);
temp2=((temp1/10)%10)*16+temp1%10;
Write256_4(0x7a1a+i*4,temp2);
temp2=((temp1/1000)%10)*16+(temp1/100)%10;
Write256_4(0x7a1b+i*4,temp2);
temp2=((temp1/100000)%10)*16+(temp1/10000)%10;
Write256_4(0x7a1c+i*4,temp2);
temp2=((temp1/10000000)%10)*16+(temp1/1000000)%10;
Write256_4(0x7a1d+i*4,temp2);
}
for(i=0;i<2;i++)
{
temp=Read256_4(0x6444+i*4);
temp=temp*65535.0*10;
temp1=(unsigned int)temp;
temp2=((temp1/10)%10)*16+temp1%10;
Write_256(0x7a2a+i*2,temp2);
temp2=((temp1/1000)%10)*16+(temp1/100)%10;
Write_256(0x7a2b+i*2,temp2);
}
for(i=0;i<13;i++)
{
Write_256(0x7a2e+i,Read256_4(0x644c+i));
}
Send(0,0x7a00,6);
break;
case 2:
sendlong=0xe8;
l=ppop+2;
tempcom[0]=Read_256(0x7800+l);
l=ppop+4;
l1=ppop+5;
tempaddr=((Read_256(0x7800+l)-1)%2)*0x80000+((Read_256(0x7800+l1)-1)%31)*0x3000;
f=0;
for(i=0;i<3;i++)
{
l=ppop+3+i;
l1=(Read_flash(tempaddr+i)&0x0f)+(((unsigned char)Read_flash(tempaddr+i)>>4)*10);
temp=Read_256(0x7800+l);
if(temp==l1)
{
f++;
}
}
if(f==3)
{
for(i=0;i<3;i++)
{
tempcom[i+1]=Read_flash(tempaddr+i);
}
Send(1,tempaddr+3+tempcom[0]*0xe4,4);
}
else
{
Trcom();
}
break;
case 3:
sendlong=0xde;
l=ppop+2;
tempcom[0]=Read_256(0x7800+l);
l=ppop+4;
l1=ppop+5;
tempaddr=((Read_256(0x7800+l)-1)%2)*0x80000+((Read_256(0x7800+l1)-1)%31)*0x3000;
f=0;
for(i=0;i<3;i++)
{
l=ppop+3+i;
l1=(Read_flash(tempaddr+i)&0x0f)+(((unsigned char)Read_flash(tempaddr+i)>>4)*10);
temp=Read_256(0x7800+l);
if(temp==l1)
{
f++;
}
}
if(f==3)
{
for(i=0;i<3;i++)
{
tempcom[i+1]=Read_flash(tempaddr+i);
}
Send(1,tempaddr+0x400+tempcom[0]*218,4);
}
else
{
Trcom();
}
break;
case 4:
sendlong=0xd7;
l=ppop+3;
l1=ppop+4;
tempaddr=((Read_256(0x7800+l)-1)%2)*0x80000+((Read_256(0x7800+l1)-1)%31)*0x3000;
f=0;
for(i=0;i<3;i++)
{
l=ppop+3+i;
l1=(Read_flash(tempaddr+i)&0x0f)+(((unsigned char)Read_flash(tempaddr+i)>>4)*10);
temp=Read_256(0x7800+l);
if(temp==l1)
{
f++;
}
}
if(f==3)
{
for(i=0;i<3;i++)
{
tempcom[i]=Read_flash(tempaddr+i);
}
Send(1,tempaddr+0xf00,3);
}
else
{
Trcom();
}
break;
case 5:
l=ppop+3;
l1=ppop+4;
tempaddr=((Read_256(0x7800+l)-1)%2)*0x80000+((Read_256(0x7800+l1)-1)%31)*0x3000;
f=0;
for(i=0;i<3;i++)
{
l=ppop+3+i;
l1=(Read_flash(tempaddr+i)&0x0f)+(((unsigned char)Read_flash(tempaddr+i)>>4)*10);
temp=Read_256(0x7800+l);
if(temp==l1)
{
f++;
}
}
if(f==3)
{
if(Read_flash2(tempaddr+0x1000)>=80)
{
sendlong=0xf3;
}
else
{
sendlong=Read_flash2(tempaddr+0x1000)*3+3;
}
for(i=0;i<3;i++)
{
tempcom[i]=Read_flash(tempaddr+i);
}
Send(1,tempaddr+0xf02,3);
}
else
{
Trcom();
}
break;
case 7:
sendlong=0x5b;
Send(1,0xdd000,0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -