搜索
bottom↓
回复: 0

avr串口和PC通信问题

[复制链接]

出0入0汤圆

发表于 2014-4-18 11:12:25 | 显示全部楼层 |阅读模式
本帖最后由 jinshaopu 于 2014-4-18 11:14 编辑

PC端的程序和C51在多机通信(模式3 SM2=1)模式下工作正常

但是在Protues下仿真的时候
AVR下的接收,不论是发的地址还是数据 IsAdd()都是真,也就是RX8总是1,大侠来指导下是什么情况

#define IsAdd()    (UCSRB&2)

void SerialInit(void)
{
        //设置波特率
        UBRRL = 0x33;
        UBRRH = 0x00;
       
        //RXC   TXC   UDRE    FE    DOR   PE   U2X  MPCM
        //RXC:接收结束
        //TXC:发送结束
        //UDRE:数据寄存器空
        //FE:帧错误
        //DOR:数据溢出
        //PE:校验错误
        //U2X:倍速发送
        //MPCM:多处理器通信模式  1:接收有地址   0:接收数据
        UCSRA=1;

    //接收发送使能
        //RXCIE    TXCIE   UDRIE   RXEN   TXEN  UCSZ2  RXB8  TXB8
        //RXCIE:接收结束中断使能
        //TXCIE:发送结束中断使能
        //UDRIE:数据寄存器空中断
        //RXEN:接收使能
        //TXEN:发送使能
        //USCZ2:字符长度
        //RXB8:接收数据位8
        //TXB8:发送数据位8
        UCSRB=(1<<RXCIE)|(1<<RXEN)|(1<<TXEN)|(1<<UCSZ2);

        //URSEL   UMSEL  UPM1   UPM0  USBS   UCSZ1  UCSZ0  UCPOL  
        //URSEL:寄存器选择
        //UMSEL:串口模式选择  0:异步   1:同步
        //UPM1,UPM0:奇偶校验模式。00:禁止 01:保留  10:偶校验  11:奇校验
        //USBS:停止位选择  0:1位  1:2位
        //UCSZ2,UCSZ1,UCSZ0:字符长度。111:9位  011:8位  010:7位  001:6位   000:5位
        //UCPOL:时钟极性  (仅在同步模式下有用)
        //
        //
        UCSRC=0x80|(3<<UCSZ0);        //设置数据格式:无校验, 9个数据 1个停止位
       
        R485();
}

ISR(SIG_UART_RECV)
{
        uint8 add,temp;
        if( DataError() )//接收出错就重新打开地址帧筛选功能
        {
                temp=UDR;
                OSQFlush(SerialInData);
                AddOn();
        }
        else      
        {               
                if (IsAdd())           //地址
                {
                        add=UDR;
                        if (add==address)
                        {
                                AddOff();
                        }
                        else
                        {
                                AddOn();
                        }
                }
                else                   //数据
                {
                        temp=UDR;
                        #if EN_OS_Q_POST > 0
                OSQPost(SerialInData,temp);
                        #endif
                        #if EN_OS_Q_POST_FRONT > 0
                OSQPostFront(SerialInData,temp);
                        #endif
                }
        }
}

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

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

本版积分规则

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

GMT+8, 2024-7-23 22:38

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

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