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

[复制链接]
10898|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  先谢谢了,兄弟急用!
wangkangming 发表于 2012-6-4 15:49 | 显示全部楼层
没看明白呢。
jin1song 发表于 2012-7-2 10:12 | 显示全部楼层
搞校验的时候查到了有帧校验和单字节校验,请问我下面写的格式是什么校验
9600,n,8,1
最常用的是帧校验吗?
NICKY99 发表于 2012-7-3 16:57 | 显示全部楼层
以前用51时也跟2楼的差不多。
coody 发表于 2012-7-3 17:00 | 显示全部楼层
C51我一般这样处理:
ACC = dat;
TB8 = P;
SBUF = ACC;

另外,除非是跟别的设备配合做通讯,否则,不建议使用奇耦校验,可以使用CRC8或CRC16。
ldzhi2012 发表于 2012-9-27 11:30 | 显示全部楼层
美丽的天空 发表于 2014-7-30 16:08 | 显示全部楼层
学习了!但是不怎么明白
ningling_21 发表于 2014-7-30 18:20 | 显示全部楼层
奇偶校验不能验证所有数据位正确性,CRC校验更可靠...
chloefive 发表于 2014-8-4 15:28 | 显示全部楼层
coody 发表于 2012-7-3 17:00
C51我一般这样处理:
ACC = dat;
TB8 = P;

你好!我是初学者,能请问你一下那三个语句的意思吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

191

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部