MSP430F249的IO端口.docx

上传人:b****2 文档编号:2136775 上传时间:2022-10-27 格式:DOCX 页数:58 大小:860.14KB
下载 相关 举报
MSP430F249的IO端口.docx_第1页
第1页 / 共58页
MSP430F249的IO端口.docx_第2页
第2页 / 共58页
MSP430F249的IO端口.docx_第3页
第3页 / 共58页
MSP430F249的IO端口.docx_第4页
第4页 / 共58页
MSP430F249的IO端口.docx_第5页
第5页 / 共58页
点击查看更多>>
下载资源
资源描述

MSP430F249的IO端口.docx

《MSP430F249的IO端口.docx》由会员分享,可在线阅读,更多相关《MSP430F249的IO端口.docx(58页珍藏版)》请在冰豆网上搜索。

MSP430F249的IO端口.docx

MSP430F249的IO端口

第3章MSP430单片机通用I/O接口

I/O口是单片机控制系统对外沟通的最基本部件,从基本的键盘、LED显示到复杂的外设芯片等,都是通过I/O口的输入、输出操作来进行读取或控制的。

为满足单片机系统对外部设备控制的需要,MSP430提供了许多功能强大、使用方便灵活的输入/输出接口。

一般来说,MSP430单片机的I/O口可分为以下几种:

 

(1)通用数字I/O口。

用于外部电路数字逻辑信号的输入和输出。

(2)并行总线输入/输出端口。

用于外部扩展需要并行接口的存储器等芯片。

一般包括数据总线、地址总线和包括读写控制信号的控制总线等。

  

(3)片内设备的输入/输出端口。

如:

定时器/计数器的计数脉冲输入,外部中断源信号的输入等,A/D输入、D/A输出接口,模拟比较输入端口,脉宽调制(PWM)输出端口等。

有的单片机还将LCD液晶显示器的接口也集成到单片机。

  (4)串行通信接口。

用于计算机之间或者计算机和通信接口芯片之间数据交换。

如:

异步串行接口(RS-232、RS-485),I2C串行接口,SPI串行接口,USB串行口等。

为了减少芯片引脚的数量以降低芯片的成本,又提供更多功能的I/O口,现在许多单片机都采用了I/O口复用技术,即端口可作为通用的I/O口使用,也可作为某个特殊功能的端口使用,用户可根据系统的实际需要来定义使用。

这样就为设计开发提供了方便,简化了单片机系统的硬件设计工作。

在MSP430系列中,不同单片机拥有的I/O口数目不同,引脚最少的MSP430F20XX只有10个可用I/O口,而功能更丰富的MSP430FG46XX拥有多达80个I/O口。

MSP430F249单片机有6组I/O口:

P1~P6。

每组I/O口都有8个可以独立编程的引脚,例如P1口有8个可编程引脚,为P1.0~P1.7。

所有这些I/O口都是双功能(有的为3功能)复用的。

其中第一功能均作为数字通用I/O接口使用,而复用功能则分别用于中断、时钟/计数器、USCI、比较器等应用。

这些I/O口同外围电路构成单片机系统的人机接口和数据通信接口。

MSP430F249单片机的I/O口主要有以下特征:

(1)每个I/O口可以独立编程设置。

(2)输入、输出功能可以任意结合使用。

(3)P1和P2口具有中断功能,可以单独设置成上升沿或下降沿触发中断。

(4)有独立的输入/输出寄存器。

3.1通用I/O接口

MSP430F249单片机的每组I/O口都有4个控制寄存器,分别为方向控制寄存器PxDIR、输入寄存器PxIN、输出寄存器PxOUT和功能选择寄存器PxSEL,此处,小写字母“x”表示6组I/O口的数字序号,x=1~6,即P1口的方向控制寄存器为P1DIR,P6口的方向控制寄存器为P6DIR。

另外,P1和P2口还具有3个中断寄存器,分别为中断允许寄存器PxIE、中断沿选择寄存器PxIES和中断标志寄存器PxIFG,此处,x=1~2。

1、方向控制寄存器PxDIR

该寄存器控制Px口的各个引脚的方向。

