P1OUT |= 0x01; // 将 P1.0 置 1 ,按位“或”,相当于置 1
P1OUT &= ~0x02; // 将 P1.1 置0,取反后再按位“与”,相当于置 0
P1OUT ^= 0x04; // 将 P1.2 取反,按位“异或”相当于取反
比如这个程序里,怎么知道管脚是P1.0、P1.1和P1.2呢?与/或/非是后面那个十六进制和谁运算呢,管脚的状态不是不知道吗,这么就置位复位了
引用: 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。如果是这样我就能懂,但是置位复位啥的是为什么呢
引用: 青铜铜 发表于 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
引用: 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设置为输出方向,并且设置为高电平?
(粗体字是我的猜测,求指正)
引用: 青铜铜 发表于 2023-6-22 13:14 还是有一些不懂的地方。 比如P1OUT |=0x01;我的理解是P1OUT是输出寄存器,可以决定输出高电平还是低 ...
OUT寄存器不改变方向,如果PxDIR对应的位设置了1,这时对应的引脚才是输出状态,
OUT寄存器只决定对应的引脚输出高还是输出低。
如果DIR设置了0这时是输入状态,如果配置了上拉/或者下拉电阻,OUT对应的位是1是表示对应引脚是上拉还是下拉。
在 MSP430 微控制器环境中,P1OUT 是 Port 1 的输出寄存器。Port 1 包含多个引脚,每个引脚都有对应的位控制。
根据代码片段 P1OUT |= 0x01,0x01 设置了 P1OUT 的最低位为高电平(1),这意味着是在控制 Port 1 的第一个引脚。
具体哪个引脚对应 P1OUT 的最低位需要根据实际的硬件连接情况来确定。请参考相关硬件文档或代码中的引脚映射表来确认具体的引脚。
根据代码片段 P1OUT |= 0x01,0x01 设置了 P1OUT 的最低位为高电平(1),这意味着是在控制 Port 1 的第一个引脚。具体哪个引脚对应 P1OUT 的最低位需要根据实际的硬件连接情况来确定。请参考相关硬件文档或代码中的引脚映射表来确认具体的引脚。
引用: 青铜铜 发表于 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
按照这个以此类推