一、实现功能
利用中断函数实现按键控制LED,一按一灭的功能 。
二、运行内容
1、整体代码
#include "MSP430.h"
#include "IN430.h"
//#include "MSP430f5529.h"
int main( void )
{
WDTCTL = WDTPW + WDTHOLD;
/*初始LED*/
P1DIR|=BIT0;
P1OUT&=~BIT0;
/*初始按键 输出*/
P1DIR&=~BIT1;
/*使能上拉 */
P1REN |=BIT1;
P1OUT |=BIT1;
/*打开P1.0中断 */
P1IE |=BIT1;
/*设定下降沿触发 */
P1IES |=BIT1;
/*清除中断 */
P1IFG&=~BIT1;
/*打开全局中断 */
_BIS_SR(GIE);
while(1)
{
}
}
#pragma vector=PORT1_VECTOR
__interrupt void Port1_ISR()
{
if(P1IFG & BIT1)//判断是否是P1.0产生的中断
{
P1IFG&=~BIT1;//中断标记位清零
P1OUT ^=BIT0;//处理事件
}
}
2、初始按键
按键是按下是低电平,故是从高电平往低电平走是作为一次判断按键按下标志,这就需要设定下降沿触发,因此为使能上来
/*初始按键 输出*/
P1DIR&=~BIT1;
/*使能上拉 */
P1REN |=BIT1;
P1OUT |=BIT1;
/*打开P1.0中断 */
P1IE |=BIT1;
/*设定下降沿触发 */
P1IES |=BIT1;
/*清除中断 */
P1IFG&=~BIT1;
3、打开全局中断
在头文件#include "IN430.h"中找到打开全局中断的函数
_BIS_SR(GIE);
4、打开全局中断
中断服务函数例程如下,#pragma vector=中断向量(需要在所属MSP430单片机头文件找到中断向量函数)
__interrupt void 随便命名()
#pragma vector=PORT1_VECTOR
__interrupt void Port1_ISR()
{
if(P1IFG & BIT1)//判断是否是P1.0产生的中断
{
P1IFG&=~BIT1;//中断标记位清零
P1OUT ^=BIT0;//处理事件
}
}
上一篇:MSP430定时器、中断
下一篇:MSP430(0.96OLED)
设计资源 培训 开发板 精华推荐
- “西北模电王”新概念模拟电路4 《运放电路的频率特性和滤波器》
- ELEXCON 2022 深圳国际电子展11月6日(新档期)开幕,速领门票!更有N重好礼等你拿!
- 【已结束】直播“戴”“芯”:英飞凌可穿戴设备保姆级解决方案
- 有奖直播 | 与英飞凌一同革新您的电动汽车温控系统:集成热管理系统(低压侧)
- 泰克移动多媒体总线系列专题来袭~《HDMI2.0规范测试方案》下载有礼!
- 任选下载有礼| ADI 【锂电池解决方案、参考电路合集】
- 有奖直播|如何借助Mentor Xpedition AMS对汽车CAN总线进行仿真优化分析?
- 下载Intel《赢得大资料爆炸——大资料、智慧系统与物联网的时代》白皮书
- 真香!泰克示波器全新升级,速来解锁!不看感觉错过一个亿!
- 赛灵思工业与医疗专题有奖问答