学习笔记整理——MSP430F149学习笔记之I/O口配置问题
MSP430F1014单片机共计64个引脚,其中有六个端口(P1~P6),每个端口具有8个I/O口,共计48个I/O口。
MSP43f149端口功能:
端口 功能
P1、P2端口 IO口、中断、其它片内外设功能
P3~P6端口 IO口、其它片内外设功能
MSP430F1014单片机具有丰富的寄存器供用户实现相应的操作,其中P1、P2端口具有七个寄存器,P3~P6端口具有四个寄存器。通过寄存器的配置我们可以实现如下功能:
1.每个IO口的独立编程。
2.任意组合的输入、输出和中断。
3.P1、P2端口的IO口都可以用作外部中断处理。
4.可以按字节输入、输出,或者按位操作。
P1~P6端口共有的寄存器有方向寄存器(PxDIR)、输入寄存器(PxIN)、输出寄存器(PxOUT)和功能选择寄存器(PxSEL),P1、P2端口所特有的寄存器有:中断标志寄存器(PxIFG)、中断触发沿选择寄存器(PxIES)和中断使能寄存器(PxIE)。其中的x表示的是端口。
PxDIR:输入输出方向寄存器
八位相互独立,可以分别定义各位的输入、输出方向,在PUC(上电清楚)信号后各位复位。使用输入输出功能时必须先设定输入\输出的方向。在输入模式时只能读,在输出模式时可读可写。
7 6 5 4 3 2 1 0
P7DIR P6DIR P5DIR P4DIR P3DIR P2DIR P1DIR P0DIR
0:输入模式
1:输出模式
示例:
P1DIR|=BIT4; //P1.4输出
P4DIR|=0xF0; //P4口高四位输出低、四位输入
PxIN:输入寄存器
输入存储器为只读存储器,用户不能对它进行写入,只能读取其IO口的内容,此时引脚方向只能为输入。
7 6 5 4 3 2 1 0
PxIN PxIN PxIN PxIN PxIN PxIN PxIN PxIN
示例:在键盘扫描程序中经常要读取行线或者列线的端口寄存器的值来判断案件情况如:unsigned char key;
P1DIR&=~BIT4; //P1.4口输入。
… …
Key=P1IN&0x10; //输出端口P1.4的值。
… …
PxOUT:输出寄存器
该寄存器为I/O端口的输出缓冲寄存器,在读取时输出缓存的内容与引脚的方向定义无关,改变方向寄存器的内容,输出的缓存的内容不受影响。
7 6 5 4 3 2 1 0
P7OUT P6OUT P5OUT P4OUT P3OUT P2OUT P1OUT P1OUT
示例:
P1OUT|=0x01; //P1.0输出为1
P1OUT&=~0x01; //P1.0输出为0
PxSEL:功能选择寄存器
P1~P6端口都具有其他片内外设功能,将这些功能与芯片外的联系通过引脚的复用来实现。PxSEL用来选择端口的I/O功能与外围模块功能。
7 6 5 4 3 2 1 0
P7SEL P6SEL P5SEL P4SEL P3SEL P2SEL P1SEL P0SEL
0:选择引脚为I/O口功能
1:选择引脚为外围模块功能
示例:P1SEL|=0x10; //P1.4为外围模块功能
在不使用外围模块功能时PxSEL可不对其尽心任何操作,当使用外围模块功能时将对应的端口置0。当不使用外围模块功能时PxDIR、PxIN、PxOUT三个寄存器的关系总结如下表:
PxDIR PxIN PxOUT I/O 口状态
0 1 / 读取I/O口的值
1 / 0 输出0
/ 1 输出1
P1、P2端口所特有的三个寄存器
PxIFG:中断标志寄存器
它的八个标志标志相应引脚是否有中断请求有待处理。其中中断标志分别为PxIFG .0~ PxIFG .7。应该注意的是:PxIFG .0~ PxIFG .7共用一个中断向量,为多源中断。当任意事件引起的中断进行处理时,PxIFG .0~ PxIFG .7不会自动复位,必须由软件来判断是哪一个事件,并将相应的标志复位。另外外部中断事件的事件必须保持不低于1.5倍的MCLK时间,以保证中断请求被接受,且使响应中断标志置位。
7 6 5 4 3 2 1 0
P7IFG P6IFG P5IFG P4IFG P3IFG P2IFG P1IFG P1IFG
0:没有中断请求
1:有中断请求
示例:
PxIES:中断触发沿选择寄存器
如果允许Px口的莫个引脚中断,还需要定义该引脚的中断触发方式(上升沿还是下降沿触发中断)。
7 6 5 4 3 2 1 0
P7IES P6IES P5IES P4IES P3IES P2IES P1IES P1IES
0:上升沿使相应标志置位
1:下降沿使相应标志置位
示例:P1IES = 0x0f; // P1.0~P1.3选择下降沿中断
PxIE:中断使能寄存器
Px口德每一个引脚都有一位用于控制该引脚是否允许中断。
7 6 5 4 3 2 1 0
P7IE P6IE P5IE P4IE P3IE P2IE P1IE P1IE
0:禁止中断
1:允许中断
示例:P1IE = 0x0f; // 打开中断使能 能不能整点跟得上时代的
比如5系,6系的
或者实用,性价比高的2系的
149,149,永远的149{:mad:}{:sweat:} 额。。。这个是14年暑假集训的时候学习的,后来就去搞STM32了,430只是做TI比赛才用它的。
页:
[1]