找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2107|回复: 5
打印 上一主题 下一主题
收起左侧

485通讯问题

[复制链接]
跳转到指定楼层
楼主
ID:65540 发表于 2014-8-28 12:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我刚入门,大伙有时间帮我看一下,我想做一个接收485传过来的数据,每组11个然后传回去,现在是发什么都传回40个0.请大伙帮个忙,谢谢!

#include <reg52.h>
#include <intrins.h>

void ConfigCom(unsigned char band);
void IniSys(void);
void ComSend(void);
void DelayX10us(unsigned char t);
sbit Flag485=P1^7;               //0发,1接
unsigned char FlagSendOver;
unsigned char ComArr[40];
unsigned char ComNums;
void main(void)
{

        IniSys();
        while(1)
        {
                         Flag485=1;
                        
                  if(ComNums>=10)
                {
                        Flag485=0;
                        ComSend();
                        Flag485=1;
                        ComNums=0;
                }
       
        }
               
}
//ini
void IniSys(void)
{

           ConfigCom(9600);
       
        ES=1;
        FlagSendOver=0;
        Flag485=1;
        ComNums=0;
        EA=1;
}
//配置串口
void ConfigCom(unsigned char band)
{
        SCON=0x50;          //串口模式1
        TMOD &=0x0F;
        TMOD |=0x20;
        TH1=256-(11059200/12/32)/band;
        TL1=TH1;
        ET1=0;
        TR1=1;
}

//串口中断
void InterruptUART()interrupt 4
{
                 if(RI)
                {                        
                        ComArr[ComNums++]=SBUF;
                        RI=0;                
                }
                if(TI)
                {
                        TI=0;
                        FlagSendOver=1;
                }
}

//串口发送
void ComSend(void)
{
        unsigned char i;
        Flag485=0;
        for(i=0;i<ComNums;i++)
                  
        {          FlagSendOver=0;                   
                  SBUF=21;//ComArr[i];
                  while(!FlagSendOver);
                  
        }
        DelayX10us(5);
        Flag485=1;
}

//************
//延时
//************
void DelayX10us(unsigned char t)
{
        do
        {
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
                _nop_();
       
        }while(--t)        ;

}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2014-8-31 17:00 | 只看该作者
顶一下
回复

使用道具 举报

板凳
ID:1 发表于 2014-8-31 17:00 | 只看该作者
在232下面测试 正常吗?
回复

使用道具 举报

地板
ID:137263 发表于 2016-8-31 20:54 | 只看该作者
我也遇到过同样的问题,是收发线转232时接反了
回复

使用道具 举报

5#
ID:138155 发表于 2016-9-1 16:20 | 只看该作者
用示波器抓波形分析了吗
回复

使用道具 举报

6#
ID:143203 发表于 2016-12-23 16:04 | 只看该作者
有原理图么
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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