单片机xor指令,c51单片机AND,OR,XOR逻辑运算是什么意思?能举例说明吗??
单片机xor指令,c51单片机AND,OR,XOR逻辑运算是什么意思?能举例说明吗??详细介绍
本文目录一览: AT89S51单片机中XOR是什么指令?
XOR
,
----其功能是将两个操作数进行位 异或运算,并将结果存放到操作数1中
异或,二进制运算。可逆运算。1 xor 1=0,0 xor 0=0,1 xor 0=1,0 xor 1=1。
操作数2>
操作数1>
c51单片机AND,OR,XOR逻辑运算是什么意思?能举例说明吗??
AND :逻辑“与”
就是位与
比如1111_0101 AND 0101_1111 = 0101_0101
OR :或逻辑
1111_0101 OR 0101_1111 = 1111_1111
XOR:异或逻辑
1111_0101 AND 0101_1111 = 1010_1010
在逻辑信号中,只有两种情况,分别是“1”还有“0”。
1与1=1,1与0=0,0与1=0,0与0=0,相当于要两个都是1结果才是1
1或1=1,1或0=1,0或1=1,0或0=0,相当于只需要一个是1结果就是1
1异或1=0,1异或0=1,0异或1=1,0异或0=0,相当于两个不同结果是1,两个相同结果是0,就是 所谓的“异”嘛
ANL表示“与”,如某工作寄存器内容和累加器内容相与指令:ANL A,Ri,并将结果放回累加器A中
ORL表示“或”,如某工作寄存器内容和累加器内容相或指令:ORL A,Ri,并将结果放回累加器中
XRL表示“异或”,如某工作寄存器内容和累加器内容相异或指令:XRL A,Ri,并将结果放回累加 器A
在单片机中“逻辑与、或、异或操作”是什么意思?
与 其中一个为假就是假或 其中一个为真就为真异或 相同的为假 不同为真真是1 假是0
根据字面意思就可以理解了。与: 两个二进制位相与。 规则:前后都为1的时候为真,其他都为假。 符号记录为^ 1^1=1 1^0=0 0^1=0 0^0=0 或:两个二进制位相或。规则:前后只要有一个为1的时候就为真。 符号记录为V 1V1=1 1V0=1 0V1=1 0V0=0异或:两个二进制位异或。规则前后只要不相同就为真 符号为XOR或者⊕ 1⊕1=0 1⊕0=1 0⊕1=1 0⊕0=0
单片机:请编写程序实现位X与位Y异或运算,设X,Y分别存放在00H,01H,结果Z存放在02H
方法1:
;
MOV C, 00H
ANL C, /01H
MOV F0, C
MOV C, 01H
ANL C, /00H
ORL A, F0
MOV 02H, C
END
;-----------------------
方法2:
;
CLR 02H
JNB 00H, ZZZ
JNB 01H, EXIT
SJMP EXIT
ZZZ:
JB 01H, EXIT
SETB 02H
EXIT:
END
;-----------------------
方法3:
;
MOV A, 20H
RR A
XRL A, 20H
RL A
RL A
ANL A, #00000100B
JZ ZZZ
ORL 20H, A
SJMP EXIT
ZZZ:
CPL A
ANL 20H, A
EXIT:
END
MOV A,20H
ANL A,#0FBH
MOV B,A
RR A
XRL A,20H
RL A
RL A
ANL A,#04H
ORL A,B
MOV 20H,A
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就是和校验..
和校验,也称为“累加和”校验。
发送方,把发送的数据,一个个的累加到R4(不管进位),最后发送出去。
接收方,把接收的数据,一个个的累加到R4(不管进位),再和最后收到的字节相比较,以此判断收到的正确与否。
如果不是用“累加”的方法,也是可以的。
楼主给出的 就是采用“异或”方法生成校验字节的;
数据到了对方,也应该采用相同的方法生成校验字节,进行检验。
单片机 P3.0=P1.0 异或P1.3
C语言:“异或”运算符(^)用法是如果两个相应的二进制位为同号,则该位的结果值为1否则为0。0^0=1,1^0=0,1^1=1
p1.0这些那就是io口的编号,51单片机一共有4组io口,分别是p0、p1、p2、p3,每组都有8个io口,那就是p0.0~p0.7、p1.0~p1.7、p2.0~p2.7和p3.0~p3.7。同一组io使用同一个寄存器。
a0、a1……那个是地址总线的io了,与外挂程序存储器有关,一般用不到这个功能,就当做普通io使用即可。
用C语言比较容易实现:P3.0=P1.0^P1.3就行了。
用汇编就麻烦,要设计程序,下面程序做一个参考:
mov p1,FFH;读数前要给p1先全部置一。
mov c,p1.0 ;把p1.0先送到C。
mov acc.0, c ;把c送到累加器第零位。
mov c,p1.1 ;p1.1送C。
orl c,acc.0 ;进行“或”运算,结果送到C,由三种可能:11、10、01,后两种异或结果为1,要排除掉两者全为一的情况。
jnc c,s:;如果C为零,则跳转。
cpl c
cpl acc.0;如果C为1,排除c,acc.0两者全为1 的情况,所以两者都取反。
orl c,acc.0;再进行“或”运算
jnc s:;如果C为零则跳转。
setb p3.0 ;置位1.
.........
S: clr p3.0 ;置位0.
51单片机关于溢出标志OV的计算,用异或运算是如何运算的,求高人指点
OV标专只对硬件乘MUL,除DIV法这二条指令有效.异或ORL(XRL)运算用相应的指令就行了.
首先这个是由单片机自动产生的,不需要人为计算。
D7 D6 D5 D4 D3 D2 D1 D0
D7 D6 D5 D4 D 3D2 D1 D0
-------------------------------------------
比如上面两个数相加,当两个D6有进位时,定义为次高位进位;当两个D7相加再有向上进位时,定义为最高位进位,这两个进位异或结果送到OV
在单片机程序中两个数异或有什么作用
这是用来判断两个数是不是一正一负
如果(30H)和(31H)两个数一正一负,那么这两个数的最高为一个是1,一个是0.
异或后得到1
JB ACC.7LOOP后,程序会跳转到LOOP执行
接下来只要判断正数(即最高为是0的数)就是最大的数
单片机用5种以上不同的方法实现对片内RAM 50H单元清零???
下面是五种不同的方法实现对单片机片内RAM 50H单元清零:
赋值法:将 RAM 50H 单元赋值为0,即 MOV RAM50H, #0。
递减法:利用递减操作让 RAM 50H 单元的值逐渐减小到0,即 DEC RAM50H、JNZ 递减。
加法取反法:将 RAM 50H 单元和 -RAM 50H 单元相加,即 ADD RAM50H, -RAM50H,结果为0。
逻辑异或法:将 RAM 50H 单元和自身进行异或运算,即 XOR RAM50H,结果为0。
跳转法:将程序计数器跳转到 RAM 50H 单元,再将该单元的值清零,即 JMP RAM50H,CLR RAM50H。
以上是一些可能的方法,具体实现方式可以根据单片机的型号和指令集合适当调整。