打印

请教51单片如何实现串口奇偶校验?

[复制链接]
9673|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
21ele|  楼主 | 2007-2-26 13:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一直使用avr,没有发现这是个问题,现在要用51,突然发现实现起来还挺麻烦的,汇编下利用psw的奇偶校验位,还算可以实现,C语言下不能直接控制acc,所以我觉得可能只有嵌入汇编程序是最好的办法了,不知大家有没有搞过,给点经验?

相关帖子

沙发
一无所知| | 2007-2-26 14:14 | 只看该作者

我是这么做的,欢迎拍砖~

    if(ParitySet!=None)        //校验判断
    {
              if(ParitySet==Odd)             //奇校验
              {
                      ACC = SBUF;
        if(RB8!=~P)
             bParErrFlag = 1;
         }
         else
         if(ParitySet==Mark)            //置位校验
         {
        if(RB8!=1)
            bParErrFlag = 1;
          }
          else
          if(ParitySet==Even)        //偶校验
          {
                      ACC = SBUF;
        if(RB8!=P)
            bParErrFlag = 1;
          }
    }

使用特权

评论回复
板凳
computer00| | 2007-2-26 14:27 | 只看该作者

正如楼上所说,是可以直接访问ACC的,在头文件中有特殊寄存

使用特权

评论回复
地板
mn14174| | 2007-3-25 22:31 | 只看该作者

看不明白

上面的程序好像有很多变量都没有说明定义,看不明白,能不能把你完整的程序发给我啊!!!!我的邮箱事wangbin1985827@yahoo.com  先谢谢了,兄弟急用!

使用特权

评论回复
5
wangkangming| | 2012-6-4 15:49 | 只看该作者
没看明白呢。

使用特权

评论回复
6
jin1song| | 2012-7-2 10:12 | 只看该作者
搞校验的时候查到了有帧校验和单字节校验,请问我下面写的格式是什么校验
9600,n,8,1
最常用的是帧校验吗?

使用特权

评论回复
7
NICKY99| | 2012-7-3 16:57 | 只看该作者
以前用51时也跟2楼的差不多。

使用特权

评论回复
8
coody| | 2012-7-3 17:00 | 只看该作者
C51我一般这样处理:
ACC = dat;
TB8 = P;
SBUF = ACC;

另外,除非是跟别的设备配合做通讯,否则,不建议使用奇耦校验,可以使用CRC8或CRC16。

使用特权

评论回复
9
ldzhi2012| | 2012-9-27 11:30 | 只看该作者
顶8楼

使用特权

评论回复
10
美丽的天空| | 2014-7-30 16:08 | 只看该作者
学习了!但是不怎么明白

使用特权

评论回复
11
ningling_21| | 2014-7-30 18:20 | 只看该作者
奇偶校验不能验证所有数据位正确性,CRC校验更可靠...

使用特权

评论回复
12
chloefive| | 2014-8-4 15:28 | 只看该作者
coody 发表于 2012-7-3 17:00
C51我一般这样处理:
ACC = dat;
TB8 = P;

你好!我是初学者,能请问你一下那三个语句的意思吗?

使用特权

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

本版积分规则

21

主题

191

帖子

1

粉丝