标题:
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)
下载附件
2021-7-19 21:48 上传
单片机发送出来的数据经过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