MSP430 IO中断

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MSP430I/O口中断引脚设置
PxDIR
输入/输出方向寄存器
PxIN
输入寄存器
PxOUT
输出寄存器
PxIFG
中断标志寄存器
PxIE
中断使能寄存器
PxSEL
功能选择寄存器
(1)若使用P1口的部分引脚作为中断方式,在开总中断之前务必设置好
P1IFG、P1IES、P1IE
寄存器的相应位,并确保相应引脚为输入方向。

(2)
为了尽量降低功耗,对连接引脚应设定为IO功能并设为输出。

(3)中断标志需要软件清除!可以用软件置位产生中断。

MSP430的IO中断由P1口和P2口输入变化的电平触发,
P1和P2各有八个输入IO,P1的八个IO共用一个中断向量,P2的八个IO共用另一个中断向量。

在中断服务程序中判断到底是哪个IO口触发中断。

#include <msp430g2553.h>
void Key_init(void)
{
P1REN |= BIT3; //打开上拉,电路板上没有上拉电阻,触发边沿是从高电平到低电平
P1IES |= BIT3; //选择触发边沿,下降沿触发
P1IE |= BIT3; //打开P1.3的中断
P1IFG &= 0x00;
}
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗
P1DIR |= BIT0; //P1.0管脚设置为输出
P1OUT |= BIT0; //P1.0管脚输出低电平
Key_init(); //调用IO中断初始化函数
_EINT(); //开启总中断,这一步没有的话,所有的中断都不能触发
while(1); //死循环
}
#pragma vector = PORT1_VECTOR //中断向量声明
__interrupt void Key_interrput(void)
{
unsigned int i;
for(i=0;i<12000;i++); //消抖必不可少啊!!
if(P1IFG&BIT3) //判断是不是P1.3这个IO口产生了中断{ //若产生中断
P1IFG.3置1
P1OUT ^= BIT0; //LED2取反
P1IFG &= 0x00; //中断标志位需要软件清除!!!
P1REN |= BIT3;
}
}。

相关文档
最新文档