在MSP430书中看到的一些语句有些不明白 1. if (P1out&bit0) P1&=~(bit0); else P1out=bit0; 整个语句意思

2.P2out&=~0x07;P2out|=0x07这两个语句刚好相反吧?3.读取各个管脚的状态语句为nP10=P1in&bit0;nP11=(P1in&bit1)>>1... 2. P2out&=~0x07;P2out |= 0x07 这两个语句刚好相反吧?
3.读取各个管脚的状态语句为
nP10=P1in&bit0;
nP11=(P1in&bit1)>>1;
.....
nP13=(P1in&bit3)>>3;不解的是读取管脚状态为什么要移位呢,假如使用移位的话括号里面应该还是P1in&bit0吧?
4. LMP0模式 为什么模式?
展开
 我来答
粤琛非z
2013-02-15 · TA获得超过1564个赞
知道小有建树答主
回答量:866
采纳率:100%
帮助的人:615万
展开全部
1 当P1.0为1时,将它清零;当P1.0为0时,将它置位;
这样做划不来,用“ P1OUT ^= BIT0; ”更好一些;
2 确实相反,前一个是清零,后一个是置位;
3 举个例子:假设要读取P1.3的状态,并赋给nP13:
先做P1IN&BIT3,这样得到的结果是一个8位二进制数,第三位是P1.3的值,其他位都被与运算清零了;
然后再将这个二进制数右移3位,将P1.3的值挪到最右边,这样得到的结果就是一个不是0就是1的数了,再赋值就行了;
写成一句话,就是:nP13=(P1in&bit3)>>3;
4 LMP0模式是低功耗模式0,在该模式下,430的cpu是关闭的,但是仍然能响应中断。
追问
嗯啊谢谢 你的回答把我的大部分问题都解决了   “ P1OUT ^= BIT0; ” 这个应该就是取反的意思吧 P1&=~(bit0) 是把这句给替换掉 对不对?  
第一个问题P1out&bit0 P1out=bit0他们等价不 不都是为一嘛
第三个问题感觉解释的蛮好的 看完后完全明白了
追答
第一个问题之前没看仔细...sorry
P1OUT&BIT0得到的是P1.0的状态(前提是你要把P1.0设为输出):
当P1.0为1时,执行P1OUT &= ~(BIT0); /*这里将P1.0清零,你查一下是不是应该是P1OUT而不是P1,msp430我记得没有P1这个寄存器的;*/
反之(当P1.0为0时),执行P1OUT = BIT0; /*这里直接把P1OUT设为BIT0,即将P1.0置位,而P1口的其他位都清零了,如果要单独将P1.0置位而不该变P1口其他位的状态,要用P1OUT |= BIT0,这时,这个条件语句才相当于P1.0取反啊。*/
0427付强
2013-02-13 · 知道合伙人教育行家
0427付强
知道合伙人教育行家
采纳数:23602 获赞数:79387
获得过一项实用新型专利

向TA提问 私信TA
展开全部
1.如果P1输出寄存器的0位为1,则P1的第0位置低,否则P1.0口为高
2.对,前者是置低,后者是置高
3.我也不太明白
4.LMP0模式是MSP430单片机的低功耗模式0,是几种低功耗模式中休眠深度最浅的一种模式,工作电流在100μA左右

我现在也在学MSP430,不能像51那样位操作都快把我逼疯了……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式