//发送一个char
void SendData_1(unsigned char dat)
{
SBUF = dat; //Send current data
while(!TI); //Wait for the previous data is sent 等待前一个转换结束
TI = 0; //Clear TI flag,清除TI标志位
}
//发送一个字符串
void SendString_1(unsigned char *s)
{
RS_1 = 1; //使能发送
Delay_us(1000);
while(*s) //Check the end of the string
{
SendData_1(*s++); //Send current char and increment string ptr
}
RS_1 = 0; //发送完毕置位使能接收
Delay_us(1000);
}
回复【11楼】zywh
-----------------------------------------------------------------------
看你的原理图,加上拉与下拉应当可以用。
-----------------------------------------------------------------------
今天给A接了上啦电阻,给B接了下拉电阻,电阻用4K7,
数据正确了,但是还有一个问题,
发送的间隔不能太快,
我的程序是上位机发送位号查询本机,本机收到位号再发送信息,
我用串口调试助手测的时候,时间间隔只能20MS以上,20MS以下,会有乱码,程序方面我用原来的程序,就是没有加延时的。
232方面,间隔1MS的话。。。数据都还是很正常的。
不知道跟电阻的大小有没有关系。
-----------------------------------------------------------------------
还有一块板子,加了上拉下拉电阻也没用。
在使能输出的时候,要不要设置为推挽输出啊???
2、收发程序不全;上拉下拉与速度无关.
void SendData_1(unsigned char dat)
{
SBUF = dat; //Send current data
while(!TI); //Wait for the previous data is sent 等待前一个转换结束
TI = 0; //Clear TI flag,清除TI标志位
}
//发送一个字符串
void SendString_1(unsigned char *s)
{
RS_1 = 1; //使能发送
Delay_us(1000);
while(*s) //Check the end of the string
{
SendData_1(*s++); //Send current char and increment string ptr
}
RS_1 = 0; //发送完毕置位使能接收
Delay_us(1000);
}
----------------------这样100% 没问题,你那样用的话,RW切换太频繁,反应不过来的!尤其是使能发送后需要一个比较长的延时,自己试试多少合适吧。
一周热门 更多>