MSP430FF529实现跑马灯(中断方法)

2019-10-19来源: eefocus关键字:MSP430FF529  跑马灯  中断方法

功能:

使用端口的中断功能实现以下功能:按下按键S1,跑马灯正向运行;按下按键S2,跑马灯反向运行。


原理:

MSP430F5529单片机内端口模块共有11个端口P11~P11。其中只有P1、P2端口具有中断功能。跟中断功能相关寄存器有:PxIFG, PxIE, PxIES。

PxIE为中断使能寄存器

0:禁止中断 1:允许中断

eg:P1IE = 0x10 //P1.4引脚中断使能


PxIES 为中断触发沿选择寄存器

0:上升沿中断标志置位 1:下降沿中断标志置位

eg:P1IEs = 0x10 //P1.4引脚中断使能

【改变PxIES可能使相应的中断标志置位】


PxIFG中断标志寄存器

相应的引脚有中断请求,会使相应的中断标志位置位。

【外部中断事件的时间必须保持不低于1.5倍的MCLK的时间,以保证中断请求被接受,且使相应中断标志位置位】


【中断标志PxIFG.0- PxIFG.7共用一个中断向量,属于多源中断。任一事件引起的中断进行服务时,PxIFG.0- PxIFG.7不会自动复位。必须用软件来判定是对哪一个事件服务,并将相应的中断标志复位】


代码

以下是实现代码:


#include

void main(void )

{

  // Stop watchdog timer to prevent time out reset

  WDTCTL = WDTPW + WDTHOLD;

P4DIR = 0xff;

P1IE |= BIT1;

P1IES |= BIT1;

P1IFG &= ~BIT1;//清除中断标志

P2IE |= BIT1;

P2IES |= BIT1;

P2IFG &= ~BIT1;//清除中断标志

  _BIS_SR(LPM4_bits+GIE);//CPU置LPM4模式

}


#pragma vector = PORT1_VECTOR//中断向量 服务程序

__interrupt void Port1(void)

{

    int i;

    unsigned char LED[] = {0x02,0x04,0x08,0x80,0x02,0x04,0x08,0x80};

    for(i=0;i<=7;i++)//循环点亮8只LED灯

    {

     P4OUT = LED[i];

     delay_cycles(500000);//延时500毫秒

    }

    P1IFG &= ~BIT1;//多源不会自动清零,需手动 

}


 #pragma vector = PORT2_VECTOR//中断向量 服务程序

__interrupt void Port2(void)

{

    int j=7;

    unsigned char LED[] = {0x02,0x04,0x08,0x80,0x02,0x04,0x08,0x80};

    for(j=7;j>=0;j--)//循环点亮8只LED灯

    {

     P4OUT = LED[j];

     _delay_cycles(500000);//延时500毫秒

    }

    P2IFG &= ~BIT1;//多源不会自动清零,需手动

}


欢迎指正、优化!


关键字:MSP430FF529  跑马灯  中断方法 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic477701.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:MSP430F5529&LCD1602程序
下一篇:浅谈msp430f5529入门(1)——时钟模块DCO

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

AVR单片机跑马灯的仿真设计
简易的跑马灯设计。基于AVR单片机仿真原理图如下:单片机源程序如下:/********************************************************************                            汇诚科技*********************************************************************/#include <iom16v.h>
发表于 2019-11-11
AVR单片机跑马灯的仿真设计
PIC16F684单片机定时中断跑马灯
初学PIC,写了一个定时跑马灯程序,以供新手学习PIC提供子资料,文中给出了详细代码和注释,对照手册,新手完全可以看懂,便于理解和后期开发,给予新手打开PIC的大门钥匙。1、开发环境:我选择的是 MPLAB x IDE 2、芯片型号:8位单片机,PIC16F6843、程序功能:(1)RC3、RC4接两个LED灯,低电平点亮(2)时钟选用内部时钟8MHZ(3)定时时间为1ms进一次中断(4)计时500ms,小灯500ms亮,500ms灭/*********************************************//***        芯片型号:PIC16F6841
发表于 2019-10-28
AVR128单片机最小系统串口,外部中断,跑马灯,uCOS-II移植
实验名称:串口通信实验功能描述:计算机通过串口向开发板发送数据,开发板将数据原样送回。实验目的:学习串口通信实验说明:MCU--M128          内部8M晶振      连接方式:利用串口线将开发板和计算机相连。单片机源程序如下:/************************************************文件:sio.c用途:结构化串口通信程序************************************************/#include "config.h"#if
发表于 2019-10-25
stm32入门——跑马灯(基于stm32f103zet6)
最近开始学stm32,着实感觉到了stm32和51之间的区别,但也有联系,总我感觉32与51之间最大的区别就是在使用某个外设之前,要对该外设进行时钟的使能(以达到降低功耗的目的),和相关配置。刚学完跑马灯,下面对跑马灯用到的对IO口的配置相关知识分别对应官方库函数和寄存器进行总结。如有错误或不足,请在下方留言。文章内容基于正点原子战舰。IO口的状态       IO口有八大模式:─  输入浮空(  GPIO_Mode_IN_FLOATING = 0x04,)               
发表于 2019-10-21
stm32入门——跑马灯(基于stm32f103zet6)
stm32入门——跑马灯(基于stm32f103zet6)
最近开始学stm32,着实感觉到了stm32和51之间的区别,但也有联系,总我感觉32与51之间最大的区别就是在使用某个外设之前,要对该外设进行时钟的使能(以达到降低功耗的目的),和相关配置。刚学完跑马灯,下面对跑马灯用到的对IO口的配置相关知识分别对应官方库函数和寄存器进行总结。如有错误或不足,请在下方留言。文章内容基于正点原子战舰。IO口的状态       IO口有八大模式:─  输入浮空(  GPIO_Mode_IN_FLOATING = 0x04,)               
发表于 2019-10-21
stm32入门——跑马灯(基于stm32f103zet6)
关于串口唤醒STM8L151低功耗HALT模式的方法——外部中断法
以前看到一款xx公司的低功耗产品,用的是STM8L151的MCU,无线模组是LORA或者NB模组,因为我选择用的另一款M0+核的芯片,所有也一直没有太多时间去研究那个产品究竟是怎么用串口唤醒M0核的MCU STM8L151的。M0+核的在低功耗处理上方便太多,串口可直接唤醒。想不明白在HALT模式下功耗为什么如此之低,因为在HALT模式下MCU是不支持串口唤醒的。后来通过试验,发现了其中奥秘:实现这个功能需要绕个弯弯。首先M0定义MCU HLAT时候只能通过外部中断或者RTC自动唤醒,所以一定是串口先设置成为了外部中断唤醒。核心思路是舍弃串口信息的前一段信息。串口唤醒HALT模式下的STM8L步骤如下:在进入HLAT之前,设置串口
发表于 2019-11-15
小广播
何立民专栏 单片机及嵌入式宝典

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

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