专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
TI
nP11 = (P1IN & BIT1) >> 1是什么意思
2019-08-05 15:56
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
TI MCU
2767
5
1119
在矩阵键盘显示程序中,
//读取各个管脚的状态
nP10 = P1IN & BIT0;
nP11 = (P1IN & BIT1) >> 1;
nP12 = (P1IN & BIT2) >> 2;
nP13 = (P1IN & BIT3) >> 3;
求指教 这句指令为什么这么写 我大概明白什么意思 BIT1什么意思 为什么还要 >> 1
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
G21372
1楼-- · 2019-08-05 20:51
精彩回答 2 元偷偷看……
加载中...
jie1095
2楼-- · 2019-08-05 21:36
打个比方吧,如果(P1IN & BIT1)的值等于1010,(P1IN & BIT1) >> 1;则表示这个值1010向右移动1位,就变成了0101。nP11 = (P1IN & BIT1) >> 1;表示再将0101赋值给nP11,执行了相应指令,以此类推。。。。
加载中...
Unshining
3楼-- · 2019-08-06 01:44
P1IN&BIT1表示P1.1的输入结果,但是,它是一个字节。如果要表示P1.1为高电平,则是通过00000010表示的。
如果要将其赋值给bit型变量,那么就只有该字节的最低位被赋值过去。
因此,要把那个“1”右移到最低位才能正确地赋值给nP11,这就需要右移一位。
同理P1IN&BIT2需要右移两位,以此类推。
加载中...
gxdu2002
4楼-- · 2019-08-06 05:49
main主程序程序开头都有一句“#include <msp430x14x.h>”,在这个MSP149F149头文件中对编程中可能会用到的SFR特殊功能寄存器、特征字等都有宏定义,方便大家使用,对于BIT X定义如下:#define BIT0 0x0001
#define BIT1 0x0002
#define BIT2 0x0004
#define BIT3 0x0008
#define BIT4 0x0010
#define BIT5 0x0020
#define BIT6 0x0040
#define BIT7 0x0080
#define BIT8 0x0100
#define BIT9 0x0200
#define BITA 0x0400
#define BITB 0x0800
#define BITC 0x1000
#define BITD 0x2000
#define BITE 0x4000
#define BITF 0x8000
“&”字符为按位与操作符,“&&”则为逻辑与操作符,两个意义不一样;
“>>”为右移操作符,>> n表示右移n位;“<<”为左移操作符;移出的为丢弃,这两个操作符均不是循环移位操作符!
加载中...
gxdu2002
5楼-- · 2019-08-06 07:08
//读取各个管脚的状态
nP10 = P1IN & BIT0;
nP11 = (P1IN & BIT1) >> 1;
nP12 = (P1IN & BIT2) >> 2;
nP13 = (P1IN & BIT3) >> 3;
先读取P1管脚的状态,然后进行位操作,与完之后只保留nP1x中的x位的状态,其他位均被置0,之后再右移操作,将对应的x位右移至最低位。
加载中...
一周热门
更多
>
相关问题
CPLD的方波输出
4 个回答
11个版本Quartus II 软件下载,安装包网盘合集,附教程,47G!
20 个回答
请大家帮忙到21IC发展大家谈支持我申请新版面
20 个回答
【通知】21ic中国电子网服务条款 (所有人员必读)
1 个回答
满载而归乙亥年,大展鸿途庚子年---集签赢好礼
20 个回答
携手ADI,踏上电子工程师之巅—车辆电气化视频,答题领奖!
1 个回答
如何提升论坛质量,看你了!
20 个回答
【最终名单】二姨家喊你来拿100份新年大礼啦~
20 个回答
相关文章
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
TI
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
如果要将其赋值给bit型变量,那么就只有该字节的最低位被赋值过去。
因此,要把那个“1”右移到最低位才能正确地赋值给nP11,这就需要右移一位。
同理P1IN&BIT2需要右移两位,以此类推。
#define BIT1 0x0002
#define BIT2 0x0004
#define BIT3 0x0008
#define BIT4 0x0010
#define BIT5 0x0020
#define BIT6 0x0040
#define BIT7 0x0080
#define BIT8 0x0100
#define BIT9 0x0200
#define BITA 0x0400
#define BITB 0x0800
#define BITC 0x1000
#define BITD 0x2000
#define BITE 0x4000
#define BITF 0x8000
“&”字符为按位与操作符,“&&”则为逻辑与操作符,两个意义不一样;
“>>”为右移操作符,>> n表示右移n位;“<<”为左移操作符;移出的为丢弃,这两个操作符均不是循环移位操作符!
nP10 = P1IN & BIT0;
nP11 = (P1IN & BIT1) >> 1;
nP12 = (P1IN & BIT2) >> 2;
nP13 = (P1IN & BIT3) >> 3;
先读取P1管脚的状态,然后进行位操作,与完之后只保留nP1x中的x位的状态,其他位均被置0,之后再右移操作,将对应的x位右移至最低位。
一周热门 更多>