单片机奇偶校验

作者&投稿:其纯 (若有异议请与网页底部的电邮联系)
51单片机 奇偶校验~

呵呵,在这两条指令的前后,你各忽略了一条指令。请看下列程序及说明:

MOV A, #待发数据 ;数据进了A,即刻生成校验位P
MOV C, P
MOV TB8, C ;校验位送到TB8
MOV SBUF, A ;发送数据,以及P

上述写法,是偶校验。奇校验,需要增加一条取反指令,如下:

MOV C, P
CPL C
MOV TB8, C ;校验位送到TB8

就这些。

在51单片机中,只要将一个值传送给累加器,这个数的奇偶校验值就会影响P。一般而言,在串行通讯中为确保传输数的准确,用到校验位的情况比较多。以下是程序代码:

#include

main()
{
char dat;
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
SCON=0xd0;
while(1)
{
dat++;
ACC=dat;
TB8=P; //校验位送第九数据位TB8
SBUF=ACC;
while(TI==0);
TI=0;
}
}

通常,串行通信的一帧的格式是8-n-1,即8位数据、无校验、1个停止位。
有时为了提高准确度,需要增加一个“奇”校验位或者“偶”校验位。
对于高级语言的做法是很简单的,只要把格式命令“8-n-1”,改为“8-P-1”或“8-O-1”即可。
串行口在带有校验位的通信方式中,是先发送8位数据,然后再发送校验位。
51单片机也可以按照带有校验位的方式进行串行通信,这在51单片机中称为9位数据方式。
51单片机中有两个位,分别称为TB8和RB8,它们在“无校验”的时候,并没有用处。
当51单片机用9位数据方式进行串行通信的时候,TB8和RB8的作用如下:
51单片机在发送的时候,先发送8位数据,然后发送TB8中的内容;
51单片机在接收的时候,先接收8位数据,然后接收校验位,存到RB8中。
编写51单片机程序的时候,应该在发送数据之前,在TB8中,写好待发送的校验位。
8位数据的校验位,可以利用单片机中奇偶标志位P来自动生成,程序如下。
MOV A, #待发数据 ;数据进了A,即刻生成奇偶标志位P
MOV C, P
MOV TB8, C ;校验位送到TB8
MOV SBUF, A ;发送数据,以及P
由于P = 1则说明A中有奇数个1,所以上述程序是“偶”校验的形式。
如果要求的是“奇”校验,则需要增加一条取反指令,如下:
MOV C, P
CPL C
MOV TB8, C ;校验位送到TB8
接收方会把收到的8位数送到SBUF,第9位数,送到RB8,然后自动设立RI = 1。
之后,就可以用RB8中的内容,对刚才收到的8位数进行正确性检验。

另一个问题:51单片机如何初始化成8-n-1(8数据位,无奇偶校验位,1停止位)波特率,是用串口的模式几?
本来想用串口的模式1,可是仔细一看,模式1是10异步通信方式,1起始位,8数据位,1停止位?
悬赏分:20 - 解决时间:2009-12-1 13:26
问题补充:首先感谢一楼的回答。我还有些疑问,刚才用示波器看了下,当发送0xFF时,示波器显示一位低电平,其余为高电平,这点应该是对的,因为起始位是0.可是为什么发送0xAA时,示波器的(起始位+数据位+停止位)序列是:0 + 0101 0101 + 1,而0x55的序列为:0 +1010 1010 + 1,这两个值好像不对,是相反了,要是调一下刚好对?
;-----------------------------------------------------------------
最佳答案用串口的模式1,是10位异步通信方式。
1起始位,8数据位,1停止位,没有奇偶校验位。
这种模式就是:8-n-1(8数据位,无奇偶校验位,1停止位)的模式。
完全符合你的要求。

0x55的序列为:0 +1010 1010 + 1是对的,因为中间数据传输是低位在前,高位在后。


我的电脑主机箱老是滴滴响,怎么回事啊。
分析原因: 电脑主机滴滴的响,这是由于在内存或者独立显卡的金手指表面形成一种氧化层,造成这个内存和内存槽接触不良,显卡和显卡槽接触不良,引起的黑屏,并发出滴滴声。处理方法: 可以先断电,打开机厢,把内存拨出来,用橡皮擦对着金手指的部位(也就是有铜片的地方,)来回的擦上几回,然后插回内存槽...

电脑开机显示一串英文字母怎么办?
2. 二短声,内存奇偶校验错误。可以进入CMOS设置,将内存Parity奇偶校验选项关掉,即设置为Disabled。不过一般来说,内存条有奇偶校验并且在CMOS设置中打开奇偶校验,这对微机系统的稳定性是有好处的。3. 三短声,系统基本内存(第1个64Kb)检查失败。更换内存吧。4. 四短声,系统时钟出错。维修或更换...

bios报警 三长是什么意思?
2短:内存ECC较验错误。在CMOS Setup中,将ECC校验内存的选项设为Disabled即可排除故障,否则,你可以更换一条内存试一试;3短:系统基本内存(第1个64kB)检查失败。更换内存;4短:系统时钟出错;5短:中央处理器(CPU)错误;6短:键盘控制器错误;7短:系统实模式错误,不能切换到保护模式;8短:显示...

电脑一直滴滴响开不了机?
一、确认电源 a. 确认电源线的连接,插座是否如下图所示插好。如果延长线上有主电源开关,请确保它是开着的状态。若依旧不能开机,可以尝试更换电源延长线和插座 b. 确保电源供应器背面的电源开关已打开,如下图:c. 确认插入主板的ATX电源接口是否插入正确。有些主板可能包含8-pin EATX12V_1,4-...

台式机电脑,win7系统,总是提示“警告:显示器报警”的提示。求各位大神告...
2. 二短声,内存奇偶校验错误。可以进入CMOS设置,将内存Parity奇偶校验选项关掉,即设置为Disabled。不过一般来说,内存条有奇偶校验并且在CMOS设置中打开奇偶校验,这对微机系统的稳定性是有好处的。 3. 三短声,系统基本内存(第1个64Kb)检查失败。更换内存吧。 4. 四短声,系统时钟出错。维...

为什么我的手提电脑一开机就发出叽叽叽叽的声音
2. 二短声,记忆体奇偶校验错误。可以进入CMOS设定,将记忆体Parity奇偶校验选项关掉,即设定为Disabled。不过一般来说,记忆体条有奇偶校验并且在CMOS设定中开启奇偶校验,这对微机系统的稳定性是有好处的。 3. 三短声,系统基本记忆体(第1个64Kb)检查失败。更换记忆体吧。 4. 四短声,系统时钟...

求救~!电脑启动不起来了
2. 二短声,内存奇偶校验错误。可以进入CMOS设置,将内存Parity奇偶校验选项关掉,即设置为Disabled。不过一般来说,内存条有奇偶校验并且在CMOS设置中打开奇偶校验,这对微机系统的稳定性是有好处的。3. 三短声,系统基本内存(第1个64Kb)检查失败。更换内存吧。4. 四短声,系统时钟出错。维修或更换...

笔记本开不开机,插上电源就会滴滴滴的响是怎么回事呢
AMIBIOS响铃声的一般含义是:1.一短声,内存刷新失败。内存损坏比较严重,恐怕非得更换内存不可。2.二短声,内存奇偶校验错误。可以进入CMOS设置,将内存Parity奇偶校验选项关掉,即设置为Disabled。不过一般来说,内存条有奇偶校验并且在CMOS设置中打开奇偶校验,这对微机系统的稳定性是有好处的。3.三短...

座机电话一按按键就滴滴响。按1响一次,按9就响九次,这是怎么回事呀...
解决办法:可能不小心按到*米号键了,长按*键会出现一个符号,然后再按一下*键,选择另外一个符号就可以了。如果*键不行,在长按其他键试试。这是两种模式,第一种是正常拨号,第二种是按1就会嘟嘟响1下,按2就会嘟嘟响2下。按几号键就会响几下。

谁告诉我BIOS中的简单设置?
Memory Parity Check:如果机器上配置的内存条不带奇偶校验功能,则该项一定要设为Disable,目前除了服务器外大部分微机(包括品牌机)的内存均不带奇偶校验.PCI\/VGA PALETTE SNOOP(颜色校正);ASSIGN IRQ FOR VGA(分配IRQ给VGA)IRQ即系统中断地址。OS SELECT FOR DRAM>64MB(设定OS2使用内存容量)如果正在使用OS\/2系统...

毕节市18016007425: 单片机串行通信的奇偶校验是怎么回事~ -
针徐森克: 奇偶校验位是用来保证通信质量的,数据在发送端经计算含有几个1,根据结果的奇偶性决定校验位是1还是0,接收端在按照事先的约定计算收到数据含有的1的个数冰计算出奇偶校验位的值应该是多少,并与收到的校验位比较,如果相同则认为通信是正常的,保存数据,如果不相同则任务通信发生异常,一般会丢弃数据或者通知发送端重新发送.

毕节市18016007425: 单片机奇偶校验 -
针徐森克: 通常,串行通信的一帧的格式是8-n-1,即8位数据、无校验、1个停止位. 有时为了提高准确度,需要增加一个“奇”校验位或者“偶”校验位. 对于高级语言的做法是很简单的,只要把格式命令“8-n-1”,改为“8-P-1”或“8-O-1”即可. ...

毕节市18016007425: 51单片机 奇偶校验 -
针徐森克: 呵呵,在这两条指令的前后,你各忽略了一条指令.请看下列程序及说明:MOV A, #待发数据 ;数据进了A,即刻生成校验位P MOV C, P MOV TB8, C ;校验位送到TB8 MOV SBUF, A ;发送数据,以及P 上述写法,是偶校验.奇校验,需要增加一条取反指令,如下:MOV C, P CPL C MOV TB8, C ;校验位送到TB8 就这些.

毕节市18016007425: 单片机在串口通信时设置奇偶校验的目的 -
针徐森克: 串口通信设置奇偶校验的目的是检验接收的数据是否正确. 接收的奇偶校验位,如果与发送的校验位相同,说明接收的数据是正确的.因串口通信是异步的,为了校验接收是否正确,通常要采用各种校验方法,其中奇偶校验是比较简单的方法,而比较可靠但却比较麻烦的是CRC16方法.

毕节市18016007425: 关于51单片机的奇偶校验~~小弟菜鸟 -
针徐森克: 串口调试助手只要将奇偶校验,波特率设置成和单片机一样就可以通讯了 如果有一点没设好串口调试助手将没有显示 和单片机通讯时要注意串口调试助手的显示模式是16进制还是ASCII码的

毕节市18016007425: 51单片机 多机通信中 串口方式2和方式3中 如何做到奇偶校验的啊?是把每一位加起来除以2吗? -
针徐森克: 奇偶校验是是“1”的个数是奇数还是偶数,通讯时可以将校验值通过TB8或RB8来实现.

毕节市18016007425: 怎样进行奇偶校验 -
针徐森克: 单向奇偶校验概述 单向奇偶校验(Row Parity)由于一次只采用单个校验位,因此又称为单个位奇偶校验(Single Bit Parity).发送器在数据祯每个字符的信号位后添一个奇偶校验位,接收器对该奇偶校验位进行检查.典型的例子是面向...

毕节市18016007425: 什么是奇校验,什么是偶校验
针徐森克: 奇偶校验电路是一种校验代码传输正确性的电路. 奇校验电路,当输入有奇数个1时,输出为1;偶校验电路当输入有偶数个1时,输出为0.奇偶校验只能检查一位错误,...

毕节市18016007425: 在单片机多机系统中,能否采用奇偶校验,为什么? -
针徐森克: 奇偶校验是一种通讯中常用的人校验机制,多用于串口通讯.

毕节市18016007425: C语言怎么实现奇偶校验啊(单片机串行通信) -
针徐森克: http://blog.21ic.com/user1/2663/archives/2007/34881.html 这个可以参考一下

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网