打印

C51赋值

[复制链接]
1754|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 | 只看该作者

这都不会

使用特权

评论回复
5
yuxz| | 2007-11-20 17:45 | 只看该作者

希望可以帮你

MOV WW,#80H
ANL WW,#B0H
MOV YY,P1
ANL YY,#3FH
ADD WW,YY
MOV P1,WW
汇编语言

使用特权

评论回复
6
lelee007| | 2007-11-21 19:24 | 只看该作者

这么多热心人啊

呵呵

使用特权

评论回复
7
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位,即取反需要改变的位

使用特权

评论回复
8
100|  楼主 | 2007-11-22 09:30 | 只看该作者

谢谢 各位!

使用特权

评论回复
9
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

使用特权

评论回复
10
yongzai| | 2011-5-5 11:46 | 只看该作者
看不懂

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

100

19

主题

41

帖子

0

粉丝