大星派 2018-07-09 18:42 采纳率: 0%
浏览 2081
已结题

RS485通信不成功,求解答,十分感谢!

使用PIC18F452连接MAX485芯片进行485通信,然后通过485转USB接口连接到电脑,使用串口助手收发,但是通信不成功,没有收到数据,也无法发送数据。
485是用的自动收发电路,如下图
图片说明

程序如下:
#include
#include

#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long

unsigned char FIFO;
char flag=0;

void delayms(uint z)
{
uint a,b;
for(a=z;a>0;a--)
for(b=120;b>0;b--);
}

void init_uart()
{
TRISC=0x80;
TXSTA=0X24; //使能串口发送8位数据
RCSTA=0X90; //使能串口工作,连续接收
SPBRG=25; //设置波特率为9600BPS 4000000/9600/16-1=25
RCIE=1; //接收中断
GIE=1; //全局中断
PEIE=1; //外部中断

}

void IO_INIT(void)
{
ADCON1=0xFF; //禁止的AD转换功能(第二功能)
TRISE = 0;
TRISC = 0X00;
TRISD = 0;
PORTD = 0;
TRISA = 0;
TRISB =0X00;
PORTB =0;
//PORTE = 0XFF;
RE0=0;
RE1=0;
RE2=0;
RBPU=0;
}

void Send_Date(unsigned char date)
{
TXREG=date;
delayms(2);
while(TXIF==0);
TXIF=0;

}

//--------------------------------------------------------------------------------------------------
// 函数名称: serial()串口接收中断处理函数
// 函数功能: 接收数据到数据缓冲区
//--------------------------------------------------------------------------------------------------

void interrupt usart()
{
if(RCIF) //判断是否为串口接收中断
{
RCIF=0;
FIFO=RCREG; // 接收数据并存储
flag=1;
}
}
void main()
{
uint x;
IO_INIT();// IO初始化
init_uart();
while(1)
{
///* 2018.7.2 发送程序
if(flag)//收到数据 发出
{
flag=0;
Send_Date(FIFO);
delayms(5);
RCIF=0;
}

delayms(100);

if(x++>15)//一段时间发送一次数据
{
x=0;

Send_Date('T');
Send_Date('e');
Send_Date('s');
Send_Date('t');
Send_Date('o');
Send_Date('k');
Send_Date(0x0d);
Send_Date(0x0a);

delayms(5);
RCIF=0;

}
}

}

展开全部

  • 写回答

5条回答 默认 最新

  • jintiann 2018-07-09 22:19
    关注

    代码应该没问题,毕竟网上好多参考的,量下硬件电平。

    评论
  • weixin_35905430 2018-07-09 22:20
    关注

    把终端电阻R39去掉

    评论
  • 普通网友 2018-07-10 01:33
    关注

    建议在初次验证电路的时候先确认自己的程序是可以在其他类似的485模块上是可以跑起来,然后再找硬件 的问题,,您现在的提问,大家只能给您粗略宏观的提建议,并不能直接点出您的问题

    评论
  • pengyongnet 2018-07-13 00:56
    关注

    先要看自己的软件有问题没用逻辑分析仪看下,或示波器看下单片机接口的输出信号,后开485看电路有问题没,有问题在网上看看参考电路

    评论
  • weixin_40389213 2018-12-11 19:58
    关注

    电路都不对啊,软件怎么搞肯定都发不出来的,通常做法是通过一个拉下电阻短接2/3管脚,分配一个IO来控制485工作模式

    评论
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 cplex运行后参数报错是为什么
  • ¥15 之前不小心删了pycharm的文件,后面重新安装之后软件打不开了
  • ¥15 vue3获取动态宽度,刷新后动态宽度值为0
  • ¥15 升腾威讯云桌面V2.0.0摄像头问题
  • ¥15 关于Python的会计设计
  • ¥15 聚类分析 设计k-均值算法分类器,对一组二维模式向量进行分类。
  • ¥15 stm32c8t6工程,使用hal库
  • ¥15 找能接spark如图片的,可议价
  • ¥15 关于#单片机#的问题,请各位专家解答!
  • ¥15 博通raid 的写入速度很高也很低
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部