打印

串口帧错误处理程序

[复制链接]
5680|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mei326|  楼主 | 2011-12-26 09:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
if(RC1IF)
    {    //已接收字节        
        ferr1bit = FERR1;
        *bMode = RX9D1;
        *byte  = RCREG1;   
        if(ferr1bit)//帧错误
        {   
            *bMode = 0;
            *byte  = 0;
            sta    = 0;  
            ferr1bit = 0;
        }
        else
            sta    = 1;
        if(RC1IF)
        {
            *bMode = RX9D1; //返回方式位
            *byte  = RCREG1; //返回字节值
        }            
        if(OERR1)
        {       //帧溢出,重启模块
            CREN1 = 0;
            CREN1 = 1;
            sta   = 0;
        }      
    }


大伙帮我看看,这我18F系列串口出现帧错误或帧溢出时我的处理方式!看是否正确实用!欢迎指正~
沙发
mei326|  楼主 | 2011-12-26 09:41 | 只看该作者
使用的是内部32M的晶振,9600波特率

使用特权

评论回复
板凳
mei326|  楼主 | 2011-12-26 10:07 | 只看该作者
出现了帧错误如何处理呢?是重新初始化串口还是不处理呢
?

使用特权

评论回复
地板
yewuyi| | 2011-12-26 14:47 | 只看该作者
在PIC上写中断程序,一般要求中断容许位和中断标志位一起判断来确定中断源。

例如:if(RC1IF&&RC1IE){}

使用特权

评论回复
5
mei326|  楼主 | 2011-12-26 23:33 | 只看该作者
楼上请不要跑题!我希望得到的答案是如题所说的帧错误处理方面的!
  再者,我用的是查询的方式~非中断也!

使用特权

评论回复
6
yewuyi| | 2011-12-27 08:58 | 只看该作者
楼上请不要跑题!我希望得到的答案是如题所说的帧错误处理方面的!
  再者,我用的是查询的方式~非中断也!
mei326 发表于 2011-12-26 23:33


:L ,提问还要强迫别人回答方式?

在PIC的芯片上,串口通信错误时产生的那两个标志,处理方法一般都有标准解决方法,那就是:
1、OERR==1?
OERR必须用软件清除,方法是连续读接受寄存器两次,然后执行CREN=0;CREN=1;
2、FERR==1?
这个更简单,自然看数据手册就懂了。

再次提示,在PIC上面,最好是带中断容许位一起判断

使用特权

评论回复
7
mei326|  楼主 | 2011-12-27 11:36 | 只看该作者
谢谢了~

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:与其等待机会,不如主动出击...

117

主题

764

帖子

2

粉丝