空闲时rs485不停发数据
还是485的问题电路图在2楼
测试的时候
发现在空闲的时候485总是不停的发送数据
不知道是什么原因
都是0x00
程序是一个很简单的测试程序
#define uchar unsigned char
bit Rflag=0;
uchar Accedata;
/*******串口初始化******************/
void Usart_Init(void)
{
// AUXR=0X00;
SCON=0X50;
PCON=0X80; //波特率加倍
TMOD=0X20;
TH1=0XF3; //波特率2400
TL1=0XF3;
EA=1;
ES=1;
TR1=1;
}
void Usart_Send(uchar Sdata)
{
SBUF=Sdata;
while(!TI);
TI=0;
}
/*******RS485发送程序***************************/
void RS485_Send(uchar Sdata)
{
RS485=1; //RS485用于使能485发送和接收
Usart_Send(Sdata);
RS485=0;
}
void main()
{
Usart_Init();
// Usart_Send(0);
RS485=0;
while(1)
{
// Usart_Send(0xff);
if(Rflag){
RS485_Send(Accedata);
Rflag=0;
}
}
}
void Usatr() interrupt 4
{
EA=0;
if(RI){
Rflag=1;
Accedata=SBUF;
}
EA=1;
}
其中RS485就是那个控制引脚DE 120R电阻加上没? 前面接单片机串口,电路是这样子的
http://cache.amobbs.com/bbs_upload782111/files_52/ourdev_719597MQUQ79.jpg
(原文件名:未命名.jpg) 上拉下拉电阻用的太大了。用1K的吧。 在while(1)中加上RS485=0试试 发送完切换为接收状态。另外上下拉你有算过吗? 回复【5楼】lovelywwei
-----------------------------------------------------------------------
我发现换了另外一个程序就可以了
不知道为什么
但是单独的测试部分是从那个程序上面复制过来的 485芯片的Rx管脚加一个10K的上拉电阻试看看 上下拉弄反了,A上拉 B下拉。
页:
[1]