MSP430单片机的中断系统(2)

发布者:世界因你而精彩最新更新时间:2021-06-01 来源: eefocus关键字:MSP430  单片机  中断系统 手机看文章 扫描二维码
随时随地手机看文章

1 .可屏蔽中断


可屏蔽中断由具有中断能力的外围模块产生,包括处于定时器模式的看门狗定时器。每个可屏蔽中断都可以通过单独的中断允许位来使能。所有的可屏蔽中断都可以通过SR中的GIE位来使能。


如果GIE位置位,则打开可屏蔽中断模块,如果复位的话,就是把所有的可屏蔽中断都给屏蔽掉了,那么及时发生中断响应,也不会向CPU发送中断请求。


2 .可屏蔽中断响应时序



对于可屏蔽中断,当INTR引脚变为高电平,并IF=1且有足够的优先权,则在执行完当前指令后,CPU将发出下列中断响应周期时序。


我们来看这里,这里CPU通过引脚INTA 发中断响应信号,通知接口芯片开始准备中断类型号;


然后看这里,这里CPU再发INTA通知接口芯片将中断类型号送至数据总线上;


最后看这里,这里CPU从数据总线读取中断类型号,并完成前述的响应中断的过程。


3 .断点和中断现场


讲到中断,那就必然会涉及到一些名词,比如说:断点,中断现场。现在,咱们就来看看他们的定义。


首先是断点:是指CPU执行的现行程序被中断时的下一条指令的地址,又称断点地址。


然后是中断现场:是指CPU转去执行中断服务程序前的运行状态,包括CPU内部某些寄存器(如SR)的值和断点地址等。


4 .上电复位后的硬件初始化



中断延迟是6个周期,就是从CPU接收到外部发过来的中断请求之后,到它执行第一条指令大概是需要6个机器周期的。


中断逻辑的执行过程是这样的:


①完成当前正在执行的指令;


②把PC寄存器内容入栈;


③把SR寄存器内容入栈;


④如果同时有多个中断,则选择优先级最高的中断;


⑤如果中断是单源中断,则中断标志位自动复位;如果中断是多源中断,则需要中断服务程序复位;


⑥SR清零,结束低功耗模式。由于GIE被清除,其他的中断被屏蔽。因此,中断不能被嵌套;


⑦中断向量被装入PC寄存器,并从该地址开始执行中断服务程序。


在执行完了用户自己编写的中断服务程序以后,就通过一条RETI指令,就可以返回原来的主程序继续运行。


5 .中断返回过程



在从中断过程返回到主程序的过程大概需要花费5个周期。中断返回过程是这样子的:


首先就是状态寄存器从堆栈指针中弹出,这个在弹出的过程中,实际上它弹出的就是在运行主程序时状态寄存器的值。以前的GIE和CPUOFF都被恢复到以前的位置,比如说在进入中断之前,这个系统是处在低功耗0模式的话,从中断恢复以后还是处于低功耗0模式;GIE位在进入中断之前是被置位的,那么恢复中断以后还是被置位的。


然后程序指针也从堆栈中被取出来,被取出来之后CPU继续按照指针指向的代码执行下去。


6 .SFR中的中断控制位



大多数中断控制位、中断标志和中断允许位集中在少数SFR中。这些SFR以字节形式位于低地址区。SFR只能以字节指令访问。


MSP430各型号支持各个模块内的SFR。除了NMI,各模块中断源可以单独允许以实现中断功能及操作。配置位的完全软件控制使得应用软件在中断允许屏蔽时重新激活系统。


7 .中断向量表



在发生中断时,单片机实际上就是把中断向量的地址装入到程序指针PC中,然后程序指针从这个地址开始程序代码,这段程序代码就是用户自己编写的中断服务程序代码。


8 .中断控制机制



我们首先看到的是非屏蔽中断的控制机制,首先是中断请求,然后就是中断总控位,再经过优先权裁决,最后进行中断响应。、


其次就是可屏蔽中断的控制机制,首先同样是中断请求,然后是中断总控位,接着就不一样了,是GIE控制位,经过优先权裁决就是中断响应了。


这就是中断控制机制的过程。


9 .外部中断


端口P0、P1和P2的全部为8位都可实现外部事件的中断处理。每一个I/O位都可独立编程。


由于可能组合任意输入、输出和中断条件,因此能灵活适应不同的I/O结构。


注意:外部中断信号的最小脉冲宽度


