📄 5112udp.c
字号:
void killtimer( unsigned char ch)
{
switch ( ch )
{
case 0:
timer0=0;
timer0_reg=0;
break;
case 1:
timer1=0;
timer1_reg=0;
break;
case 2:
timer2=0;
timer2_reg=0;
break;
case 3:
timer3=0;
timer3_reg=0;
break;
case 4:
timer4=0;
timer4_reg=0;
break;
case 5:
timer5=0;
timer5_reg=0;
break;
case 6:
timer6=0;
timer6_reg=0;
break;
case 7:
timer7=0;
timer7_reg=0;
break;
case 8:
timer8=0;
timer8_reg=0;
break;
case 9:
timer9=0;
timer9_reg=0;
break;
case 10:
timer10=0;
timer10_reg=0;
break;
case 11:
timer11=0;
timer11_reg=0;
break;
case 12:
timer12=0;
timer12_reg=0;
break;
case 13:
timer13=0;
timer13_reg=0;
break;
default:
break;
}
}
///////////////////////////////
//
//NAME: init_timer0
//DESCRIPTION: TIMER0 INTERRUPT SERVICE PROGRAM
//CALL:
//INPUT:
//OUTPUT:NONE
//
///////////////////////////////
void init_timer0() interrupt 1
{
TR0=0;
TH0=0x70; //7000 for 22.1184Mhz(20mS),4c10 for 11.0592MHz(50mS)
TL0=0x00;
if ( timer8 )
{
timer8_reg++;
if ( timer8_reg == set_timer8 )
{
timer8_reg=0;
timer8_prog();
}
}
if ( timer0 )
{
timer0_reg++;
if ( timer0_reg == set_timer0 )
{
timer0_reg=0;
timer0_prog();
}
}
if ( timer1 )
{
timer1_reg++;
if ( timer1_reg == set_timer1 )
{
timer1_reg=0;
timer1_prog();
}
}
if ( timer2 )
{
timer2_reg++;
if ( timer2_reg == set_timer2 )
{
timer2_reg=0;
timer2_prog();
}
}
if ( timer3 )
{
timer3_reg++;
if ( timer3_reg == set_timer3 )
{
timer3_reg=0;
timer3_prog();
}
}
if ( timer4 )
{
timer4_reg++;
if ( timer4_reg == set_timer4 )
{
timer4_reg=0;
timer4_prog();
}
}
if ( timer5 )
{
timer5_reg++;
if ( timer5_reg == set_timer5 )
{
timer5_reg=0;
timer5_prog();
}
}
if ( timer6 )
{
timer6_reg++;
if ( timer6_reg == set_timer6 )
{
timer6_reg=0;
timer6_prog();
}
}
if ( timer7 )
{
timer7_reg++;
if ( timer7_reg == set_timer7 )
{
timer7_reg=0;
timer7_prog();
}
}
if ( timer9 )
{
timer9_reg++;
if ( timer9_reg == set_timer9 )
{
timer9_reg=0;
timer9_prog();
}
}
if ( timer10 )
{
timer10_reg++;
if ( timer10_reg == set_timer10 )
{
timer10_reg=0;
timer10_prog();
}
}
if ( timer11 )
{
timer11_reg++;
if ( timer11_reg == set_timer11 )
{
timer11_reg=0;
timer11_prog();
}
}
if ( timer12 )
{
timer12_reg++;
if ( timer12_reg == set_timer12 )
{
timer12_reg=0;
timer12_prog();
}
}
if ( timer13 )
{
timer13_reg++;
if ( timer13_reg == set_timer13 )
{
timer13_reg=0;
timer13_prog();
}
}
TF0=0;
TR0=1;
}
//////////////////////////////
//
//NAME: timer0_prog
//DESCRIPTION: TIMER0 PROGRAM FOR SYSTEM STATUS FLASH
//CALL:
//INPUT:
//OUTPUT:NONE
//
///////////////////////////////
void timer0_prog(void)
{
DSP_STAT=~DSP_STAT;
}
//////////////////////////////
//
//NAME: timer1_prog
//DESCRIPTION: TIMER1 PROGRAM FOR INIT SYSTEM
//CALL:
//INPUT:
//OUTPUT:NONE
//
///////////////////////////////
void timer1_prog(void)
{
unsigned char dt,addr,i;
unsigned char *p;
killtimer(1);
if ( send_buf1[71] == 0x55 )
{
dt=send_buf1[2];
switch ( dt )
{
case 0x00:
dt=64;
break;
case 0x01:
dt=160;
break;
case 0x02:
dt=208;
break;
case 0x03:
dt=232;
break;
case 0x04:
dt=244;
break;
case 0x05:
dt=250;
break;
case 0x06:
dt=253;
break;
case 0x07:
dt=254;
break;
case 0x08:
dt=255;
break;
default:
dt=250;
break;
}
p=&dt;
addr=x_baud;
x_write(addr,p,1);//write user baud
for ( i = 0 ; i < 16 ; i++ )
{
if ( send_buf1[i+3] == 0x00 ) break;
}
p=&send_buf1[3];
addr=x_isp_num;
i++;
x_write(addr,p,i);//write isp num
for ( i = 0 ; i < 16 ; i++ )
{
if ( send_buf1[i+19] == 0x00 ) break;
}
p=&send_buf1[19];
addr=x_isp_name;
i++;
x_write(addr,p,i);//write isp name
for ( i = 0 ; i < 16 ; i++ )
{
if ( send_buf1[i+35] == 0x00 ) break;
}
p=&send_buf1[35];
addr=x_isp_name;
i++;
x_write(addr,p,i);//write isp password
xbuf[0]=send_buf1[51];
xbuf[1]=send_buf1[52];
p=&xbuf[0];
addr=x_my_port;
x_write(addr,p,2);//write my port
xbuf[0]=send_buf1[53];
xbuf[1]=send_buf1[54];
xbuf[2]=send_buf1[55];
xbuf[3]=send_buf1[56];
p=&xbuf[0];
addr=x_server_addr;
x_write(addr,p,4);//write server ip address
xbuf[0]=send_buf1[57];
xbuf[1]=send_buf1[58];
p=&xbuf[0];
addr=x_server_port;
x_write(addr,p,2);//write server port
if ( send_buf1[1] == 0x01)
{
xbuf[0]=send_buf1[59];
xbuf[1]=send_buf1[60];
xbuf[2]=send_buf1[61];
xbuf[3]=send_buf1[62];
p=&xbuf[0];
addr=x_my_addr;
x_write(addr,p,4);//write my address
}
xbuf[0]=send_buf1[63];
xbuf[1]=send_buf1[64];
xbuf[2]=send_buf1[65];
xbuf[3]=send_buf1[66];
p=&xbuf[0];
addr=x_to_addr;
x_write(addr,p,4);//write to address
rcv_init=0;
rcv_cnt0=0;
waitinit=0;
xbuf[0]=0x55;
addr=x_mark;
p=&xbuf[0];
x_write(addr,p,1);
DSP_STAT=1;
DSP_LINK=1;
DSP_CALL=1;
DSP_SEND=1;
DSP_RCV=1;
for ( i = 0 ; i < 6 ; i ++ ) wait(150);
DSP_STAT=0;
DSP_LINK=0;
DSP_CALL=0;
DSP_SEND=0;
DSP_RCV=0;
}
}
//////////////////////////////
//
//NAME: timer2_prog
//DESCRIPTION: TIMER2 PROGRAM FOR CALLING
//CALL:
//INPUT:
//OUTPUT:NONE
//
///////////////////////////////
void timer2_prog(void)
{
DSP_CALL=~DSP_CALL;
}
//////////////////////////////
//
//NAME: timer3_prog
//DESCRIPTION: TIMER3 PROGRAM FOR RECONNECT
//CALL:
//INPUT:
//OUTPUT:NONE
//
///////////////////////////////
void timer3_prog(void)
{
//killtimer(3);
reconnect_cnt++;
if ( reconnect_cnt > 3 )
{
reconnect_cnt=0;
request_ppp=1;
}
DSP_LINK=1;
}
//////////////////////////////
//
//NAME: timer4_prog
//DESCRIPTION: TIMER4 PROGRAM FOR RECEIVE DATA FROM EQU TO SEND TO SERVER DELAY 1S
//CALL:
//INPUT:
//OUTPUT:NONE
//
///////////////////////////////
void timer4_prog(void)
{
killtimer(4);
if (( com0_send_addr + com0_send_len) != (com1_rcv_addr_hand + com1_rcv_len ))
request_send_data_to_server=1;
}
//////////////////////////////
//
//NAME: timer5_prog
//DESCRIPTION: TIMER5 PROGRAM FOR SEND DATA TO SERVER 150mS
//CALL:
//INPUT:
//OUTPUT:NONE
//
///////////////////////////////
void timer5_prog(void)
{
killtimer(5);
DSP_SEND=1;
}
//////////////////////////////
//
//NAME: timer6_prog
//DESCRIPTION: TIMER5 PROGRAM FOR RECEIVE DATA FROM SERVER
//CALL:
//INPUT:
//OUTPUT:NONE
//
///////////////////////////////
void timer6_prog(void)
{
killtimer(6);
DSP_RCV=1;
}
//////////////////////////////
//
//NAME: timer7_prog
//DESCRIPTION: TIMER7 PROGRAM FOR RESET SYSTEM DELAY
//CALL:
//INPUT:
//OUTPUT:NONE
//
///////////////////////////////
void timer7_prog(void)
{
request_reset=1;
/*killtimer(7);
killtimer(6);
killtimer(5);
DSP_STAT=1;
DSP_LINK=1;
DSP_CALL=1;
DSP_SEND=1;
DSP_RCV=1;
wait(150);
wait(150);
wait(150);
wait(150);
wait(150);
wait(150);
wait(150);
DSP_STAT=0;
DSP_LINK=0;
DSP_CALL=0;
DSP_SEND=0;
DSP_RCV=0;
while(1)
{
;
}*/
}
//////////////////////////////
//
//NAME: timer8_prog
//DESCRIPTION: TIMER8 PROGRAM 300mS for wait 5112 2nd 0x7e
//CALL:
//INPUT:
//OUTPUT:NONE
//
///////////////////////////////
void timer8_prog(void)
{
killtimer(8);
rcv_7d=0;
rcv_data0=0;
rcv_cnt0=0;
com0tocom1=0;
rcv_56=0;
receive_5112=0;
}
//////////////////////////////
//
//NAME: timer9_prog
//DESCRIPTION: TIMER9 PROGRAM FOR WAIT 5112 ACK
//CALL:
//INPUT:
//OUTPUT:NONE
//
///////////////////////////////
void timer9_prog(void)
{
killtimer(9);
ack=1;
}
//////////////////////////////
//
//NAME: timer10_prog
//DESCRIPTION: TIMER10 PROGRAM FOR DELAY 10S LINK TEST FROM EQU TO SERVER
//CALL:
//INPUT:
//OUTPUT:NONE
//
///////////////////////////////
void timer10_prog(void)
{
request_send_chk_to_server=1;
}
//////////////////////////////
//
//NAME: timer11_prog
//DESCRIPTION: TIMER11 PROGRAM FOR DISPLAY RECEIVE AND SEND LINK TEST FLASH
//CALL:
//INPUT:
//OUTPUT:NONE
//
///////////////////////////////
void timer11_prog(void)
{
killtimer(11);
DSP_SEND=1;
}
//////////////////////////////
//
//NAME: timer12_prog
//DESCRIPTION: TIMER12 PROGRAM FOR WAIT PPP ERROR AFTER SEND HUNG UP COMMAND
//CALL:
//INPUT:
//OUTPUT:NONE
//
///////////////////////////////
void timer12_prog(void)
{
killtimer(12);
phy_err=1;
}
//////////////////////////////
//
//NAME: timer13_prog
//DESCRIPTION: TIMER13 PROGRAM FOR RESET SYSTEM 20MIN DON NOT RECEIVE LINK TEST FROM SERVER
//CALL:
//INPUT:
//OUTPUT:NONE
//
///////////////////////////////
void timer13_prog(void)
{
while(1)
{
;
}
}
//////////////////////////////
//
//NAME: init_com1
//DESCRIPTION: UART1 INTERRUPT SERVICE PROGRAM( EQU )
//CALL:
//INPUT:
//OUTPUT:NONE
//
///////////////////////////////
void init_com1() interrupt 7
{
unsigned char data dt;
unsigned int data addr_temp;
if ( TI1 )
{
if ( rcv_to_send_com1_addr == send_to_com1_addr )
{
com1_send_finish=1;
killtimer(6);
DSP_RCV=1;
}
else
{
SBUF1=send_buf1[send_to_com1_addr];
send_to_com1_addr++;
if ( send_to_com1_addr == RCV_BUF_MAX ) send_to_com1_addr = 0;
}
TI1=0;
}
if ( RI1 )
{
if ( waitinit == 1 )
{
dt=SBUF1;
if ( rcv_init )
{
send_buf1[rcv_cnt0]=dt;//receive init data
rcv_cnt0++;
}
else
{
if ( dt == 0xaa )
{
rcv_init=1;
rcv_cnt0=0;
settimer(1);
}
}
}
else
{
if (run & issend_to_server)
{
dt=SBUF1;
if ( !timer4 ) settimer(4);
addr_temp=com1_rcv_addr_hand+com1_rcv_len;
if ( addr_temp > (SEND_BUF_MAX-1) ) addr_temp=addr_temp-SEND_BUF_MAX;
if (( dt == 0x7e )|(dt == 0x7d))
{
rcv_equ_chk=rcv_equ_chk+dt;
send_buf0[addr_temp]=0x7d;
com1_rcv_len++;
addr_temp++;
if ( addr_temp == SEND_BUF_MAX ) addr_temp=0;
send_buf0[addr_temp]=(dt ^ 0x20);
rcv_7d_cnt++;
}
else
{
if ((dt == 0x55) | ( dt == 0x56 ))
{
send_buf0[addr_temp]=0x56;
rcv_equ_chk=rcv_equ_chk+0x56;
com1_rcv_len++;
addr_temp++;
if ( addr_temp == SEND_BUF_MAX ) addr_temp=0;
dt=dt ^ 0x20;
send_buf0[addr_temp]=dt;
rcv_equ_chk=rcv_equ_chk+dt;
}
else
{
rcv_equ_chk=rcv_equ_chk+dt;
send_buf0[addr_temp]=dt;
}
}
com1_rcv_len++;
if ( com1_rcv_len > (SEND_BUF_MAX-1) )
{
com1_rcv_len = (SEND_BUF_MAX-1) ;
}
if ( com1_rcv_len > SEND_MAX_CNT )
{
request_send_data_to_server=1;
timer4_reg=0;
}
}
}
RI1=0;
}
}
//////////////////////////////
//
//NAME: init_com0
//DESCRIPTION: UART0 INTERRUPT SERVICE PROGRAM (5112)
//CALL:
//INPUT:
//OUTPUT:NONE
//
///////////////////////////////
void init_com0() interrupt 4
{
unsigned char data dt,chtemp,i;
unsigned int data idt,chk;
unsigned char *p;
ES0=0;
if ( TI )
{
if ( send_data0 )
{
if ( send_com0_cnt == com0_send_len )//send data to 5112
{
send_com0_finish=1;
send_com0_cnt=0;
}
else
{
idt=com0_send_addr+send_com0_cnt;
if ( idt > (SEND_BUF_MAX-1) ) idt=idt-SEND_BUF_MAX;
ACC=send_buf0[idt];
TB8=P;
SBUF0=ACC;
send_com0_cnt++;
}
}
else
{
if ( send_com0_cnt == send_ctr_com0_len )//send ctrl to 5112
{
send_com0_finish=1;
send_com0_cnt=0;
}
else
{
ACC=send_ctr_com0_buf[send_com0_cnt];
TB8=P;
SBUF0=ACC;
send_com0_cnt++;
}
}
TI=0;
}
if ( RI )
{
dt=SBUF0;
ACC=dt;
if ( RB8 != P )
{
if ( sm )
{
send_buf0[rcv_cnt0]=dt;
rcv_cnt0++;
}
else
{
chtemp=dt;
if (( dt == 0x7d ) & ( rcv_cnt0>2 ))
{
rcv_7d=1;
}
else
{
if( rcv_7d )
{
dt=dt ^ 0x20;
rcv_7d=0;
}
if ( rcv_data0 == 0 )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -