MSP430中断函数篇

发布者:之敖赵先生最新更新时间:2022-10-27 来源: csdn关键字:MSP430  中断函数  按键控制 手机看文章 扫描二维码
随时随地手机看文章

一、实现功能

利用中断函数实现按键控制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中断函数篇

上一篇:MSP430定时器、中断
下一篇:MSP430(0.96OLED)

推荐阅读最新更新时间:2024-11-12 18:51

MSP430学习笔记(3)时钟模块
1. 时钟模块包括高速晶体振荡器、低俗晶体振荡器、数字控制振荡器DCO、锁频环FLL以及锁频环增强版本FLL+等部件构成。 2. 时钟模块产生3个输出结果:ACLK(辅助时钟),MCLK(主系统时钟)和SMCLK(子系统时钟)。 3. MSP430采用锁频环FLL以及锁频环增强版本FLL+等部件将晶体频率倍频至系统频率。数字控制振荡器DCO和锁频环FLL计数相结合可实现快速启动。在晶体振荡器失效时DCO可自动用于系统时钟。 4. 3个时钟输入源: a) LFXT1CLK:低频时钟源 b) XT2CLK:高频时钟源 c) DCOCLK:数字控制RC振荡器 5. 3种时钟信号 a)
[单片机]
<font color='red'>MSP430</font>学习笔记(3)时钟模块
MSP430F5438A的时钟系统
现在在做的温控部分算法,需要每隔0.25s采集一次温度数据,然后计算出相应的控制量,并以PWM的形式输出。为了实现这个功能,时钟系统是不可或缺的,现就MSP430F5438A的时钟系统进行研究。 MSP430F5438A 里面有三个计时器,如下图所示 这三个计时器为TA0,TA1,TB0。TA0有5个capture/compare 寄存器, TA1有3个, TB0 有7个。 TA0 is a 16-bit timer/counter (Timer_A type) with five capture/compare registers. It can support multiple capture/compares, PW
[单片机]
提高MSP430G系列单片机的Flash 擦写寿命的方法
摘要 在嵌入式设计中,许多应用设计都需要使用EEPROM 存储非易失性数据,由于成本原因,某些单片机在芯片内部并没有集成EEPROM。MSP430G 系列处理器是TI 推出的低成本16 位处理器,在MSP430G 系列单片机中并不具备EEPROM。为了存储非易失性数据,MSP430G 系列处理器在芯片内部划分出了256 字节的Flash 空间作为信息Flash,可用于存储非易失性数据,但是由于Flash 与EEPROM 在擦写寿命上存在一定差距,所以在实际应用中,这种应用方式并不能够满足所有客户的需求。本应用笔记介绍了使用代码区域Flash 来模拟EEPROM,通过一定的软件处理算法,可以大大增加数据存储周期的一种方法。本文给出了
[单片机]
提高<font color='red'>MSP430</font>G系列单片机的Flash 擦写寿命的方法
MSP430第一章:系统介绍
1.系统控制模块(SYS)介绍 SYS负责整个系统中各个模块之间的交互,其提供的功能不是模块本身自有的。地址解码、总线仲裁、中断事件整合和复位生成是SYS提供的许多功能的一些例子。 2.系统重启和初始化 系统重启电路如图所示,有断电复位(BOR)、上电复位(POR)、上电清除(PUC)三个来源。不同的事件触发这些信号并产生不同的初始条件。 以下事件会产生BOR: 设备上电 在重启模式下RST/NMI引脚低电平 一个事件从LPMx.5唤醒设备 软件BOR事件 违反安全事件 以下事件会触发POR: BOR信号(BOR总是会产生POR,反之则不然) SVSH或者SVSM低电平信号 SVSL或者SVSL低电平信号 软件PO
[单片机]
<font color='red'>MSP430</font>第一章:系统介绍
stm32按键控制led灯亮灭
在嵌入式系统中,硬件按键常常被用作开关输入,控制LED灯亮灭。在STM32系列单片机中,有多种方式实现按键控制LED灯亮灭,我们将介绍其中一种较为简单的方法。 一、STM32开发环境搭建 1. 软件环境搭建 首先,需要在计算机中下载安装Keil MDK开发环境,以实现对STM32单片机的编写、编译、烧录等操作。同时,还需要下载对应的STM32CubeMX软件,用于生成代码、初始化硬件等操作。 2. 硬件环境搭建 将STM32单片机与相应的按键和LED灯连接。本实验使用的STM32是STM32F103C8T6,按键使用的是按钮开关,LED灯使用的是红色和蓝色通用的LED灯。 二、STM32按键控制LED灯亮灭实验步骤 1. 打开ST
[单片机]
一种基于MSP430和nRF401的家用射频无线自动抄表系统设计
传统的抄表收费方式存在许多弊端,出错率高,漏抄,麻烦,成本高,已经跟不上现代化社会的需求。自从有了自动抄表系统,中间省去了很多环节,提高工作效率,降低成本。为了在已建成的小区中方便地使用自动抄表系统,免除家庭内部重新布线的不便,设计了一个应用于家庭内部的短距离无线抄表系统。 1 系统的总体结构 图1为短距离无线抄表系统的总体结构,它可用于家庭内部三表或多表数据的抄送。系统下层直接与水表、电表、煤气表等连接,上层可以通过电话、以太网、GSM或GPRS等与抄表中心连接,实现数据的远程抄送。 系统一般使用被动抄表方式。上层模块接收到仪表中心的抄表命令时,通过无线方式向下层模块发送抄表指令。下层模块接收到指令后通过485总线采集
[单片机]
一种基于<font color='red'>MSP430</font>和nRF401的家用射频无线自动抄表系统设计
msp430f149的SPI设置
首先注意几个问题: 1,SPI通信时,双方的时序(相位,极性)必须一致(看后面SPI四种时序设置) 2,主机设置时钟,从机不需要设置时钟. 3,时钟引脚上,在有数据传输时,才有时钟,没有数据传输时,则没有时钟 经测试下面程序在msp430F149上实验成功,用于两个板子通信 主机: (SPI.C) #include msp430x14x.h #define USPI3ON P3SEL |= 0X0E #define USPI4ON P3SEL |= 0X0F char TxFlag=1; char RxFlag=0; void ClkInit() { char i; BCSCT
[单片机]
<font color='red'>msp430</font>f149的SPI设置
GD32 MCU是如何进入中断函数
用过GD32 MCU的小伙伴们都知道,程序是顺序执行的,但当有中断来的时候程序会跳转到中断函数,执行完中断函数后程序又继续回到原来的位置继续执行,那么你们知道MCU是如何找到中断函数入口的吗? 今天我们就以GD32F303系列的EXTI0中断来描述下MCU是如何进入中断的。 首先来看一个简单的代码(以Keil为开发环境): 这段程序初始化了两个LED灯,并将一个按键设置为中断模式,这里用的是PA0,所以中断号也为0,即EXTI0。 再来看一下中断函数: 中断函数也很简单,当有中断发生的时候,去翻转一个LED灯状态。 好,我们通过map文件看下这个中断函数的地址在哪里(不会的小伙伴可以看看前面的视频——《如果查看
[单片机]
GD32 MCU是如何进入<font color='red'>中断</font><font color='red'>函数</font>的
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved