找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2651|回复: 10
收起左侧

STC8单片机设置485通讯不了,是怎么回事,有人遇到过么?

[复制链接]
ID:415338 发表于 2021-7-19 21:50 | 显示全部楼层 |阅读模式
5黑币
//#include <reg51.h>
////#include <absacc.h>
#include<stc8h.h>
#define uchar unsigned char
#define uint  unsigned int
//#define leng 8
//uchar idata buf[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
////uchar idata buf[8]={0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01};
uchar Buffer =0x01;

////sbit RS485DIR=P2^0;
sbit RS485DIR = P3^2;
/************延时程序************/
void delay(uchar k)
    {
        uchar j;
        while((k--)!=0)           
                {
                for(j=0;j<125;j++)
                        {;}
                }
    }
void delayus(uchar k)
    {

        while(k--) ;         

    }
void init(void)
{
    TMOD=0x20;                 
    TH1=0xe8;
    TL1=0xe8;
    PCON=0x00;               
    TR1=1;                  
    SCON=0x90;              
}                          
void send1()
{   
//     RS485DIR=1;
        RS485DIR=0;
        delayus(5);
     SBUF = Buffer;
       while(TI==0);
       TI=0;
       
}

//void send2(uchar *As_Buffer,uchar As_Length)
//{   
//     RS485DIR=1;
//        while(As_Length--)
//        {
//       SBUF = *As_Buffer;
//       while(TI==0);
//       TI=0;
//           As_Buffer++;
//        }
//        delayus(5);
//         RS485DIR=0;
//}


void main(void)
{
    P0M0 = 0x00;
        P0M1 = 0x00;
        P1M0 = 0x00;
        P1M1 = 0x00;
        P2M0 = 0x00;
        P2M1 = 0x00;
        P3M0 = 0x00;
        P3M1 = 0x00;
        P4M0 = 0x00;
        P4M1 = 0x00;
        P5M0 = 0x00;
        P5M1 = 0x00;
        init();       
    while(1)
    {
                send1();
    }
}


单片机发送出来的数据经过485

单片机发送出来的数据经过485
回复

使用道具 举报

ID:123289 发表于 2021-7-20 09:27 | 显示全部楼层
先证明硬件是好的。
回复

使用道具 举报

ID:954170 发表于 2021-7-20 12:52 | 显示全部楼层
STC8系列的MCU,串口发送端(比如P3.1)需要以下3个设置之一:
1、设置为推挽输出。
2、设置为弱上拉输出(就是默认的准双向口),打开内部额外的上拉电阻(3.7K)。
3、设置为弱上拉输出(就是默认的准双向口),外部加上拉电阻。

正如一些朋友说的,有串口通讯的MCU我都基本都用外部晶振(除非不支持),串口加上拉电阻。
回复

使用道具 举报

ID:305386 发表于 2021-7-20 13:32 | 显示全部楼层
我建议你买多一份来备用,我们也不知道你这个是不是坏了的器件。
回复

使用道具 举报

ID:415338 发表于 2021-7-21 09:00 | 显示全部楼层
昨天自己已解决,代码没问题
回复

使用道具 举报

ID:236035 发表于 2021-7-22 08:59 | 显示全部楼层
请补充问题原因和解决方法。
回复

使用道具 举报

ID:798631 发表于 2021-7-22 09:16 | 显示全部楼层
先查硬件 再查软件设置  波特率  奇偶校验  等设置都需要一致  才会调通   
回复

使用道具 举报

ID:955467 发表于 2021-7-22 09:38 | 显示全部楼层
先检查单片机的UART输出有没有信号, 有的话再检查TTL转RS485的前端芯片
回复

使用道具 举报

ID:507641 发表于 2021-7-22 22:20 | 显示全部楼层
应该与下载时选的晶源有关
回复

使用道具 举报

ID:99525 发表于 2022-5-25 15:35 | 显示全部楼层
这种问题通常都是串口设置不匹配。
回复

使用道具 举报

ID:398219 发表于 2022-5-29 21:10 | 显示全部楼层
我一般用487芯片,来转换,发送数据时程序中要对487芯片的2个IO同时拉高,然后在拉低接数据
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表