设置相应的比特位(bit)为1时,相对应的引脚为输出;设置相应的bit为0时,则对应的引脚为输入。

PxDIR寄存器复位时初始值全部输入为0。

PxDIR寄存器的比特分配如下所示:

PxDIR.7

PxDIR.6

PxDIR.5

PxDIR.4

PxDIR.3

PxDIR.2

PxDIR.1

PxDIR.0

可以看出,Px口的每个引脚都可以单独配置成输入或者输出方向的控制。

需要注意的是:

MSP430系列单片机端口输出电流最大为6mA,当需要驱动比较大的负载的时候,需要利用三极管或者缓冲器来提高端口的驱动能力。

MSP430单片机的I/O口为双向I/O口,因此在使用I/O口前首先要用方向选择寄存器来设置每个I/O口的方向,在程序运行中还可以动态改变I/O口的方向。

例如P1.0、P1.1、P1.2接有按键,P1.4、P1.5、P1.6接有LED,通用I/O接口应用示例如图3.1所示。

图3.1通用I/O接口应用示例图

其中按键为输入设备,按键未按下时,电阻R4、R5、R6将端口P1.0、P1.1、P1.2上拉到高电平,按键按下时,按键将对应的端口短路到地。

P1.0、P1.1、P1.2要设为输入,P1.4、P1.5、P1.6外接发光二极管,要设置为输出。

程序如下:

#defineBIT0(0x0001)

#defineBIT1(0x0002)

#defineBIT2(0x0004)

#defineBIT3(0x0008)

#defineBIT4(0x0010)

#defineBIT5(0x0020)

#defineBIT6(0x0040)

#defineBIT7(0x0080)

P1DIR|=BIT4+BIT5+BIT6;//P1.4、P1.5、P1.6设为输出

P1DIR&=~(BIT0+BIT1+BIT2);//P1.0、P1.1、P1.2设为输入(可省略)

其中BIT0~BIT7为宏定义,P1DIR|=BIT4+BIT5+BIT6是将P1DIR寄存器的第4、5、6比特位置1,即配置为输出;P1DIR&=~(BIT0+BIT1+BIT2)是将P1DIR寄存器的第0、1、2比特位置0,即配置为输入。

由于PxDIR寄存器在复位过程中会被清0,没有被设置的I/O口方向均为输入状态,因此第二句可以被省略。

对于所有已经设成输出状态的I/O口,可以通过PxOUT寄存器设置其输出电平。

2、输入寄存器PxIN

在输入的模式下,读取该寄存器的相应比特来获得相应引脚上的数据。

在输入模式下,当I/O口相应输入高电平时,该寄存器相应的比特为1;当I/O口相应输入低电平时,该寄存器相应的比特则为0。

PxIN寄存器的比特分配如下所示:

PxIN.7

PxIN.6

PxIN.5

PxIN.4

PxIN.3

PxIN.2

PxIN.1

PxIN.0

该寄存器为只读寄存器,写无效。

其每个比特可以单独读取,从而获得相应引脚上的输入数据或者引脚的状态。

3、输出寄存器PxOUT

在输出模式下,如果该寄存器的相应比特设置为1时,相应的引脚输出为高电平;如果设置该寄存器的相应比特为0时,则相应的引脚输出低电平。

PxOUT寄存器的比特分配如下所示:

PxOUT.7

PxOUT.6

PxOUT.5

PxOUT.4

PxOUT.3

PxOUT.2

PxOUT.1

PxOUT.0

值得注意的是:

PxOUT复位时其值不确定,在使用过程中应该先使PxOUT的值确定以后才设置方向控制寄存器。

对于所有已经被设成输入状态的I/O口,可以通过PxIN寄存器读回其输入电平。

例如读回P1.0口上所接按键的开关状态,若处于按下状态(低电平),则从P1.4口输出低电平点亮LED,程序如下:

P1OUT=BIT4+BIT5+BIT6;//P1.4~P1.6输出高电平

//二极管阳极接高电平,二极管不发光

if((P1IN&BIT0)==0)P1OUT|=BIT4;//P1.4输出低电平点亮LED

4、功能选择寄存器PxSEL

用于设置Px口的每一个引脚作为一般I/O口使用还是作为外围模块的功能使用。

