单片机 P3.0=P1.0 异或P1.3

如题,P3.0=P1.0 异或P1.3 这个表达式用位操作指令编程,可是单片机中没有针对位的异或运算啊?怎么表达啊!请高手指点,给出正确语句!

用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.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-03-04
C语言:“异或”运算符(^)用法是如果两个相应的二进制位为同号,则该位的结果值为1否则为0。0^0=1,1^0=0,1^1=1
第2个回答  2019-02-16
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使用即可。
第3个回答  2009-03-03
xor
相似回答