用单片机和PC通讯,单片机可以成功发送,却无法正确接收。

来源:百度知道 编辑:UC知道 时间:2024/06/04 02:52:25
收到的总是0.
#include"reg51.h"
sbit EN485=P2^2;

unsigned char ss=0;
unsigned char ww=0;
void delay(unsigned int aa)
{unsigned int i=0;
while(aa--)
for(i=0;i<113;i++);
}
void main()
{

TMOD=0x20; //定时器1,模式2,8位重装
SCON=0x50; //串口工作方式1,允许接收
//PCON=0x80; //令SMOD=1,倍频
TH1=0xfd;
TL1=0xfd; //波特率9600

TI=0;RI=0;
TR1=1;

EN485=0;

while(1)
{
if(RI)
{
delay(10);
RI=0;

}
ww='x';
EN485=1;
delay(10);
SBUF=ww;
while(TI!=1);
TI=0;
EN485=0;

}}

用的是串口调试助手发送的。
串口经过232转485,后再经过MAX485送单片机
接线没问题,教科书上的标准接法
EN485是发送时给MAX485置高电平发送,低电平接收
5伏的电源,共地

第一个问题 是485 有一个允许位,接收的时候置低,发送时置高 你量过ENBLE没有?
while(1)
{
if(RI)
{
WW = SBUF; //你虽然接收了,但你没处理你的数据 WW为临时寄存器 自己定义
RI=0; //清中断

}

程序有问题,请仔细检查程序的框架结构

你是用什么调试的?串口调试精灵吗?

串口问题。具体我也说不清楚