搜索
bottom↓
回复: 15

RS485串口通讯~

[复制链接]

出0入0汤圆

发表于 2010-4-15 15:39:49 | 显示全部楼层 |阅读模式
大家好~ 我又来了~
这个程序也很简单,串口调试助手发给单片机,单片机再发回串口调试助手~  那么接收区就应该是发送区的吧~
  现在是用RS485传输了~  计算机串口接了个RS232转485的转换器~   然后单片机这边是通过75176芯片~~~

我写的程序这样的、、

#include<reg52.h>

sbit RandD=P3^5;
unsigned char flag,a;
void main()
{

        TMOD=0x20;//设置定时器1为工作方式2
        TH1=0xfd;
        TL1=0xfd;
        TR1=1;          //至此为设置波特率
        REN=1;
        SM0=0;
        SM1=1;
        EA=1;
        ES=1;
        RandD=0; //接收

        while(1)
                {
                        if(flag==1)                                //此时接收的数据在a中
                                {
                                    
                                        ES=0;                         //关串口中断,防止发送中断再次进入中断函数
                                        flag=0;
                                        SBUF=a;                         //a中的数发送到发送缓冲器中
                                        while(!TI);                 //TI为1时,继续~ 即发送完毕
                                        TI=0;
                                        ES=1;
                                        RandD=0;
                                }
                }
}

void ser() interrupt 4         //串口接收中断
{
        RI=0;           //软件清零
        a=SBUF;           //SBUF中接收到的数据赋给a       
        RandD=1;   
        flag=1;
}

那个RandD是使能,高电平发送,低电平接收~~~

问题出来了,串口调试助手里,16进制收发~~   如果发01,收到81,发02,收到82~~  发45,收到C5; 发7F,收到FF,比这大的数才收发正常~

这是什么原因呢? 不知道各位有没有碰到这样的情况~~ 我调试助手的波特率是9600~~~~

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2010-4-15 16:00:18 | 显示全部楼层
我觉得加了0x80,说明最高位一直是1~~~   但是为什么呢? 哪里要设置什么吗?  help~~~

出0入0汤圆

发表于 2010-4-15 16:26:38 | 显示全部楼层
看波特率设置对不

出0入0汤圆

 楼主| 发表于 2010-4-15 17:18:12 | 显示全部楼层
回复【2楼】amazing030
-----------------------------------------------------------------------

   哥我太崇拜你了~   真是amazing~~
   刚还跑去问了个老师呢~ 他也这样说~~
   我这12M的晶振,9600波特率有8%的误差~
   最后我弄成2400波特率,0.06%误差,终于没问题了……
   看来要用9600波特率,还是得换成11.0592晶振啊~~

出0入0汤圆

发表于 2010-4-15 21:09:19 | 显示全部楼层
2400 和9600 还有个区别  抗干扰性和传输距离

出0入0汤圆

发表于 2011-6-3 17:23:48 | 显示全部楼层
我也遇到相同的问题,我用的是M16 ,我是8M晶振,原来9600波特率,改成19200就好了

出0入0汤圆

发表于 2011-6-8 20:55:16 | 显示全部楼层
呵呵...

出0入0汤圆

发表于 2011-6-29 12:31:37 | 显示全部楼层
确实

出0入0汤圆

发表于 2011-8-30 10:55:18 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-8-31 19:20:04 | 显示全部楼层
这种一般都是波特率的问题.

出0入0汤圆

发表于 2011-8-31 20:13:16 | 显示全部楼层
用12M的晶振设9600就不准了,误差大,但用11.592M的,设9600就很准了!!

出0入0汤圆

发表于 2011-8-31 20:59:05 | 显示全部楼层
经验问题而已

出0入0汤圆

发表于 2011-9-1 08:15:30 | 显示全部楼层
厉害,一看就看出来了。。。。。膜拜下

出0入0汤圆

发表于 2011-9-1 16:24:17 | 显示全部楼层
经验来源于实践!!交流能够让我们少走弯路!!!

出0入0汤圆

发表于 2011-9-29 15:30:54 | 显示全部楼层
我也来拜下!学习了!

出0入0汤圆

发表于 2012-8-28 09:57:25 | 显示全部楼层
mark  过两天可能要做这个通信
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 00:28

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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