C51赋值

[复制链接]
3249|9
 楼主| 100 发表于 2007-11-20 15:31 | 显示全部楼层 |阅读模式
现在想把一个变量的高2位赋于P1口的第6,7位,P1口的低六位不变,该怎么做呢.
比如变量x=0b10000000,想把x的第6,7位赋于P1口的第6,7位,但不影响P1口低6位的数据.
computer00 发表于 2007-11-20 15:41 | 显示全部楼层

P1_7=x&0x80; P1_6=x&0x40;

qihao 发表于 2007-11-20 15:52 | 显示全部楼层

圈圈 是热心人

ayb_ice 发表于 2007-11-20 17:26 | 显示全部楼层

这都不会

yuxz 发表于 2007-11-20 17:45 | 显示全部楼层

希望可以帮你

MOV WW,#80H
ANL WW,#B0H
MOV YY,P1
ANL YY,#3FH
ADD WW,YY
MOV P1,WW
汇编语言
lelee007 发表于 2007-11-21 19:24 | 显示全部楼层

这么多热心人啊

呵呵
hotpower 发表于 2007-11-21 20:06 | 显示全部楼层

俺也来个汇编和C的玩玩看~~~

1.汇编语言
MOV A,X;变量X,有效位为最高的2位(任意数)
XRL A,P1;比较,得到需要改变的位
ANL A,#11000000B;只取结果的高2位
XRL P1,A;改变P1应该改变的高2位,即取反需要改变的位

2.C语言
y = x;变量x,有效位为最高的2位(任意数)
y ^= P1;比较,得到需要改变的位
y &= 0xc0;只取结果的高2位
P1 ^= y;改变P1应该改变的高2位,即取反需要改变的位

 楼主| 100 发表于 2007-11-22 09:30 | 显示全部楼层

谢谢 各位!

ldyeah 发表于 2007-11-22 11:29 | 显示全部楼层

我的

M0V  A,X
ANL  A,#11000000B     ;变量X后面6位清0
MOV  R2,A             ;暂存R2
MOV  A,P1             ;读P1口值
ORL  A,R2             ;将X的前两位赋值给P1,后6位保持不变
MOV  A,P1             ;将新值送P1
yongzai 发表于 2011-5-5 11:46 | 显示全部楼层
看不懂
您需要登录后才可以回帖 登录 | 注册

本版积分规则

100

19

主题

41

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部