485串口通讯请赐教[求助]
上电,单片机向PC一直发数据,每100MS发5个字节即0x11 0x22 0x33 0x44 0x55
可是在PC上用串口调试工具收到的确是(16进制显示) 00 77 B7 76 55 FF DD BB 99 77 55 DD BB 99 77 55 DD BB 99 77 55 DD BB 99 77 55 DD BB 99 77 55 DD BB 99 77 55 DD BB 99 77 55 DD BB 99 77 55 DD BB 99 77 55 DD BB 99 77 55 DD BB 99 77 55 DD BB 99 77 55 DD BB 99 77 55 DD BB 99 77 55 DD BB 99 77 55 DD BB 99 77 55 DD BB 99 77 55 DD BB 99 77 55 DD BB 99 77 55 DD BB 99 77 55 DD BB 99 77 55 DD BB 99 77 55 DD BB 99 77 55 DD BB 99 77 55 DD BB 99 77 55 DD BB 99 77 55 DD BB 99 77 55 DD BB 99 77 55 DD BB 99 77 55 DD BB 99 77 55 DD BB 99 77 55 DD BB 99 77 55 DD BB 99 77 55 DD BB 99 77 55 DD BB 99 77 55 DD BB 99 77 55 DD BB 99 77 55 DD BB 99 77 55 DD BB 99 77 55
程序如下,请前辈们指教
#include <regx51.h>
sbit RW485 = P3^2;//485发送接收控制端
void delay_1ms()
{
unsigned int i;
for(i=1;i <(12*143-2);i++);
}
void delay_10ms()
{
unsigned int i;
for(i=0;i <10;i++)
delay_1ms() ;
}
void InitSerial(void)
{
TMOD = 0X20; //设置T1为模式2,8位自动重装,T0为模式1。
SCON = 0X50;
PCON = 0X00; //设置波特率为 9600B/S。
TH1 = 0xFD;
TL1 = 0xFD;
TR1 = 1; //启动定时器
RW485 = 0;//485接收状态
}
void SerialOUTByte(unsigned char SData)
{
RW485 = 1;//485发送状态
SBUF = SData;
while (TI == 0);
TI = 0 ;
RW485 = 0;//485接收状态
}
//主函数
void main()
{
unsigned char i,t[5]={0x11,0x22,0x33,0x44,0x55};
InitSerial();
while(1)
{
for(i=0;i <10;i++) delay_10ms();
for(i=0;i <5;i++) SerialOUTByte(t[i]);
}
}
发表时间:2009年7月18日9:59:35