标题: STC8单片机设置485通讯不了,是怎么回事,有人遇到过么? [打印本页]

作者: 远小刘    时间: 2021-7-19 21:50
标题: STC8单片机设置485通讯不了,是怎么回事,有人遇到过么?
//#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();
    }
}


51hei图片_20210719214835.jpg (385.93 KB, 下载次数: 103)

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

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

作者: yzwzfyz    时间: 2021-7-20 09:27
先证明硬件是好的。
作者: 轩辕顶托    时间: 2021-7-20 12:52
STC8系列的MCU,串口发送端(比如P3.1)需要以下3个设置之一:
1、设置为推挽输出。
2、设置为弱上拉输出(就是默认的准双向口),打开内部额外的上拉电阻(3.7K)。
3、设置为弱上拉输出(就是默认的准双向口),外部加上拉电阻。

正如一些朋友说的,有串口通讯的MCU我都基本都用外部晶振(除非不支持),串口加上拉电阻。
作者: dfdfuhuh    时间: 2021-7-20 13:32
我建议你买多一份来备用,我们也不知道你这个是不是坏了的器件。
作者: 远小刘    时间: 2021-7-21 09:00
昨天自己已解决,代码没问题
作者: ly1972001    时间: 2021-7-22 08:59
请补充问题原因和解决方法。
作者: design003    时间: 2021-7-22 09:16
先查硬件 再查软件设置  波特率  奇偶校验  等设置都需要一致  才会调通   
作者: scsi    时间: 2021-7-22 09:38
先检查单片机的UART输出有没有信号, 有的话再检查TTL转RS485的前端芯片
作者: SURUBU1976    时间: 2021-7-22 22:20
应该与下载时选的晶源有关
作者: 雪玉寐影    时间: 2022-5-25 15:35
这种问题通常都是串口设置不匹配。
作者: herui2128    时间: 2022-5-29 21:10
我一般用487芯片,来转换,发送数据时程序中要对487芯片的2个IO同时拉高,然后在拉低接数据




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1