新闻中心

EEPW首页>嵌入式系统>设计应用> MSP430--通用IO端口

MSP430--通用IO端口

作者: 时间:2016-11-26 来源:网络 收藏
IO端口是单片机最常用的外设模块,由于单片机的总线不对外开放,所以单片机和外部进行信息交流的桥梁就是数字IO端口。

目前,MSP430系列单片机当中有端口P1,P2,P3,P4,P5,P6等端口,其中P1,P2的每一位都有中断功能,但不是独立的,P1口每位共用PORT1_VECTOR中断向量,P2共用PORT2_VECTOR向量。

本文引用地址://m.amcfsurvey.com/article/201611/322053.htm

P1--P6端口大多数是复用的,具有第二功能可以通过PxSEL选择是普通IO口或者第二功能。

1.端口的寄存器:

(1)P1-P2端口具有中断能力,共7个寄存器


PxIN输入寄存器,只读寄存器,即只能读取输入端口x的数据;

PxOUT输出寄存器,可读可写,即可以向输出端口写8位数据输出,同时也可以读取数据;

PxDIR方向位寄存器,当PxSEL选择普通IO口时,PxDIR决定是输出还是输入,0输入,1输出;

PxSEL功能选择寄存器,选择普通功能或者复用功能;0普通IO口,1复用功能;

PxIE中断使能寄存器,1使能相应位的中断,0不使能;注意:在中断当中要手动清除中断标志位。

PxIFG中断标志寄存器,1相应中断标志位有效,0无效;

PxIES中断触发沿选择寄存器,0上升沿,1下降沿相应中断标志位置位
(2)P3--P6无中断能力,共4个寄存器


PxIN输入寄存器,只读寄存器,即只能读取输入端口x的数据;

PxOUT输出寄存器,可读可写,即可以向输出端口写8位数据输出,同时也可以读取数据;

PxDIR方向位寄存器,当PxSEL选择普通IO口时,PxDIR决定是输出还是输入,0输入,1输出;

PxSEL功能选择寄存器,选择普通功能或者复用功能;0普通IO口,1复用功能;

2.例程:

(1)//程序描述:P1,P2口具有中断功能,通过设置寄存器,实现P1口外部中断

#include"msp430x14x.h"

#define uchar unsigned char
#define uint unsigned int

uchar i;
uint j;
uchar seg[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
//共阳数码管字型码数组

void main()
{
WDTCTL=WDTPW+WDTHOLD;//
P4DIR=0xff;
//

P1DIR&=~BIT0;//p1.0口设置为输入
P1IFG=0;//开中断前清楚标志位
//P1IN=1;//!!!注意:PxIN寄存器只能读不能写
P1IES&=~BIT0;//中断源选择.下降沿触发
P1IE|=BIT0;//中断使能
_EINT();//开总中断
}
#pragma vector=PORT1_VECTOR
__interruptvoid p1()
{
i++;
if(P1IFG&BIT0)
for(j=0;j<2000;j++);
P4OUT=seg[i];//点亮灯
if(i>=9)
i=0;
P1IFG=0;
return;
}

(2)IO端口中断模块中断程序,以P1口为例

void main()

{

p1.0口设置为输入;
清标志位;

中断使能;

中断触发沿选择;

开总中断;

}
#pragma vector=PORT1_VECTOR//中断函数
__interrupt void p1()
{

if(P1IFG & BIT0)

{

功能代码0;

}

if(P1IFG & BIT1)

{

功能代码1;

}

.......

if(P1IFG & BIT7)

{

功能代码7;

}

P1IFG = 0;//!!!!!!!!!!!!!注意:必须清除中断标志位

}



关键词:MSP430通用IO端

评论


技术专区

关闭