找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 840|回复: 2
收起左侧

单片机串行通信奇校验验代码怎么写,我的老是出错

[复制链接]
ID:1073848 发表于 2023-5-10 23:48 | 显示全部楼层 |阅读模式
单片机源程序如下:
  1. #include <reg51.h>

  2. void main()
  3. {
  4.         SCON=0xd0;
  5.         PCON=0x80;
  6.         
  7.         TH1=0xFD;
  8.         TL1=0xFD;
  9.         
  10.         TR1=1;
  11.         ES=1;
  12.         EA=1;
  13.         
  14.         
  15.         TMOD=0x20;
  16.         
  17.         
  18.          
  19.         P2=0xff;
  20.         
  21.         
  22.         
  23.         while(1)
  24.         {
  25.         SBUF=P2;
  26.                 while(!TI);
  27.                 TI=0;
  28.                 while(!RI);
  29.                 RI=0;
  30.                 P0=SBUF;
  31.         }
  32.         

  33. } void server() interrupt 4
  34. {
  35.         
  36.                
  37.         }
复制代码



求助大佬,奇校验代码怎么写,我的老是出错
回复

使用道具 举报

ID:123289 发表于 2023-5-11 15:12 | 显示全部楼层
1、将串行数据做成9位数据传输。
2、发送数据时将数据中的奇偶性,放入第9位中(TB8),再发送。
3、接收时,下载数据后,将第9位(RB9)与下载的数据中的奇偶性做比较,便可识别。
回复

使用道具 举报

ID:883242 发表于 2023-5-11 15:38 | 显示全部楼层
先随便定义一个变量 char ch;

这一句SBUF=P2;改成如下:
ch=P2;
TB8=!P;
SBUF=ch;

接收也做类似处理
ch=SBUF;
if(RB8!=P){ /**** odd parity success ****/
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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