工作总结
(1)在原来基础上加了485芯片,DE和RE端接到了DIO8,其余接到5139的串口1,485通信是要控制好,DIO8高电平使能发送数据,DIO8低电平使能接收数据。
在调试485芯片时遇到麻烦,主要问题是DIO8接到了485的DE和RE,对于DIO8的控制没有做好,特别是要保证足够时间的延时。
最终调试成功:
OUTINIT ;//DIO8设置为输出
DELAY_TIME(5);//延时5ms
IO8_OUTH ;//DIO8输出高电平
DELAY_TIME(5);
vPutC1(0x01);
vPutC1(0x03);
vPutC1(0x1b);
vPutC1(0x58);
vPutC1(0x00);
vPutC1(0x10);
vPutC1(0xc3);
vPutC1(0x31);
DELAY_TIME(5);//延时5S解决了最后发送的数据出错的问题
IO8_OUTL;//DIO8设置低电平
DELAY_TIME(50);
vSendData(receive,0x01);
(2)对于串口中断接收数据的处理
由于返回数据量大,完全接收不现实,所以对数据进行判断很重要,既保证数据的正确又提取了有用的数据。
对于在串口中断中不要添加过多程序,以免造成数据堵塞。
解决数据堵塞问题可以加一个flag,在中断外部判断flag,再进行相应的数据处理。
例子:
if(flag==1)//在中断里flag置位
{
flag=0;//清零
OUTINIT ;//DIO8设置为输出
DELAY_TIME(5);//延时5ms
IO8_OUTH ;//DIO8输出高电平
DELAY_TIME(5);
vPutC1(data);
vPutC1(0x01);
DELAY_TIME(5);
IO8_OUTL;//DIO8设置低电平
DELAY_TIME(5);
}