打印
[ZLG-MCU]

关于单片机的C语言编程问题

[复制链接]
1143|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
linhai1986|  楼主 | 2009-5-19 15:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
假如使用如下端口

sbit    d0  p1.0

sbit    d1  p2.0

sbit    d2  p3.0

sbit    d3  p4.0

想把D0,D1,D2,D3里面的数据(或者状态?)存放在一个变量里,

m=D0*1+D1*2+D2*4+D3*8为什么不行?

不行的话怎么处理一下?

谢谢!

我用的端口比较多,没有办法才把这4位用到了不同的I/O口上,造成编程比较麻烦,单片机用的LPC952

想把D0,D1,D2,D3里面的数据存放在一个变量里,便于操作

注意我问:m=D0*1+D1*2+D2*4+D3*8为什么不行?

不行的话怎么处理一下?

请具体的写两句程序,不胜感激!

谢谢!

相关帖子

沙发
xiaoxin1986| | 2009-5-19 20:16 | 只看该作者

re

m=D0*1+D1*2+D2*4+D3*8

Do的类型是sbit的,自然不能做乘法运算了。

进行类型转换即可




m=(unsigned char)d0*1 + ……………………  ;

 

测试通过。

使用特权

评论回复
板凳
jakezlc| | 2009-5-19 20:21 | 只看该作者

RE

你按位存放看看可以不?接你上面的思路
bit    d0  p1.0

sbit    d1  p2.0

sbit    d2  p3.0

sbit    d3  p4.0

想把D0,D1,D2,D3里面的数据(或者状态?)存放在一个变量里,

m=D0^0x01+(D10<<1)^0x02+(D2<<2)^0x04+(D3《3)^0x08
你看看这样可以不

使用特权

评论回复
地板
jakecumt| | 2009-5-20 07:45 | 只看该作者

学习了

使用特权

评论回复
5
beinghu| | 2009-5-23 00:20 | 只看该作者

使用特权

评论回复
6
linhai1986|  楼主 | 2009-7-4 15:56 | 只看该作者

问题解决了,谢谢大家了

使用特权

评论回复
7
xiaoxin1986| | 2009-7-5 09:12 | 只看该作者

解决了就好

使用特权

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

本版积分规则

172

主题

1451

帖子

0

粉丝