📄 mcom98.c
字号:
{
if ((uart0_rl[j]>='A')&&(uart0_rl[j]<='F'))
{
k=uart0_rl[j]-0x37;
l=l|k;
}
else
{
if (uart0_mark1_a4!=1)
{
uart0_mark1_a5=1;
return;
}
}
}
}
uart0_data=l;
}
}
}
//命令处理
void rx_cl_command(unsigned char i)
{
unsigned char k;
unsigned int l;
tc0=0x00;
uart0_tc=0x00;
if (i>='a'&&i<='z') i=i-0x20;
switch (i)
{
case 'D': //D命令
{
if (uart0_mark2_a0!=1)
{
uart0_mark1_a3=1;
uart0_mark2_a0=1;
uart0_p=(__far unsigned char*)&uart0_eadr[0];
cl_ad();
cl_xsc();
cl_enabletxd();
}
else
{
if (uart0_mark1_a4==0)
{
if (uart0_rl[uart0_rc-1]=='\r')
{
cl_address();
if (uart0_mark1_a5==0)
{
uart0_mark1_a4=1;
cl_ad();
cl_ad();
cl_xsdata_address();
l=uart0_address&0x0f;
k=0x10;
if (l==0)
{
if (uart0_pointer<0x10) k=uart0_pointer;
uart0_pointer-=k;
uart0_address+=k;
while (k!=0)
{
k--;
cl_dszc();
}
}
else
{
k=k-(unsigned char)l;
while (l!=0)
{
uart0_tl[tc0]=' ';
tc0++;
uart0_tc++;
uart0_tl[tc0]=' ';
tc0++;
uart0_tc++;
uart0_tl[tc0]=' ';
tc0++;
uart0_tc++;
l--;
}
uart0_pointer-=k;
uart0_address+=k;
while (k!=0)
{
cl_dszc();
k--;
}
}
cl_enabletxd();
}
else
{
uart0_p=(__far unsigned char*)&uart0_error[0];
cl_ad();
cl_ad();
cl_xsc();
cl_ad1();
uart0_mark2=uart0_mark3=0x00;
uart0_mark1=0x01;
cl_enabletxd();
}
}
}
else
{
k=0x10;
cl_ad();
cl_xsdata_address();
if (uart0_pointer<0x10) k=uart0_pointer;
uart0_address+=k;
uart0_pointer-=k;
while (k!=0)
{
k--;
cl_dszc();
}
if (uart0_pointer==0)
{
cl_ad1();
uart0_mark2=uart0_mark3=0x00;
uart0_mark1=0x01;
}
cl_enabletxd();
}
}
break;
}
case 'E': //E命令
{
if (uart0_mark2_a1!=1)
{
uart0_mark1_a3=1;
uart0_mark2_a1=1;
uart0_p=(__far unsigned char*)&uart0_eadr[0];
cl_ad();
cl_xsc();
cl_enabletxd();
e_rc=0x00;
}
else
{
if (uart0_mark1_a4==0)
{
if (uart0_rl[uart0_rc-1]=='\r')
{
cl_address();
if (uart0_mark1_a5==0)
{
uart0_mark1_a4=1;
cl_ad();
cl_xsdata_address();
cl_eszc();
e_rc++;
}
else
{
uart0_p=(__far unsigned char*)&uart0_error[0];
cl_ad();
cl_xsc();
cl_ad1();
uart0_mark2=uart0_mark3=0x00;
uart0_mark1=0x01;
}
cl_enabletxd();
}
}
else
{
cl_address();
if (uart0_mark1_a5==0)
{
switch (uart0_rl[rc0-1])
{
case ' ':
if (uart0_rc!=1) *uart0_p=uart0_data;
*uart0_p++;
uart0_address++;
if (e_rc>7)
{
cl_ad();
cl_xsdata_address();
cl_eszc();
e_rc=0x01;
}
else
{
uart0_tl[tc0]='\t';
tc0++;
uart0_tc++;
cl_eszc();
e_rc++;
}
cl_enabletxd();
break;
case '\r':
if (uart0_rc!=1) *uart0_p=uart0_data;
cl_ad();
cl_ad1();
uart0_mark2=uart0_mark3=0x00;
uart0_mark1=0x01;
cl_enabletxd();
break;
case '-':
cl_ad();
uart0_address--;
*uart0_p--;
cl_xsdata_address();
cl_eszc();
e_rc=0x01;
cl_enabletxd();
}
}
else
{
uart0_p=(__far unsigned char*)&uart0_error[0];
cl_ad();
cl_xsc();
cl_ad1();
uart0_mark2=uart0_mark3=0x00;
uart0_mark1=0x01;
cl_enabletxd();
}
}
}
break;
}
case 'F': //F命令
{
if (uart0_mark2_a2!=1)
{
uart0_mark1_a3=1;
uart0_mark2_a2=1;
uart0_p=(__far unsigned char*)&uart0_eadr[0];
cl_ad();
cl_xsc();
cl_enabletxd();
}
else
{
if (uart0_rl[uart0_rc-1]=='\r')
{
cl_address();
if ((uart0_mark1_a6==1)&&(uart0_mark1_a5==0))
{
cl_ad();
cl_ad1();
uart0_mark2=uart0_mark3=0x00;
uart0_mark1=0x01;
while (uart0_pointer)
{
*uart0_p=uart0_data;
*uart0_p++;
uart0_pointer--;
}
}
else
{
uart0_p=(__far unsigned char*)&uart0_error[0];
cl_ad();
cl_xsc();
cl_ad1();
uart0_mark2=uart0_mark3=0x00;
uart0_mark1=0x01;
}
cl_enabletxd();
}
}
break;
}
case 'H': //H命令
{
if (uart0_mark2_a3!=1)
{
uart0_mark1_a3=1;
uart0_mark2_a3=1;
uart0_p=(__far unsigned char*)&uart0_hco[0];
cl_ad();
cl_xsc();
}
else
{
cl_xsc();
if (*uart0_p=='$')
{
cl_ad1();
uart0_mark2=uart0_mark1=0x00;
}
}
cl_enabletxd();
break;
}
case 'X': //X命令,清除串行EEPROM
if (uart0_mark2_a4==0)
{
uart0_mark2_a4=1;
uart0_mark1_a3=1;
uart0_p=(__far unsigned char*)&uart0_pass[0];
cl_ad();
cl_xsc();
cl_enabletxd();
}
else
{
if (uart0_rl[uart0_rc-1]='\r')
{
if ((uart0_rl[0]=='E')&&(uart0_rl[1]=='A')&&(uart0_rl[2]=='R')&&(uart0_rl[3]=='\r'))
{
cl_clear_eeprom();
cl_ad();
cl_ad1();
uart0_mark2=uart0_mark3=0x00;
uart0_mark1=0x01;
}
else
{
uart0_p=(__far unsigned char*)&uart0_passerr[0];
cl_ad();
cl_xsc();
cl_ad1();
uart0_mark2=uart0_mark3=0x00;
uart0_mark1=0x01;
}
cl_enabletxd();
}
}
break;
// case 'A': //A命令
// uart0_mark2_a5=1;
// break;
// case 'C': //C命令
// uart0_mark2_a6=1;
// break;
default :
if ((i==' ')||(i=='\r'))
{
cl_ad1();
uart0_mark2=uart0_mark3=0x00;
uart0_mark1=0x01;
}
else
{
uart0_p=(__far unsigned char*)&uart0_unxsq[0];
cl_ad();
cl_xsc();
cl_ad1();
uart0_mark2=uart0_mark3=0x00;
uart0_mark1=0x01;
}
cl_enabletxd();
}
}
//接收处理
void rx_cl(void)
{
unsigned char i;
if (uart0_rtime>6)
{
if (uart0_mark1_a2!=1)
{
i=uart0_rl[0];
command_bak=i;
uart0_mark1_a2=1;
}
else i=command_bak;
if (uart0_mark1_a0==0) rx_cl_command(i);
}
}
//发送处理
void tx_cl(void)
{
}
//串口处理
void uart0_cl (void)
{
if ((uart0_rc!=0x00)||(uart0_mark1_a3==1))
{
rx_cl();
return;
}
if (uart0_mark1_a1==1)
{
tx_cl();
return;
}
/* if (uart0_time>50000)
{
inituart0();
}*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -