‘壹’ 51单片机“和校验”
CLR TB8
MOV A,@R0 ;GET DATA
MOV SBUF,A ;SEND
XRL A,R4
MOV R4,A
TRAN1: JNB TI,TRAN1 ;WAIT
这是XOR(异或)校验吧...
把XRL A,R4改为ADD A,R4就是和校验..
‘贰’ 单片机奇偶校验
通常,串行通信的一帧的格式是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停止位)的模式。
完全符合你的要求。
‘叁’ 什么样的单片机才有编程和校验方式
没看懂你的问题,但凡是单片机,都可以进行程序设计,要不就成了不可编程的ASIC。
至于校验方式,校验是对于传输数据来讲的,一些特殊单片机的串口、CAN接口、USB接口或是高级处理器的DDR2、PCI等接口,都带有自动校验。
‘肆’ 51单片机中C语言奇偶校验位如何设置
在51单片机中,只要将一个值传送给累加器,这个数的奇偶校验值就会影响P。一般而言,在串行通讯中为确保传输数的准确,用到校验位的情况比较多。以下是程序代码:
#include<reg51.h>
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;
}
}
‘伍’ 51单片机里的和校验,异或校验,具体的步骤是什么,代码怎么写
和校验就是把待校验的数据字节累加起来,最低的1字节或2字节与接收到的校验和相符,则表明传输过程没有问题。
异或校验类似,把待校验的数据字节逐个进行按位异或运算,最后的结果与接收到的校验值相符,则表明传输过程没有问题,
‘陆’ 单片机串口通讯代码和校验
单片机串口通讯代码和校验的方法有很多,具体怎么做,需要编制一个通信协议。
你说的把所有代码加起来计算和,再与最后个字节比较,这只是一种校验和的方法。对于普通的通信可以用,方法简单,程序也好写。当然可以自己制定一个具体的协议,那些代码相加,哪些代码不加,和放在第几个字节。而求也有求代数和的,也有求异或和的。
Modbus协议采用的CRC16校验的方法,比较成熟,用的也较多。这种程序在网上可以找到。
如果通信需要保密,还可以采用各种加密技术。
‘柒’ 51单片机进行串口通信的时候,如何设置奇校验还是偶校验
首先你需要设置串口工作模式为2或3
其次,你将SCON中的TB8设置为1或0来确定是奇校验或偶校验。
‘捌’ 单片机的CRC校验
D行定义ROM数组,CRC16校验的余式表格,ABC行那就是运算了哦,建议你看看CRC的书,描述起来要一大堆呢
‘玖’ 怎么检验单片机是否合格
至于单片机嘛,也没有什么先进的仪器,如果你是自己用的话,也没有必要,下个程序装在板上试,别的也没办法了,一般新买的不可能是坏的!
‘拾’ 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
就这些。