|
7#
楼主 |
发表于 2014-7-24 17:23:27
|
只看该作者
通过学习,我知道了MSP430的I/O口不可以进行位操作,
I/O介绍 I/O,是INPUT/OUTPUT的简写,即输入输出。我们使用的MSP430G2553共有6组I/O口,如对于P1,它的输入输出值分别存储在P1IN和P1OUT两个8位寄存器中,其中P1.0对应最低位,P1.7对应最高位。且对于8位寄存器,仅最高位为1时其值为0x80,仅最低位为1时其值为0x01。 当然,同一个I/O口不能同时进行输入、输出,每一时刻只能进行一项工作,并由P1DIR寄存器控制,其中1为输出,0为输入。P1DIR默认值为0x00,即全为输入。使用时,可以采用头文件中的宏定义来增强可读性,如P1DIR=BIT0+BIT4,即将P1.0,P1.4设置为输出,其他位输入。 需要注意的是,msp430系列单片机不支持位操作,即不能操作如P1^2=1。因此,为了仅对个别位进行操作时,采用|=,&=,^=。 如P1OUT|=BIT3; 将P1.3置1,而其他位不变 P1OUT&=~BIT2; 将P1.2置0,其他位不变 P1OUT^=BIT4; 将P1.4取反,其他位不变 当然,也可以直接计算所需的值,如我们需要第0位和第三位为高,其余为低,可以直接赋值P1OUT=0x09;这里0x09是16进制表示,对应的2进制为00001001。 |
|