所有外部中断信号必须具有至少1.5MCLK的脉冲宽度以保证稳定的中断响应,但是更窄的脉冲信号仍可能产生中断请求。


9.1 端口P0



P0模块安排了3个向量。P0.0的信号,P0.1的信号和其余端口P0.2-P0.7的信号是这三个向量的源。通过中断事件可将向量地址装入PC。


P0有六个I/O引脚的寄存器,分别是:


输入寄存器、输出寄存器、方向寄存器、中断标志、中断沿选择、中断允许。


9.2端口P1、P2



P1和P2完全相同。对P1和P2模块分配一个单独向量。引脚P1.0-P1.7和P2.0-P2.7可用作中断源。向量包含因中断事件引发装入PC的存储器地址。


P1和P2分别有7个寄存器用于控制I/O引脚,分别是:


输入寄存器、输出寄存器、方向寄存器、中断标志、中断沿选择、中断允许、功能选择寄存器。


10.程序中如何使用中断


10.1中断程序结构


 


10.2 中断程序



首先是关中断,然后设置相关的中断控制位等,接着就是中断子程序有关量的初始化,然后是开中断,好了,从这里进入了中断程序,进入中断后首先就是保护现场,以便以后恢复现场用,然后是完成中断源请求的任务,在清零中断标志,最后恢复现场就返回主程序,并进行其他工作的处理。


我们在写完主程序后,我们需要写我们的中断服务程序,我们拿来了一个定时中断的例子。


我们首先要做的就是让Timer_A初始化。这是将定时器初始化,这样我们后面才能进行定时中断。


再来是中断服务程序。首先,第一句是中断服务函数的起始句,是我们必须要写的,而TIMERA0_VECTOR则只是针对TimerA0的中断,它是对应于TimerA0的中断向量。如果是其他外设所引发的中断,这句话写法会不同。


例如#pragma vector=UART0RX_VECTOR是写针对串口的中断。


当我们写完中断服务函数的起始句之后,我们就需要写出我们自己要求中断执行的任务了,这个部分是我们自己写的内容,而其他部分,可以说是一个框架。

关键字:MSP430  单片机  中断系统 引用地址:MSP430单片机的中断系统(2)

上一篇:畅学多功能实验箱MSP430F5438 RTC 简单介绍
下一篇:MSP430工作模式

推荐阅读最新更新时间:2024-11-10 14:53

AVR单片机的DS1302操作程序
file://---by 变成浪子 //mega16 7.3728MHz石英晶体 iCCavr6.31a //相关定义: #define uint unsigned int #define uchar unsigned char #define DS1302_RST 0 //pc0 #define DS1302_SDA 1 //pc1 #define DS1302_SCLK 6 //pc6 //ds1302相关 //DS1302_RST=1 #define Set_DS1302_RST() PORTC|=1 #define Clr_DS1302_RST() PORTC&=~(1 #d
[嵌入式]
基于SC95F8616单片机的中文菜单MP3点歌器 (2)
3. 按键识别 由于按键识别相应扫描的低电平,故将 P07 设置为输出低电平。 1 )按图 16 所示完成程序流程修改,并进行相应的配置修改。 图 16 程序流程 图 17 修改配置 2 )点击 “ 生成工程源代码 ” , 以生成工程代码,则其主程序如图 18 所示。 图 18 生成的主程序 3 )编译并下载程序后,依次按下 K1~K4 键,则输出结果如图 19 所示。 图 19 按键值输出 4.MP3 音频模块控制 MP3 音频模块是一款通过串行通讯进行控制的功能模块,它与按键相配合即可实现选择和控制的目的。 控制 MP3 的主要指令有:播放指令、停
[单片机]
基于SC95F8616<font color='red'>单片机</font>的中文菜单MP3点歌器 (2)
8051单片机指令符号约定及指令格式
  一个计算机的指令系统就是它能执行的全部指令的集合。8051的指令系统共有111条指令,由42种助记符和7种寻址方式组合而成。   8051的指令通常包括操作码,和操作数两部分。操作码规定指令进行什么操作,采用助记表示;操作数表示指令的操作对象。   汇编语言指令的基本形式是:操作码助记符 目的操作数,源操作数。   操作码助记符与操作数分开书写,操作数中目的操作数在前,源操作数在后,操作数之间用逗号分隔。   如指令MOV B,#23H中符号MOV就是操作码助记符,这个助记符的意义为将源操作数传入目的操作数地址中,累加器A是目的操作数,寄存器B是源操作数。   8051的机器语言指令根据长度有一字节、二字节、三字节三种。一
