MSP430单片机的中断

这篇文章是从网上转载过来的,原文章地址:http://www.21ic.com/jichuzhishi/mcu/questions/2012-12-21/154794.html

中断是MSP430微处理器的一大特色,有效地利用中断可以简化程序和提高执行效率。MSP430的几乎每个外围模块都能够产生中断,为MSP430针对事件(即外围模块产生的中断)进行的编程打下基础。MSP430在没有事件发生时进入低功耗模式,事件发生时,通过中断唤醒CPU,事件处理完毕后,CPU再次进入低功耗状态。由于CPU的运算速度和退出低功耗的速度很快,所以在应用中,CPU大部分时间都处于低功耗状态。

MSP430的中断分为3种:系统复位、不可屏蔽中断、可屏蔽中断。

(1)系统复位的中断向量为0xFFFE。

(2)不可屏蔽中断的中断向量为0xFFFC。响应不可屏蔽中断时,硬件自动将OFIE、NMIE、ACCVIE复位。软件首先判断中断源并复位中断标志,接着执行用户代码。退出中断之前需要置位OFIE、NMIE、ACCVIE,以便能够再次响应中断。需要特别注意点:置位OFIE、NMIE、ACCVIE后,必须立即退出中断相应程序,否则会再次触发中断,导致中断嵌套,从而导致堆栈溢出,致使程序执行结果的无法预料。

(3)可屏蔽中断的中断来源于具有中断能力的外围模块,包括看门狗定时器工作在定时器模式时溢出产生的中断。每一个中断都可以被自己的中断控制位屏蔽,也可以由全局中断控制位屏蔽。

多个中断请求发生时,响应最高优先级中断。响应中断时,MSP430会将不可屏蔽中断控制位SR.GIE复位。因此,一旦响应了中断,即使有优先级更高的可屏蔽中断出现,也不会中断当前正在响应的中断,去响应另外的中断。但SR.GIE复位不影响不可屏蔽中断,所以仍可以接受不可屏蔽中断的中断请求。

中断响应的过程:(1)如果CPU处于活动状态,则完成当前指令;(2)若CPU处于低功耗状态,则退出低功耗状态;(3)将下一条指令的PC值压入堆栈;(4)将状态寄存器SR压入堆栈;(5)若有多个中断请求,响应最高优先级中断;(6)单中断源的中断请求标志位自动复位,多中断源的标志位不变,等待软件复位;(7)总中断允许位SR.GIE复位。SR状态寄存器中的CPUOFF、OSCOFF、SCG1、V、N、Z、C位复位;(8)相应的中断向量值装入PC寄存器,程序从此地址开始执行。

中断返回的过程:(1)从堆栈中恢复PC值,若响应中断前CPU处于低功耗模式,则可屏蔽中断仍然恢复低功耗模式;(2)从堆栈中恢复PC值,若响应中断前CPU不处于低功耗模式,则从此地址继续执行程序。

时间: 2024-08-11 07:37:14

MSP430单片机的中断的相关文章

MSP430教程14:MSP430单片机ADC12模块

MSP430模数转换模块--ADC12   MSP430单片机的ADC12模块是一个12位精度的A/D转换模块,他具有高速度,通用性等特点.大部分都内置了ADC模块.而有些不带ADC模块的片子,也可通过利用内置的模拟比较器来实现AD的转换.在系列产品中,我们可以通过以下列表来简单地认识他们的ADC功能实现. 系列型号       ADC功能实现      转换精度   MSP430X1XX2    比较器实现        10位   MSP430F13X      ADC模块         

msp430单片机AD转换

msp430单片机AD转换 2010-08-01 20:14:05|  分类: msp430单片机|举报|字号 订阅 一.简单介绍: ADC12模块中是由以下部分组成:输入的16路模拟开关(外部8路,内部4路),ADC内部电压参考源,ADC12内核,ADC时钟源部分,采集与保持/触发源部分,ADC数据输出部分,ADC控制寄存器等组成. 四种采样模式: (1)单通道单次转换模式 (2)序列通道单词转换模式 (3)单通道多次转换模式 (4)序列通道多次转换模式 个人觉得(3)模式应该是使用较多的,

MSP430单片机学习视频

