[应用相关] 这句指令为什么这么写

[复制链接]
633|12
 楼主| wanglaojii 发表于 2019-2-13 20:26 | 显示全部楼层 |阅读模式
在矩阵键盘显示程序中,
//读取各个管脚的状态
nP10 = P1IN & BIT0;
nP11 = (P1IN & BIT1) >> 1;
nP12 = (P1IN & BIT2) >> 2;
nP13 = (P1IN & BIT3) >> 3;
求指教 这句指令为什么这么写
laozhongyi 发表于 2019-2-13 20:32 | 显示全部楼层

我大概明白什么意思 BIT1什么意思 为什么还要 >> 1
Edisons 发表于 2019-2-13 20:35 | 显示全部楼层
如果(P1IN & BIT1)的值等于1010,(P1IN & BIT1) >> 1;则表示这个值1010向右移动1位,就变成了0101。
Mozarts 发表于 2019-2-13 20:39 | 显示全部楼层
nP11 = (P1IN & BIT1) >> 1;表示再将0101赋值给nP11,执行了相应指令,以此类推。。。。
Listate 发表于 2019-2-13 20:43 | 显示全部楼层
如果要将其赋值给bit型变量,那么就只有该字节的最低位被赋值过去。
handleMessage 发表于 2019-2-13 20:47 | 显示全部楼层
要把那个“1”右移到最低位才能正确地赋值给nP11,这就需要右移一位。
bbapple 发表于 2019-2-13 20:51 | 显示全部楼层
//读取各个管脚的状态
nP10 = P1IN & BIT0;
nP11 = (P1IN & BIT1) >> 1;
nP12 = (P1IN & BIT2) >> 2;
nP13 = (P1IN & BIT3) >> 3;
先读取P1管脚的状态,然后进行位操作,与完之后只保留nP1x中的x位的状态,其他位均被置0,之后再右移操作,将对应的x位右移至最低位。
sourceInsight 发表于 2019-2-13 20:54 | 显示全部楼层

我比较好奇nP10,nP11,n是怎没回事
boy1990 发表于 2019-2-13 20:56 | 显示全部楼层
这个是对PIO口进行初始化配置的吧?具体的看这个bit2\bit3的定义了
CallReceiver 发表于 2019-2-13 21:00 | 显示全部楼层
“>>”为右移操作符,>> n表示右移n位
hfdy01 发表于 2019-2-13 21:04 | 显示全部楼层
其实就是为了 转换成 0/1 的按键状态值
zhuotuzi 发表于 2019-2-13 22:26 | 显示全部楼层
意思是把对应的位放到最低位去。
磨砂 发表于 2019-3-5 11:30 | 显示全部楼层
这个这个  建议楼主单步运行之后看看寄存器状态就知道了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

220

主题

1411

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部