当该寄存器的相应比特设置为1时,其对应的引脚为外围模块的功能,即第二功能,具体每个端口的第二功能请参考芯片手册。

当该寄存器的相应比特设置为0时,其对应的引脚为一般I/O口。

PxSEL寄存器的比特分配如下所示。

其复位值全为0,默认为I/O口功能。

PxSEL.7

PxSEL.6

PxSEL.5

PxSEL.4

PxSEL.3

PxSEL.2

PxSEL.1

PxSEL.0

在MSP430F249单片机中,很多内部功能模块也需要和外界进行数据交换,为了不增加芯片引脚数量,大部分都和I/O口复用引脚,导致MSP430F249单片机的所有I/O口都具有第二功能。

通过寄存器PxSEL可以设置某些I/O口作为第二功能使用。

例如从MSP430F249芯片手册中可以查到,MSP430x249系列单片机的P3.4、P3.5口的第二功能为串行口的TXD、RXD。

若需要将这两个引脚配置为串口收发引脚,则须将P3SEL的第4、5比特位置高,程序如下:

P3SEL|=BIT4+BIT5;//P3.4,、P3.5设为串口收发引脚

5、中断允许寄存器PxIE

该寄存器控制P1、P2口的中断允许。

设置相应的比特为1,则对应的引脚允许中断功能;如果设置相应的比特为0,则对应的引脚不允许中断功能。

寄存器的比特分配如下所示。

其复位值全为0,默认为不允许中断。

PxIE.7

PxIE.6

PxIE.5

PxIE.4

PxIE.3

PxIE.2

PxIE.1

PxIE.0

6、中断沿选择寄存器PxIES

控制P1、P2口的中断触发沿选择。

如果设置相应的比特为1,则其对应的引脚选择下降沿触发中断方式;如果设置相应的比特为0,则其对应的引脚选择上升沿触发中断方式。

PxIES寄存器的比特分配如下所示。

其复位值全为0,默认为上升沿触发中断。

PxIES.7

PxIES.6

PxIES.5

PxIES.4

PxIES.3

PxIES.2

PxIES.1

PxIES.0

在使用I/O口中断之前,需要先将I/O口设置为输入状态,并允许该比特位的中断,再通过PxIES寄存器选择触发沿方式为上升沿触发或者下降沿触发。

例如将P1.0、P1.1、P1.2口设为外部中断源,P1.0为上升沿触发,P1.1、P1.2下降沿触发,程序设计如下:

P1DIR&=~(BIT0+BIT1+BIT2);//P1.0、P1.1、P1.2设为输入

P1IES|=BIT1+BIT2;//P1.0为上升沿触发、P1.1、P1.2设为下降沿中断

P1IE|=BIT0+BIT1+BIT2;//允许P1.5、P1.6、P1.7中断

_EINT();//总中断允许

7、中断标志寄存器PxIFG

如果P1、P2口相应的比特为1,则该位对应的引脚有外部中断产生;若相应的比特为0,则其对应的引脚没有外部中断产生。

PxIFG寄存器的比特分配如下所示。

其复位值全为0,默认为未发生中断。

PxIFG.7

PxIFG.6

PxIFG.5

PxIFG.4

PxIFG.3

PxIFG.2

PxIFG.1

PxIFG.0

无论中断是否被允许,也无论是否正在执行中断程序,只要对应的I/O口满足中断条件(如一个下降沿触发),PxIFG中的相应比特都会立即置1并保持,必须通过软件复位将其清零,最大可能的保证不会漏掉每一次中断。

在MSP430系列单片机中,P1口的8个中断和P2口的8个中断各公用了一个中断入口,当引脚中断功能打开后,外部输入的变化会使得PxIFG对应的比特位置1。

当有多个引脚产生中断时,可以通过查询该寄存器在中断服务程序中用于判断哪一位I/O口产生的中断。

下面的中断服务程序示范P1.0、P1.1、P1.2发生中断后将P1.4、P1.5、P1.6的LED点亮。

#pragmavector=PORT1_VECTOR//P1口中断源

__interruptvoidPORT1_ISR(void)//声明一个中断服务程序,名为PORT1_I

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1