MSP430系列单片机是美国德州仪器(TI)1996年开始推向市场的一种16位超低功耗.具有精简指令集(RISC)的混合信号处理器(Mixed Signal Processor). MSP430单片机称之为混合信号处理器,是由于其针对实际应用需求,将多个不同功能的模拟电路.数字电路模块和微处理器集成在一个芯片上,以提供"单片机"解决方案.该系列单片机多应用于需要电池供电的便携式仪器仪表中.       与51单片机相比较,430单片机的视频教程要少得多,主要有以下几种: 1.郭天祥&q

单片机扩展中断的4种方法

MCS—51系列单片机内部只有两个外部中断源输入端,当外部中断源多于两个时 ,就必须进行扩展,下面介绍两种简单的扩展方法: 一.采用硬件请求和软件查询的方法: 这种方法是:把各个中断源通过硬件“或非(高有效,如CD4002)”(与,低有效)门引入到单片机外部中断源输入 端(INT0或INT1),同时再把外部中断源送到单片机的某个输入输出端口,这 样当外部中断时,通过“或非”(与)门引起单片机中断,在中断服务程序中再通 过软件查询,进而转相应的中断服务程序.显然,这种方法的中断优先级取决于 软件查

对MSP430单片机__delay_cycles精确延时的说明及改正

在这里, 我来讨论一下关于MSP430单片机使用__delay_cycles延时的问题. IAR for MSP430编译器提供了一个编译器内联的精确延时函数(并非真正的函数)以提供用户精确延时使用, 该函数原型是: __intrinsic void __delay_cycles(unsigned long __cycles);该内部函数实现__cycles个CPU周期的延时,但对于该参数的设置,我要陈述一下: __cycles需要我们传递的是CPU运行的周期个数 网上普遍的用法是: #defi

任务一:认识MSP430单片机

一.学习目标: 1).单片机的结构 2).单片机的特点 3).单片机的选型 4).单片机的开发工具 二.基础知识 1.单片机 1).单片机简介: 将运算器.控制器.存储器.内部和外部总线系统.I/O接口电路集成在一片芯片上组成的电子器件. 运算器和控制器为CPU 将CPU芯片.存储芯片.IO接口.外设组装在一块印制电路板上,形成了单片机. Intel最初将运算器.控制器.存储器.内部和外部总线系统.I/O接口设计了单片机,典型的8051系列. 2).单片机的发展: 高集成度,集成了ROM/RAM

单片机的中断系统

中断概念 正常的工作过程被外部的事件打断了,EX 你正在家中看书,突然电话铃响了,你放下书本,去接电话,和来电话的人交谈,然后放下电话,回来继续看你的书. 中断源 引起中断的事件称之为中断源,51中一共有5五个:两个外部中断,两个计数/定时器中断,一个串行口中断. 中断优先级与嵌套 当两个中断同时产生时,就要考虑优先级. 当一个中断已发生,又一个中断产生了,又要考虑另一种嵌套优先级. 中断的响应过程 保护断点:保存下面将要执行的指令地址送人堆栈,以便中断处理完之后回到原来地方继续执行 寻找中断入

51单片机定时器中断函数中变量初始化的问题

前几天在进行单片机实验时,目的是用定时器0写一个流水灯的程序,代码如下,编译没有问题,但就是灯不亮,检查了好几次始终找不到问题,现在找到了,分享一下 #include<reg51.h>//调用头文件 #define uint unsigned int //宏定义 #define uchar unsigned char #define long_time 10 //定时时间,每次50ms uint n=0; //查表变量 uchar temp[]={0xfe,0xfd,0xfb,0xf7,0xe

51单片机的中断嵌套怎么实现呢?

今天在练习51单片机的嵌套中断时,发现了一个奇怪的点,就是中断服务函数在执行的时候,无论优先级的高低,都不能被打断.嗯,就是外部中断0和外部中断1都不能打断定时器0的中断服务函数.(优先级:外部中断0>定时器0>外部中断1). 我本来想开启定时器0,外部中断0和外部中断1,实现中断嵌套. 比如外部中断0到达时,执行中断服务函数Int0,因为它的优先级高,所以当外部中断1和定时器0到达时,不会打断外部中断0的中断服务函数.而当定时器0中断时,外部中断0到达可以打断其执行,外部中断1到达不可打断.