1331|10

8

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

msp430的位运算怎么理解 [复制链接]

P1OUT |= 0x01;		// 将 P1.0 置 1 ,按位“或”,相当于置 1
P1OUT &= ~0x02;	// 将 P1.1 置0,取反后再按位“与”,相当于置 0
P1OUT ^= 0x04;		// 将 P1.2 取反,按位“异或”相当于取反

比如这个程序里,怎么知道管脚是P1.0、P1.1和P1.2呢?与/或/非是后面那个十六进制和谁运算呢,管脚的状态不是不知道吗,这么就置位复位了

此帖出自单片机论坛

最新回复

P1OUT是表示Port1的输出寄存器,使用运算符|=可以将指定的位设置为高电平。是这个意思。 还有就是 0000 0001代表引脚1   也就是0x01 0000 0010代表引脚2     0x02 0000 0100代表引脚3     0x04 0000 1000代表引脚4     0x08 按照这个以此类推   详情 回复 发表于 2023-7-27 00:51
点赞 关注
 

回复
举报

6828

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

怎么知道管脚是P1.0、P1.1和P1.2呢?

编程之前要看一下硬件电路吧

此帖出自单片机论坛

点评

我好像懂了,是不是和后面的0x01什么的有关?展成二进制分别是0000 0001、0000 0010、0000 0010。观察一下,感觉就对应P1.0、P1.1、P1.2。如果是这样我就能懂,但是置位复位啥的是为什么呢  详情 回复 发表于 2023-6-22 09:35
 
 

回复

8

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
Jacktang 发表于 2023-6-22 08:19 怎么知道管脚是P1.0、P1.1和P1.2呢? 编程之前要看一下硬件电路吧

我好像懂了,是不是和后面的0x01什么的有关?展成二进制分别是0000 0001、0000 0010、0000 0010。观察一下,感觉就对应P1.0、P1.1、P1.2。如果是这样我就能懂,但是置位复位啥的是为什么呢

此帖出自单片机论坛

点评

是这么理解的,一搬在MSP430的代码里会使用宏定义 BIT0,BIT1,BIT2 #define BIT0    (1ul<<0) #define BIT1    (1ul<<1) #define BIT2    (1ul<<2) 比如P1  详情 回复 发表于 2023-6-22 12:50
 
 
 

回复

9803

帖子

24

TA的资源

版主

4
 
青铜铜 发表于 2023-6-22 09:35 我好像懂了,是不是和后面的0x01什么的有关?展成二进制分别是0000 0001、0000 0010、0000 0010。观察一 ...

是这么理解的,一搬在MSP430的代码里会使用宏定义

BIT0,BIT1,BIT2

#define BIT0    (1ul<<0)

#define BIT1    (1ul<<1)

#define BIT2    (1ul<<2)

比如P1OUT |= 0x01;会替换成P1OUT |= BIT0; 这时就知道是在对位0进行操作,也就是PORT1的PIN0

 

此帖出自单片机论坛

点评

还是有一些不懂的地方。 比如P1OUT |=0x01;我的理解是P1OUT是输出寄存器,可以决定输出高电平还是低电平,然后0x01(0000 0001)表示BIT0,P1OUT=P1OUT | BIT0,BIT0=0000 0001,P1OUT不管输出高电平还是低电平  详情 回复 发表于 2023-6-22 13:14
 
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 

回复

8

帖子

0

TA的资源

一粒金砂(中级)

5
 
littleshrimp 发表于 2023-6-22 12:50 是这么理解的,一搬在MSP430的代码里会使用宏定义 BIT0,BIT1,BIT2 #define BIT0    (1ul ...

还是有一些不懂的地方

比如P1OUT |=0x01;我的理解是P1OUT是输出寄存器,可以决定输出高电平还是低电平,然后0x01(0000 0001)表示BIT0,P1OUT=P1OUT | BIT0,BIT0=0000 0001,P1OUT不管输出高电平还是低电平,跟BIT0按位与都等于高电平??然后还有一个信息就是这条代码可以把P1.0设置为输出方向,并且设置为高电平?

(粗体字是我的猜测,求指正)

此帖出自单片机论坛

点评

OUT寄存器不改变方向,如果PxDIR对应的位设置了1,这时对应的引脚才是输出状态,OUT寄存器只决定对应的引脚输出高还是输出低。如果DIR设置了0这时是输入状态,如果配置了上拉/或者下拉电阻,OUT对应的位是1是表示对  详情 回复 发表于 2023-6-22 16:35
 
 
 

回复

9803

帖子

24

TA的资源

版主

6
 
青铜铜 发表于 2023-6-22 13:14 还是有一些不懂的地方。 比如P1OUT |=0x01;我的理解是P1OUT是输出寄存器,可以决定输出高电平还是低 ...

OUT寄存器不改变方向,如果PxDIR对应的位设置了1,这时对应的引脚才是输出状态,


OUT寄存器只决定对应的引脚输出高还是输出低。


如果DIR设置了0这时是输入状态,如果配置了上拉/或者下拉电阻,OUT对应的位是1是表示对应引脚是上拉还是下拉。


此帖出自单片机论坛
 
 
 

回复

6562

帖子

9

TA的资源

版主

7
 

这种就和51的理解是一样的,P1有八个脚对应就是六进制的8个位

此帖出自单片机论坛
 
个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 

回复

6

帖子

0

TA的资源

一粒金砂(中级)

8
 
在 MSP430 微控制器环境中,P1OUT 是 Port 1 的输出寄存器。Port 1 包含多个引脚,每个引脚都有对应的位控制。  根据代码片段 P1OUT |= 0x01,0x01 设置了 P1OUT 的最低位为高电平(1),这意味着是在控制 Port 1 的第一个引脚。  具体哪个引脚对应 P1OUT 的最低位需要根据实际的硬件连接情况来确定。请参考相关硬件文档或代码中的引脚映射表来确认具体的引脚。
此帖出自单片机论坛
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(中级)

9
 

在 MSP430 微控制器环境中,P1OUT 是 Port 1 的输出寄存器。Port 1 包含多个引脚,每个引脚都有对应的位控制。

根据代码片段 P1OUT |= 0x01,0x01 设置了 P1OUT 的最低位为高电平(1),这意味着是在控制 Port 1 的第一个引脚。

具体哪个引脚对应 P1OUT 的最低位需要根据实际的硬件连接情况来确定。请参考相关硬件文档或代码中的引脚映射表来确认具体的引脚。

此帖出自单片机论坛
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(中级)

10
 

根据代码片段 P1OUT |= 0x01,0x01 设置了 P1OUT 的最低位为高电平(1),这意味着是在控制 Port 1 的第一个引脚。具体哪个引脚对应 P1OUT 的最低位需要根据实际的硬件连接情况来确定。请参考相关硬件文档或代码中的引脚映射表来确认具体的引脚。

此帖出自单片机论坛
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(中级)

11
 
青铜铜 发表于 2023-6-22 13:14 还是有一些不懂的地方。 比如P1OUT |=0x01;我的理解是P1OUT是输出寄存器,可以决定输出高电平还是低 ...

P1OUT是表示Port1的输出寄存器,使用运算符|=可以将指定的位设置为高电平。是这个意思。

还有就是

0000 0001代表引脚1   也就是0x01

0000 0010代表引脚2     0x02

0000 0100代表引脚3     0x04

0000 1000代表引脚4     0x08

按照这个以此类推

此帖出自单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表