[单片机]
STC51系列单片机不断电自动下载程序
以前在进行单片机编程时比较烦恼的时每次下载程序都需要断电,点击下载,再上电才能将程序下载到单片机,如果偶尔一两次这样操作可以忍受,但是往往我们都是需要调试代码,多次进行下载操作,不断的断电上电无疑对单片机来说是一个很大的损伤。 根据stc12c5a60s2(一片增强型的51单片机,兼容stc89c52单片机)的数据手册,可以通过单片机系统软复位,使单片机运行系统启动代码(这部分代码不同于我们的用户代码),我们断电再上电也是这个原理。通过往IAP_CONTR(C7H)写60H实现系统的软复位,然后进行自动下载。单片机复位后有两种启动形式,一种是从用户程序区启动,我们平时按复位键就是这种启动形式,另一种是从ISP程序区启动,断电启动
[单片机]
STC51系列<font color='red'>单片机</font>不断电自动下载程序
AVR单片机读写CPLD程序实例(ATmega128程序案例)
项目中需要使用CPLD完成一部分算法设计,参数由AVR给出,因此需要完成AVR和CPLD的通信。因此写了一个测试程序。CPLD挂在AVR的数据和地址总线上,AVR使用ATmega128,在CPLD中设置几个寄存器,通过AVR读写寄存器来实现两者之间的通信。 Mega128的外部存储空间从0X1100开始,因此只需要配置相应的寄存器后读取或者写入相应的地址就可以,程序比较简单,注释中都有说明,仅供参考。 /******************************************************************* 名称:mian.c 功能:测试AVR与CPLD的通信,将数据写入CPLD中配置的寄
[单片机]
如何在KEIL中添加STC单片机
首先,看一下STC公司的解答: 1.把STC单片机,当成Intel的8052/87C52/87C54/87C58, Philips的P87C52/P87C54/P87C58就可以了 2.也可安装STC仿真器的驱动程序,这样就看到型号了 然后,我来详细的说明一下: STC单片机完全还可以当成AT89C系列,AT89S系列,因为都是51的内核。如果要想看到STC单片机,就安装STC仿真器的驱动程序,这样就有STC所有的系列了 STC仿真器的驱动程序,原意是供STC仿真器使用的,但是STC仿真器比较昂贵,再加上STC单片机本身可以ISP下载调试程序,没有必要再用仿真器了。 由于STC的仿真器的驱动程序太大,我将下载地址
[单片机]
用Proteus学习51单片机之AD转换
现实中的很多量,都是模拟量,如温度,压力等,单片机要去了解它们,首先就要把这些量进行数字化,AD转换即把模拟量转变为数字量。这次书上介绍的AD芯片为ADC0804,8位并行AD转换芯片。关于AD转换的详细原理,我就不抄了,网上有的是。 ADC0804的使用,比前面用过的锁存器74LS573难用得多,主要是读写数据都要根据时序图,进行电位的变化,而且芯片的接法也相对麻烦一点。下面记录一下引脚定义: VIN(+),VIN(-):待测量的模拟信号输入 DB0~DB7:测量结果输出 AGND:模拟信号地 DGND:数字信号地 CLK:时钟信号输入端 CLKR:内部时钟发生器的外接电阻端,与CLK端配合可由芯片自身产生时钟脉冲,其频率为1/
[单片机]
用Proteus学习51<font color='red'>单片机</font>之AD转换
什么是GD32 MCU读保护?
如今电子产品市场风云变幻,暗流汹涌,有没有小伙伴遇到自己费了大力气写出来的代码,很容易就被别人“借鉴”了,真的是让闻者伤心,听着落泪啊。 那有没有什么方法可以防止别人将你的代码从MCU读出来呢?答案当然是肯定的,GD32 MCU全系列都有“读保护”功能,我们以GD32F30x系列为例,来看下用户手册中的选项字节的介绍: 我们可以看到,地址0x1fff f800存储的是安全保护值,也就是我们所说的读保护。当该值为0xA5的时候,MCU处于无保护状态,此时可以通过Jlink、GDlink配合一些上位机比如Jflash、GDlink Programmer就可以读出,当然,通过串口ISP也可以读出代码;当读保护值为非0xA5时,
[单片机]
什么是GD32 <font color='red'>MCU</font>读保护?
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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