📄 comm_0_mode.h
字号:
// chu shi 485_1
void init_485_0()
{
send4850_pry=0;
RLEN_485_T_BUFFER_0=0;
RCURRENTADDR_485_T_BUFFER_0=0;
RFLAG_SEND0_START=0;
pindir_txd=0;
pindir_rxd=0;
u0rb=0x00;
u0c1=0;
s0tic=0;
tongdao=comm485_0;
my_tongdao_start();
}
unsigned char comm_485_0_use(unsigned int value)
{
union kk
{
struct{
unsigned char b0:1;
unsigned char b1:1;
unsigned char b2:1;
unsigned char b3:1;
unsigned char b4:1;
unsigned char b5:1;
unsigned char b6:1;
unsigned char b7:1;
unsigned char b8:1;
unsigned char b9:1;
unsigned char b10:1;
unsigned char abt:1; /* Arbitration lost detecting flag */
unsigned char oer:1; /* Overrun error flag */
unsigned char fer:1; /* Framing error flag*/
unsigned char per:1; /* Parity error flag */
unsigned char sum:1; /* Error sum flag */
}bit;
struct{
unsigned char low; /* Low 8 bit */
unsigned char high; /* High 8 bit */
}byte;
unsigned short word;
}buffer;
buffer.word=value;
if((buffer.bit.b0^buffer.bit.b1^buffer.bit.b2^buffer.bit.b3^buffer.bit.b4^buffer.bit.b5^buffer.bit.b6^buffer.bit.b7)
==buffer.bit.b8)
return 0;//e
else
return 1;//p
}
#pragma INTERRUPT comm_485_0
void comm_485_0()
{unsigned char l;
union kk
{
struct{
unsigned char b0:1;
unsigned char b1:1;
unsigned char b2:1;
unsigned char b3:1;
unsigned char b4:1;
unsigned char b5:1;
unsigned char b6:1;
unsigned char b7:1;
unsigned char b8:1;
unsigned char b9:1;
unsigned char b10:1;
unsigned char abt:1; /* Arbitration lost detecting flag */
unsigned char oer:1; /* Overrun error flag */
unsigned char fer:1; /* Framing error flag*/
unsigned char per:1; /* Parity error flag */
unsigned char sum:1; /* Error sum flag */
}bit;
struct{
unsigned char low; /* Low 8 bit */
unsigned char high; /* High 8 bit */
}byte;
unsigned int word;
}buffer;
buffer.word=u0rb;
// add
time_boud_500_use_0=0;
// add
RCOMM0_TIMER=0x00;
if((0xf0&buffer.byte.high)!=0)
{
u0rb=0x00;
u0mr=00;
RSTATUS_485_0=RERR;
u0mr=0x6;// 6
}
else
{
switch(RSTATUS_485_0)
{
case REC:
l=1;
if( RPROTOCOL_485_0==HUALONG)
{
send4850_pry=0;
if(comm_485_0_use(buffer.word)==0)//e
l=0;
}
else
{
send4850_pry=1;
if(comm_485_0_use(buffer.word)==1)//p
l=0;
}
if(1==l)
{
RRBUFFER_485_0[RCURRENTADDR_485_R_BUFFER_0]=buffer.byte.low;
RCURRENTADDR_485_R_BUFFER_0=RCURRENTADDR_485_R_BUFFER_0+1;
RLEN_485_R_BUFFER_0=RLEN_485_R_BUFFER_0+1;
if(RLEN_485_R_BUFFER_0>=MAX_R_485_0)
RSTATUS_485_0=RERR;
}
else
RSTATUS_485_0=RERR;
break;
case START:
{
switch(buffer.byte.low)
{
case 0xaa:
if(comm_485_0_use(buffer.word)==1)//p
{
RLEN_485_R_BUFFER_0=1;
RCURRENTADDR_485_R_BUFFER_0=0;
RRBUFFER_485_0[0]=buffer.byte.low;
RCURRENTADDR_485_R_BUFFER_0=1;
// ii9
u0mr=0x6;// ii6
send4850_pry=0;
RPROTOCOL_485_0=HUALONG;
RSTATUS_485_0=REC;
}
break;
case 0x68:
if(comm_485_0_use(buffer.word)==0)//e
{
RLEN_485_R_BUFFER_0=1;
RCURRENTADDR_485_R_BUFFER_0=0;
RRBUFFER_485_0[0]=buffer.byte.low;
RCURRENTADDR_485_R_BUFFER_0=1;
RPROTOCOL_485_0=QUANGUOZHEJIANG;
u0mr=0x6;
send4850_pry=1;
RSTATUS_485_0=REC;
}
break;
}
}
break;
default:
break;
}
}
}
#pragma INTERRUPT comm_485_0_send
void comm_485_0_send()
{unsigned int a;
union kk
{
struct{
unsigned char b0:1;
unsigned char b1:1;
unsigned char b2:1;
unsigned char b3:1;
unsigned char b4:1;
unsigned char b5:1;
unsigned char b6:1;
unsigned char b7:1;
unsigned char b8:1;
unsigned char b9:1;
unsigned char b10:1;
unsigned char abt:1; /* Arbitration lost detecting flag */
unsigned char oer:1; /* Overrun error flag */
unsigned char fer:1; /* Framing error flag*/
unsigned char per:1; /* Parity error flag */
unsigned char sum:1; /* Error sum flag */
}bit;
struct{
unsigned char low; /* Low 8 bit */
unsigned char high; /* High 8 bit */
}byte;
unsigned int word;
}buffer;
buffer.word=0;
// add
time_boud_500_use_0=0;
// add
if(RLEN_485_T_BUFFER_0==0)
{
// FA WAN ,RU CHU YI FA SONG ZHUAN TAI,JIE SHOU
s0tic=0x00;
RSTATUS_485_0=START;
RLEN_485_R_BUFFER_0=0;
RPROTOCOL_485_0=0;
RCURRENTADDR_485_R_BUFFER_0=0;
u0brg=table_brg_value_from_boud_0[ boud_use_0];// boud use
u0c0=table_u0c0_value_form_boud[ boud_use_0];
u0mr=0;
u0mr=0x06; // ii6
ucon=0x01;
u0c1=0x7;
s0ric=7;
a=u0rb;
}
else
{
RLEN_485_T_BUFFER_0=RLEN_485_T_BUFFER_0-1;
buffer.byte.low=RRBUFFER_485_0[RCURRENTADDR_485_T_BUFFER_0];
// changed jiao yan must 2 stop
buffer.bit.b8=buffer.bit.b0^buffer.bit.b1^buffer.bit.b2^buffer.bit.b3^buffer.bit.b4^buffer.bit.b5^buffer.bit.b6^buffer.bit.b7;
if(send4850_pry!=1)// e
buffer.bit.b8=~buffer.bit.b8;
u0tb=buffer.word;
RCURRENTADDR_485_T_BUFFER_0=RCURRENTADDR_485_T_BUFFER_0+1;
}
}
// chu shi tong dao 1
// tong dao 485 1 fa
start_send_485_0()
{
union kk{
struct{
unsigned char b0:1;
unsigned char b1:1;
unsigned char b2:1;
unsigned char b3:1;
unsigned char b4:1;
unsigned char b5:1;
unsigned char b6:1;
unsigned char b7:1;
unsigned char b8:1;
unsigned char b9:1;
unsigned char b10:1;
unsigned char abt:1; /* Arbitration lost detecting flag */
unsigned char oer:1; /* Overrun error flag */
unsigned char fer:1; /* Framing error flag*/
unsigned char per:1; /* Parity error flag */
unsigned char sum:1; /* Error sum flag */
}bit;
struct{
unsigned char low; /* Low 8 bit */
unsigned char high; /* High 8 bit */
}byte;
unsigned int word;
}buffer;
if((RFLAG_SEND0_START==1)&&(RSTATUS_485_0==SEND)&&(RLEN_485_T_BUFFER_0!=0))
{
RFLAG_SEND0_START=0;
RCURRENTADDR_485_T_BUFFER_0=1;
u0mr=0x06;// two bit stop 16
u0c1=0x07;
ucon=1;
RSTATUS_485_0=SEND;
asm("FCLR I");
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
s0ric=0;
s0tic=7;
asm("NOP");
asm("NOP");
asm("NOP");
asm("NOP");
asm("FSET I");
RLEN_485_T_BUFFER_0=RLEN_485_T_BUFFER_0-1;
buffer.word=0;
buffer.byte.low=RRBUFFER_485_0[0];
buffer.bit.b8=buffer.bit.b0^buffer.bit.b1^buffer.bit.b2^buffer.bit.b3^buffer.bit.b4^buffer.bit.b5^buffer.bit.b6^buffer.bit.b7;
if(send4850_pry==0)// p
buffer.bit.b8=~buffer.bit.b8;
u0tb=buffer.word;
}
}
void comm_485_0_mode()
{ // miao hua long zhang ji you xiao 5 second
if(rzhangji_485_mima_use_second_0!=RSOFT_RTC_SECOND)
{
rzhangji_485_mima_use_second_0=RSOFT_RTC_SECOND;
if(rtime_485_5second_0!=0)
rtime_485_5second_0=rtime_485_5second_0-1;
if(rtime_485_zhangjimima_0!=0)
rtime_485_zhangjimima_0=rtime_485_zhangjimima_0-1;
if(rtime_485_zhangjimima_0==0)
rstatus_485_mima_youxiao_0=zhangji_mima_youxiao_start;
if(rtime_485_5second_0==0)
if(rstatus_485_mima_youxiao_0==zhangji_mima_youxiao_inhao)
rstatus_485_mima_youxiao_0=zhangji_mima_youxiao_yes;
}
// boud
tongdao=comm485_0;
rbuffer=RRBUFFER_485_0;
if(time_boud_500_use_0>=50)
{
time_boud_500_use_0=0;
if(boud_use_0!=RAM[R_BOUD])
{//tongdao=2;
my_tongdao_start();
}
}
// zai fa song zhuang tai wei start send xia, chao shi ding shi qi qing wei ling
if((RSTATUS_485_0==START)||(RSTATUS_485_0==SEND) )
RCOMM0_TIMER=0;
// zai you jie shou shu ju ji zhuang tai bu wei qi shi xia, pan chao shi fou,
// ruo chao shi, ze chao shi chu li
if(( RLEN_485_R_BUFFER_0!=0)||(RSTATUS_485_0!=START))
{
if((RCOMM0_TIMER>=MAX_R_485_0_TIMER)||(RSTATUS_485_0==RERR))
{//tongdao=2;
my_tongdao_start();
}
else
{
switch(RSTATUS_485_0)
{
case START:
num_check_485_0=0;
break;
case REC:
switch(RPROTOCOL_485_0)
{
case HUALONG:
// delete by zhanglong ---->start
// phualong(&RLEN_485_R_BUFFER_0,
// &RDISPLAY_4850INFO_STATUS,
// &RSTATUS_485_0);
// delete by zhanglong ---->end
break;
case QUANGUOZHEJIANG :
judge_quanguo_zhejiang(&RLEN_485_R_BUFFER_0,
&RDISPLAY_4850INFO_STATUS,
&RSTATUS_485_0);
break;
}
break;
}
}
}
start_send_485_0(); // you fa song qing qiu cai fa song
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -