8051微控制器中的奇偶校验问题(组装)

问题描述 投票:0回答:1

我正在尝试使用汇编语言的8051解决此问题。因此,这是一个问题:8位数据来自计算机,波特率为9600。每个数据都通过8051微控制器进行奇偶校验。如果数据奇偶校验为1,则R0增加。如果为零,则R1增加。 10个数据后,如果奇偶校验为1的数据大于奇偶校验为0的数据,则P1.0 led点亮。否则,P1.1 led点亮。为此编写程序。 (晶体11.059MHz)

我写了这个,但是如何获得数据奇偶校验?

MOV TMOD,#00100000B
MOV SCON,#11001000B
MOV TH1,#-3
SETB TR1
MOV R0,#0 
MOV R1,#0
MOV R2,#10 
MAIN:
JNB RI,$
CLR RI
MOV A,SBUF
MOV C,RB8
MOV P,C
JB P,PARITY1 
PARITY0: 
INC R1 
SJMP DONGU
PARITY1:
INC R0
DONGU: 
DJNZ R2,MAIN
MOV A,R0
SUBB A,R1
JC LEDB
LEDA: 
CPL P1.0
SJMP DONE
LEDB:
CPL P1.1
DONE: NOP
END  

我认为这部分对这个问题毫无意义,应该怎么办?

MOV C,RB8
MOV P,C

谢谢您的帮助。

assembly microcontroller 8051 parity
1个回答
0
投票

一般的想法似乎是从位于串行寄存器SCON寄存器(http://www.keil.com/support/man/docs/is51/is51_ov_cpupsw.htm)中的特殊位RB8获得输入数据的奇偶校验位。

基于它,采用两个分支(PARITY0和PARITY1)之一。

唯一奇怪的是,传入的奇偶校验位RB8被移到了P位,这是没有用的;可以将RB8装入进位并执行jc / jnc。 P位对于了解累加器中加载的字节的奇偶校验很有用,尝试对其进行写是没有意义的。

© www.soinside.com 2019 - 2024. All rights reserved.