打印

我是新手,想用51实现这样一个功能,怎么编?(想了很久了

[复制链接]
2142|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tanyuekang|  楼主 | 2007-2-1 10:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
雁舞白沙| | 2007-2-1 10:37 | 只看该作者

操作类型不同

P00 是位类型

位类型只是是0或者1,不能进行数值运算!

使用特权

评论回复
板凳
lixun00| | 2007-2-1 10:40 | 只看该作者

a = P0 & 0x07; b= P0 & 0x38;或者

sbit P0_0 = P0 ^ 1;
...
sbit P0_5 = P0 ^ 5;
a = P0_0 + ((unsigned char)P0_1<<1) + ((unsigned char)P0_2<<2);
...

使用特权

评论回复
地板
duanhnhy| | 2007-2-1 15:10 | 只看该作者

RE

;把P0的状态读到内存再进行一下处理不就OK了~!
;以下我写的小程序

            MOV A,P0       ;读P0状态
            PUSH A         ;P0状态暂存,方便得到数B
            ANL A,#0FCH    ;屏蔽高位,得到数A
            MOV NUM1,A
            POP A
            ANL A,#0E3H    ;屏蔽其他位,得到数B
            RR A           ;右移3位
            RR A
            RR A
            MOV NUM2,A
            MOV A,NUM1
            CLR C
            SUBB A,NUM2     ;此数即为A-B的结果

使用特权

评论回复
5
szzhengjin| | 2007-2-1 16:04 | 只看该作者

很基本的语句啦

unsigned char a,b,c;
a=P0 & 0x07;//取最低三位
b=(P0 & 0x38) >> 3;//取中间三位右移三位

c = a-b;
c = b-a;

使用特权

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

本版积分规则

11

主题

13

帖子

0

粉丝