历史上的今天
今天是:2025年05月20日(星期二)
2020年05月20日 | 2.0 MSP430的IO配置
2020-05-20 来源:eefocus
MSP430单片机一般有多组IO口,P1、P2、P3、P4、P5和P6等。在单片机所有的端口都有控制输入输出方向和进行输入、输出的能力。其中P1、P2组端口具有中断寄存器,能够响应外部中断,大部分端口拥有第二功能。每一个端口都有PxDIR(信号方向)、PxIN(输入)、PxOUT(输出)和PxSEL(功能选择)4个寄存器。P1、P2 可以配置为输入信号上升沿或者下降沿触发中断,但固定的电平不会引起中断,中断所使用的寄存器为:PxIE(中断使能)、PxIES(中断触发沿)、PxIFG(中断标志)。还有一个寄存器PxREN,这个寄存器主要是配置单片机内部的上下拉电阻,注意,早期的单片机并没有内部上下拉电阻。
PxDIR:信号方向控制寄存器,设置为1时,则该引脚的信号方向为输出;设置为0则为输入。在上电复位时初始值全部默认为输入方向。
PxIN:输入寄存器,在输入模式下,读取该寄存器的相应比特位来获取相应引脚上的数据。如果相应引脚输入的是高电平则读取到1,如果是低电平则为0。
PxOUT:输出寄存器,在输出模式下,如果该寄存器的相应比特位设置为1,则相应比特位的引脚输出高电平,如果设置为0则输出低电平。
PxSEL:功能选择寄存器,用于选择是普通数字IO还是作为外围模块的功能。在含有第二功能引脚上的相应比特位设置为1时则设置为外围模块功能,设置为0则为普通IO。
PxIE:中断使能寄存器,该寄存器控制P1,P2端口的中断使能。也就是说MSP430F249的外部中断输入引脚就有16个。在相应引脚的比特位设置为1则使能中断,设置为0则屏蔽中断。在系统复位时,其初始值全部为0,默认不允许中断。
PxIES:中断触发沿选择寄存器,此寄存器主要针对于P1,P2端口中断的触发方式选择。设置相应引脚的相应比特位为1时,则相应引脚的触发方式为下降沿,设置为0是则为上升沿。在系统复位时,其初始值全部为0,默认上升沿触发中断。
PxIFG:中断标志寄存器,读取该寄存器相应P1,P2端口的比特位,如果为1则说明在相应的引脚上有外部中断发生;如果为0则没有外部中断发生。
PxREN:内部上下拉电阻选择寄存器,设置相应引脚的比特位为1则开启上下拉电阻,为0则关闭内部上下拉电阻。注意上下拉是否开启由PxREN寄存器决定,而上拉还是下拉是由PxOUT寄存器决定。在作为输出时,随着PxOUT的高低,自动选择上下拉,这就是平时我们没有特别的去设置内部上下拉也可以输出高电平的原因。但是作为输入的时候,这个就要配置了,我们可以人为的赋PxOUT寄存器来得到上下拉。

例如:要设置P1.0为高电平输出,P1.1为低电平输出,P1.2取反,读取P1.3的数据
写法①:P1OUT |= BIT0;//P.0输出高电平
P1OUT &= ~BIT1;//P.1输出低电平
P1OUT ^= BIT2;//P.2取反
if((P1OUT & BIT3) == 0)//判断P1.3的是否为低电平
{
//执行代码
}
写法②:P1OUT |= 0x01;//P.0输出高电平
P1OUT &= ~0x02;//P.1输出低电平
P1OUT ^= 0x04;//P.2取反
if((P1OUT & 0x08) == 0)//判断P1.3的是否为低电平
{
//执行代码
}
写法③:P1OUT |= (1<<0);//P.0输出高电平
P1OUT &= ~(1<<1);//P.1输出低电平
P1OUT ^= (1<<2);//P.2取反
if((P1OUT & (1<<3)) == 0)//判断P1.3的是否为低电平
{
//执行代码
}
史海拾趣
|
本帖最后由 paulhyde 于 2014-9-15 09:01 编辑 “英特尔杯大学生电子设计竞赛嵌入式系统专题邀请赛”(以下简称嵌入式系统邀请赛)自2002年开始举办,到今年已经是第五届了。比赛的规模也从一开始国内的15所高校28支参赛队拓展到今天的来自东亚地 ...… 查看全部问答> |
|
谁知道ST公司的protel元件库哪里有得下吗?给个网址好吗?我最近在学校STR71系列MCU的开发板制作,如果有同仁的话,我们可以讨论一下,我的QQ:670005693。… 查看全部问答> |
|
我用的PDA带有红外,但不知道能不能用它当作串口来发送数据(485通讯)(寻找 欺世盗名来灌水 yangyzqo) 我用的PDA带有红外,但不知道能不能用它当作串口来发送数据(485通讯). 请各位大侠指点! 欺世盗名来灌水 你有msn吗? … 查看全部问答> |
|
用DirectShow开发的,用到WmAsfReader的filter,创建的时候用到CLSID_WmAsfReader,可是在wince自带的头文件uuids.h里没有这个的定义,不知道怎么解决。… 查看全部问答> |
|
STM8S207的EEPROM写入后加锁,抗干扰性能明显下降??? 我在用STM8S207CB设计一个无线模块,模块的参数都是保存在EEPROM中的。测试中发现在带电拔插模块时,参数有时会改变,经过多次测试,发现规律如下:如果修改了参数后没有按过复位键(直接接到复位引脚),带电拔插时,参数一定会变;如果按过 ...… 查看全部问答> |
|
本帖最后由 telecom_hr 于 2014-4-16 16:34 编辑 本人是从事猎头工作的,目前受某半导体公司的委托招聘以下职位,具体职位要求参照职位索引以及以下内容,请有兴趣同时符合要求的候选人尽快将简历投递至lr ...… 查看全部问答> |




