📄 two18.c
字号:
write_zf(CUT5, 2); //显示"断油5路" 2006.3.6
write_com(0x83); // 2006.3.6
write_zf(WHITE1,2); // 2006.3.6
door1=0; //关门1 2006.3.6
break;
case 'S':
write_com(0x80); //第一行显示"正常行使"
write_hz(NORMAL,4);
break;
case '!':
write_com(0x82);
write_zf(CUT5,2); //显示"断油5路" 2006.3.6
write_com(0x83);
write_zf(WHITE1,2);
door1=0; //关门1 2006.3.6
break;
case 1 :
write_com(0x80); // 2006.3.6
write_zf(WHITE1, 2); // 2006.3.6
write_com(0x81); // 2006.3.6
write_zf(WHITE1,2); // 2006.3.6
write_com(0x82); // 2006.3.6
write_zf(CUT5,2); //显示"断油5路" 2006.3.6
write_com(0x83); //
write_zf(WHITE1,2); //
door1=0; //关门1 2006.3.6
break;
case 2 :
write_com(0x80); // 2006.3.6
write_zf(WHITE1, 2); // 2006.3.6
write_com(0x81); // 2006.3.6
write_zf(WHITE1,2); // 2006.3.6
write_com(0x82); // 2006.3.6
write_zf(CUT4,2); //显示"断油4路" 2006.3.6
write_com(0x83); //
write_zf(WHITE1,2); //
door1=0; //关门1 2006.3.6
break;
case 3 :
write_com(0x80); // 2006.3.6
write_zf(WHITE1, 2); // 2006.3.6
write_com(0x81); // 2006.3.6
write_zf(WHITE1,2); // 2006.3.6
write_com(0x82); // 2006.3.6
write_zf(CUT3,2); //显示"断油3路" 2006.3.6
write_com(0x83); // 2006.3.6
write_zf(WHITE1,2); // 2006.3.6
door1=0; //关门1 2006.3.6
break;
case 4 :
write_com(0x80); // 2006.3.6
write_zf(WHITE1, 2); // 2006.3.6
write_com(0x81); // 2006.3.6
write_zf(WHITE1,2); // 2006.3.6
write_com(0x82); // 2006.3.6
write_zf(CUT2,2); //显示"断油2路" 2006.3.6
write_com(0x83); // 2006.3.6
write_zf(WHITE1,2); // 2006.3.6
door1=0; //关门1 2006.3.6
break;
case 5 :
write_com(0x80); // 2006.3.6
write_zf(WHITE1, 2); // 2006.3.6
write_com(0x81); // 2006.3.6
write_zf(WHITE1,2); // 2006.3.6
write_com(0x82); // 2006.3.6
write_zf(CUT1,2); //显示"断油1路" 2006.3.6
write_com(0x83); // 2006.3.6
write_zf(WHITE1,2); // 2006.3.6
door1=0; //关门1 2006.3.6
break;
case 6 : // 2006.3.6
write_com(0x80); // 2006.3.6
write_zf(WHITE1, 2); // 2006.3.6
write_com(0x81); // 2006.3.6
write_zf(WHITE1,2); // 2006.3.6
write_com(0x82); // 2006.3.6
write_zf(WHITE1,2); // 2006.3.6
write_com(0x83); // 2006.3.6
write_zf(WHITE1,2); // 2006.3.6
break;
default: //错误,退出
break;
};
}
else ; //退出 2006 3 9
} */
//==========================================================
//写EEPROM
//==========================================================
void write_s24(uchar adr_cnt,uchar j)
{
inlast3=inbuf3+7; // 2006 5 23
// for(i=0;i<8;i++)
// {
ISendStr(S24C04,adr_cnt,inlast3,j);
// adr_cnt++;
// getline++;
// }
inlast3=inbuf3;
}
//==========================================================
//读EEPROM
//==========================================================
void read_s24(uchar addr,uchar j)
{
inlast3=inbuf3;
// for(i=0;i<8;i++)
// {
IRcvStr(S24C04,addr,inlast3,j);
// addr++;
// outline++;
// }
inlast3=inbuf3;
}
//===========================================================
//缓存3清空
//===========================================================
void clear()
{
inbuf3[0]=0;
inbuf3[1]=0;
inbuf3[2]=0;
inbuf3[3]=0;
inbuf3[4]=0;
inbuf3[5]=0;
inbuf3[6]=0;
inbuf3[7]=0;
}
//===========================================================
//字串校验 XX,00,001,001=>00+001=001
//===========================================================
uchar JAOYAN(uchar i,uchar j,uchar k)
{
uchar z1;
uchar z2;
uchar z3;
uchar a[3];
a[0]=0;
a[1]=0;
a[2]=0;
inlast3=inbuf3+i;
a[0]=*inlast3;
inlast3++;
a[1]=*inlast3;
z1=atoi(a);
inlast3=inbuf3+j;
a[0]=*inlast3;
inlast3++;
a[1]=*inlast3;
inlast3++;
a[2]=*inlast3;
z2=atoi(a);
inlast3=inbuf3+k;
a[0]=*inlast3;
inlast3++;
a[1]=*inlast3;
inlast3++;
a[2]=*inlast3;
z3=atoi(a);
if(z3==(z2+z1))
{
inlast3=inbuf3;
// ES=0;
// C2=1;
// senddatas(inlast3+3,2);
// ES=1;
// C2=0;
// inlast3=inbuf3;
return(1);
}
else
{
inlast3=inbuf3;
return(0);
}
}
//===========================================================
//读EEPROM数据至片内RAM
//===========================================================
void EEPROM_RAM()
{
clear(); // 缓存3清空
read_s24(0x00,3); //从EEPROM 0x00地址读数据至缓存3
c=atoi(inbuf3); //数据字符串型化为整形 危险距离
clear();
read_s24(0x03,3);
d=atoi(inbuf3); //安全距离
clear();
read_s24(0x06,3);
e=atoi(inbuf3); //启动速度
clear();
read_s24(0x09,3);
f=atoi(inbuf3); //安全速度
clear();
read_s24(0x12,3);
x=atoi(inbuf3); //速度脉冲系数
clear();
read_s24(0x15,3);
t0=atoi(inbuf3); //制动距离与速度比 第一组
clear();
read_s24(0x18,3);
t1=atoi(inbuf3); //制动距离与速度比 第二组
clear();
read_s24(0x21,3);
t2=atoi(inbuf3); //制动距离与速度比 第三组
clear();
read_s24(0x24,3);
t3=atoi(inbuf3); //制动距离与速度比 第四组
clear();
read_s24(0x27,3);
t4=atoi(inbuf3); //制动距离与速度比 第五组
clear();
read_s24(0x30,3);
t5=atoi(inbuf3); //制动距离与速度比 第六组
clear();
read_s24(0x33,3);
t6=atoi(inbuf3); //制动距离与速度比 第七组
clear();
read_s24(0x36,3);
t7=atoi(inbuf3); //制动距离与速度比 第八组
clear();
read_s24(0x39,3);
t8=atoi(inbuf3); //制动距离与速度比 第九组
clear();
read_s24(0x42,3);
t9=atoi(inbuf3); //制动距离与速度比 第十组
}
//===========================================================
//距离、速度字串合并
//===========================================================
void DIS_AND_SPE()
{
inbuf3[0]='D';
inbuf3[1]=copyinbuf1[0];
inbuf3[2]=copyinbuf1[1];
inbuf3[3]=copyinbuf1[2];
inbuf3[4]=copyinbuf1[3];
inbuf3[5]=copyinbuf1[4];
inbuf3[6]=copyinbuf1[5];
inbuf3[7]=',';
inbuf3[8]=BUF2[0];
inbuf3[9]=BUF2[1];
inbuf3[10]=BUF2[2];
inbuf3[11]=BUF2[3];
inbuf3[12]=BUF2[4];
inbuf3[13]=BUF2[5];
}
//===========================================================
//函数名称:examine()
//功能描述:检查字符串是否为合法数据
//输入:*st
//输出:0/1
//全局变量: /
//调用模块: /
//===========================================================
uchar examine(uchar *st)
{
uchar i;
for(i=0;i<8;st++,i++)
{
if((*st>='0'&&*st<='9')||*st=='.'||*st=='M')
continue;
else return(0);
}
return(1);
}
//===========================================================
//函数名称:change()
//功能描述:接收距离数据格式调整,去掉第一个非零数值前的零
//输入:*buffer
//输出:count
//全局变量: /
//调用模块: /
//===========================================================
change(uchar *buffer) //移位操作,去掉数据
{
uchar i,count;
uchar *s;
s=buffer; //保存指针首地址
count=0; //移位次数计数附初值
while(*buffer=='0'&&count!=3) //判断指针第一位、第二位、第三位是否为零,是,作移位
{
for(i=0;*buffer!='M';buffer++,i++) //依次移位
*buffer=*(buffer+1);
buffer=s; //指针回首地址
count++; //计数加一
}
for(i=0;i<8;buffer++,i++) //前移位,后补空
{
if(*buffer=='M')
*buffer=0x20;
}
return(count); //返回移位次数
}
//=====================================================
//串口初始化
//=====================================================
void init(void) //串口初始化
{
TMOD=0x51; //T1计数,T0定时
T2CON=0x30; //T2作为波特率发生器
SCON=0x50;
PCON=0x80;
RCAP2H=0xFF; //波特率76800
RCAP2L=0xF7;
PT0=1; //T0中断优先级高
PS=0; //串口中断优先级低
TR2=1; //开定时器T2
}
//=====================================================
//开定时器T0
//=====================================================
void start_T0(void)
{
TR1=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -