zoukankan      html  css  js  c++  java
  • 51与PC通信协议设计及实现(六):关于串口校验以及串口数据捕获

    本文串口内容为转载:源地址

    那么用C语言怎么来处理单片机收发的偶校验问题呢?直接使用项目中的要求:波特率:9600,偶检验,停止位1,数据位8。

    现在开始:单片机的奇偶校验使用串口工作方式2或者3,在有于波特率要求9600,所以使用串口方式3,这些设置自己查资料解决。

    偶校验:就是发送的8个数据位的1的个数为偶数时,TB8=0;为奇数时,TB8=1;

    奇校验:与偶校验相反的TB8。

    先讲发送字节时的偶校验:

    先看下汇编的解决方案是什么:

    1 MOV A,@R0
    2
    3 MOV C,P
    4
    5 MOV TB8,C
    6
    7 MOV SBUF,@R0

    再看下C语言的解决方案:

     1 void chk_even(uchar dat)//要发送的数据位dat
    2
    3 {
    4
    5 ACC=dat;
    6
    7 TB8=P;
    8
    9 SBUF=dat;
    10
    11 while(TI==0);
    12
    13 TI=0;
    14
    15 }

    奇校验位:

    void chk_even(uchar dat)//要发送的数据位dat

    {

    ACC=dat;

    TB8=(~P);

    SBUF=dat;

    while(TI==0);

    TI=0;

    }

    关于C语言的接受数据偶校验如下:

    void chk_even(uchar dat)//要接收的数据位dat

    {

       while(RI==0);

        RI=0;

        dat=SBUF;

        ACC=dat;

        if(RB8==P)   chk_flag=0;

        else    chk_flag=1;

        }

    关于上位机的串口数据捕获

  • 相关阅读:
    独立人格,让人生更美好
    版本控制入门简介
    Android蓝牙操作
    Android Rect和RectF的区别
    做个环保主义的程序员
    java/android下JNI编程总结
    别太单纯,也别太不单纯
    C++ namespace的用法
    JNI编程
    企业架构 - 架构原则
  • 原文地址:https://www.cnblogs.com/ikesee/p/2410939.html
Copyright © 2011-2022 走看看