置位.ppt

上传人:ga****84 文档编号:348486 上传时间:2018-09-25 格式:PPT 页数:102 大小:1.61MB
下载 相关 举报
置位.ppt_第1页
第1页 / 共102页
置位.ppt_第2页
第2页 / 共102页
置位.ppt_第3页
第3页 / 共102页
置位.ppt_第4页
第4页 / 共102页
置位.ppt_第5页
第5页 / 共102页
点击查看更多>>
资源描述

1、1,第3章 MSP430单片机硬件结构及原理,2,本章内容,3.1 MSP430x14x结构概述 3.2 MSP430x14x的主要特性和外部引脚3.3 MSP430单片机的中央处理器3.4 MSP430单片机的存储器结构3.5 MSP430时钟模块与低功耗结构3.6系统复位和初始化3.7 中断系统,3,3.1 MSP430x14x结构概述,4,硬件结构具有以下特点:,超低功耗结构,能够延长电池生存周期。RAM保持方式下电流为0.1A,等待方式时电流为0.8A,活动状态时电流也仅为250A/MIPS。高性能的模拟器件可以用于精确测量。集成12位200Kbps的A/D转换器,自带采样保持。16位

2、RISC中央处理器,125ns指令周期。可以用较少的代码空间实现高性能的应用。在系统可编程的FLASH,为开发编程提供便利。,5,MSP430x14x主要包括以下功能部件:,CPU存储器:外围模块:主要包括:时钟模块、看门狗、定时器A、定时器B、比较器A、串口0、串口1、硬件乘法器、12位模数转换和端口等。,6,MSP430X11X系列,7,MSP430X12X系列,8,MSP430X13X系列,9,MSP430X14X系列,10,MSP430F15X/F16(1)X 系列,11,MSP430F15X/F16(1)X 系列,12,MSP430X41X系列,13,MSP430F43X系列,14,

3、MSP430F44X系列,15,3.3 MSP430单片机的中央处理器,16,17,MSP430CPU的主要特征,RISC指令集,27条内核指令和7种寻址模式寄存器资源丰富寄存器操作为单周期16位地址总线常数发生器直接的存储器到存储器访问位、字和字节操作方式,18,MSP430 CPU的寄存器,19,(1)程序计数器PC/R0,程序计数器是MSP430 CPU中最核心的寄存器,指示出下一条即将执行的指令的地址。程序计数器PC的内容总是偶数,指向偶字节地址.程序计数器PC可以像其他寄存器一样用所有指令和所有寻址方式访问,但对程序存储器的访问必须以字为单位,否则会清除高位字节。程序计数器PC的变化

4、的轨迹决定程序的流程.程序计数器PC的宽度决定了存储器可以直接寻址的范围。MSP430的程序计数器是16位的计数器,最多直接寻址的存储空间高达64KB。,20,举例: MOV #LABLE,PC ;跳转到地址LABLE开始执行MOV LABLE,PC ;程序开始执行的地址为LABLE所在内存中的数 MOV R14,PC ;程序开始执行的地址为寄存器R14中的数,21,(2)堆栈指针SP,系统堆栈在系统调用子程序或进入中断服务程序时,能够保护程序计数器PC.然后将子程序的入口地址或者中断矢量地址送程序计数器,执行子程序或中断服务程序。子程序或者中断服务程序执行完毕,遇到返回指令时,将堆栈的内容送

5、到程序计数器中,程序流程又返回到原来的地方,继续执行.此外,堆栈可以在函数调用期间保存寄存器变量、局域变量和参数等。,22,堆栈指针SP总是指向堆栈的顶部。系统在将数据压入堆栈时,总是先将堆栈指针SP的值减2,然后再将数据送到SP所指的RAM单元。将数据从堆栈中弹出正好与压入过程相反;先将数据从SP所指示的内存单元取出,再将SP值加2。,23,举例:MOV 2(SP), R6 ;将内存单元I2中的数放到R6中MOV R7, 0(SP) ;将R7中的数放到栈顶所在单元(I3)中PUSH #0123h ;将SP的值减2,再将#0123h放到SP所指向的单元中。POP R8 ;将SP所指向单元中的数

6、(#0123h)放到R8中,再将SP的值加2,24,(3) 状态寄存器SR,C-Carry bit ;Z-Zero bit;N-Negative bit;GIE-General Interrupt Enable,25,OscOff-Oscillator Off;SCG0-System Clock Generator;V-Overflow bit,26,(4) 常数发生器CG1和CG2,27,举例:单操作数指令CLR dst ;将dst单元清零这不是内核指令,而是一条模拟指令,汇编器将As=00,R3=0,用MOV R3,dst 来模拟。,28,(5)通用工作寄存器R4R15,举例:MOV #1

7、234H,R15 ;执行后R15内容为1234HMOV.B #23H,R15 ;执行后R15内容为0023HADD.B #34H,R15 ;执行后R15内容为0057H,29,3.4 MSP430单片机的存储器结构,MSP430系列的存储空间采用“冯-诺依曼”结构,物理上完全分离的存储区域如ROM/FLASH、RAM、外围模块、特殊功能寄存器SFR等,被安排在同一地址空间,这样就可以使用一组地址、数据总线、相同的指令对它们进行字节或字形式访问。MSP430系列单片机存储器的这种组织方式和CPU采用精简指令相互协调,对外围模块的访问不需要单独的指令,为软件的开发和调试提供便利。,30,3.4.1

8、 MSP430存储空间结构,MSP430不同系列器件的存储空间分布有很多相同之处:,中断向量被安排在相同的空间:0FFE00FFFFH;8位、16位外围模块占用相同范围的存储器地址;所有器件的特殊功能寄存器占用相同范围的存储器地址:00H0FH;数据存储器开始于相同的地址,即从0200H处开始;代码存储器的最高地址都是0FFFFH。,31,存储空间的分布也存在一些差异:,不同型号器件的代码存储器容量不一样;代码存储器的起始地址不一样,每一种器件的代码存储器的起始地址为 起始地址 = 10000H 该器件的代码容量仅FLASH型有信息存储器,而且不同的器件地址也不一样,但容量都是256B仅FLA

9、SH型有引导存储器,而且不同器件的地址也不一样,但容量都是1KB各器件数据存储器的末地址也不一样,其末地址为 末地址 = 该器件数据RAM容量 + 0200H中断向量的具体内容因器件不同而不同;所有器件的8位、16位外围模块地址范围内的具体内容因器件不同而不同。,32,3.4.1 数据存储器RAM,MSP430的数据存储器位于存储器地址空间的0200H以上,这些存储器一般用做数据的保存与堆栈,同时也是数据运算的场所,特殊场合还可以用作程序存储器。可以字操作也可以字节操作,通过指令后缀加以区别。字节操作可以是奇地址或者是偶地址,在字操作时,每两个字节为一个操作单位,必须对准偶地址。,33,举例,

10、MOV.B #20H, 执行后地址220H的内容为55H,34,3.4.2 程序存储器ROM,程序ROM区为0FFFFH以下一定数量存储空间,可存放指令代码和数据表格。程序代码必须偶地址寻址。程序代码可分为三种情况:中断向量区、用户程序代码及系统引导程序(个别器件有,如FLASH型)。,35,1 中断向量区,36,2 用户程序区,用户程序区一般用来存放程序与常数或表格。MSP430的存储结构尤其允许存放大的数表,并且可以用所有的字和字节指令访问这些表。这一点为提高编程的灵活性和节省程序存储空间带来各种好处。,37,3.4.3 外围模块寄存器,MSP430系列单片机外围模块的寻址被安排在0010

11、H01FFH这一区域,都可以用软件访问和控制。MSP430可以象访问普通RAM单元一样对这些寄存器进行操作。这些寄存器也分为字节结构和字结构。地址空间0100H01FFH安排字结构,地址空间0010H00FFH安排字节模块,地址空间0000H000FH保存特殊功能寄存器。,38,MSP430F149 字模块的空间分配,39,MSP430F149 字节模块的空间分配,40,MSP430F149 特殊功能寄存器SFR的空间分配,41,3.5 MSP430时钟模块与低功耗结构,时钟模块对于单片机来说是至关重要的,它不仅给CPU提供正确的时序,还给单片机的外围模块提供工作时序。因此,一个高效稳定的时钟

12、模块是单片机系统能够正常工作的基础。在数字系统中,系统功耗与频率成正比,实际应用中常希望系统能够快速响应事件的同时又要尽量的降低系统能耗,这对于单片机来说是一个互相矛盾的要求。MSP430的系统时钟很好的满足了这个要求,它通过提供几种不同的时钟信号,并为时钟设计多种不同的工作模式,使用户可以根据需要,灵活的为CPU和外设选择合适的时钟频率。,42,3.5.1 MSP430系列时钟模块,43,它有3个时钟源输入端,LFXT1CLK 低频时钟源,接低频时钟晶体、也可接高频时钟晶体、陶瓷谐振器或直接外接时钟信号源。XT2CLK 高频时钟源,接标准高频晶体、也可接陶瓷谐振器或直接外接450kHz8MH

13、z时钟信号源。DCOCLK 片内可以数字控制的RC振荡器。,44,基础时钟模块可提供3种时钟信号:,ACLK 辅助时钟,是LFXT1CLK信号经1,2,4,8分频后得到的。分频系数可由软件控制。ACLK可由软件选作各个外围模块的时钟信号,一般用于低速外设。MCLK 系统主时钟,由软件选择来自LFXT1CLK、XT2CLK,DCOCLK三者之一,然后经1,2,4,8分频得到,分频系数可由软件控制。主要用于CPU和系统。SMCLK 子系统时钟,由软件选择来自LFXT1CLK、XT2CLK,DCOCLK三者之一,然后经1,2,4,8分频得到,分频系数可由软件控制。主要用于高速外围模块。,45,当发生

14、有效的PUC后,MCLK和SMCLK使用工作在800KHz附近DCOCLK作为时钟源,ACLK使用工作在低速模式的LFXT1CLK作为时钟源。状态寄存器(SR)控制位SCG0、SCG1、OSCOFF和CPUOFF用来配置基础时钟模块的使能。DCOCTL、BCSCTL1和BCSCTL2用来配置基础时钟模块。在程序运行的任何时间,都可以通过这些寄存器来配置基础时钟模块。(PUC-Power Up Clear重启)(POR-Power On Reset上电复位,更彻底复位),46,3.5.2 低速晶体振荡器,MSP430系列的每种产品中都有低速晶体振荡器(LTXT1),通常外接32768Hz的时钟晶

15、体,可以选择使用广泛使用的手表晶振,同时将所需两个小电容也集成在内部。这样可降低系统成本。LFXT1振荡器在发生有效的PUC后开始工作,一次有效的PUC信号将SR寄存器的OscOff位复位,即允许LFXT1工作。如果LFXT1CLK信号没有用作SMCLK或ACLK信号,则可以用软件将OscOff位置以禁止LFXT1工作:MOV #OscOff,SR,47,LFXT1 的控制逻辑如下图所示:,48,注意:,低速时钟通常需要几百ms的时间来启动。尽量避免外界信号对晶体的干扰,布线时晶体要尽量靠近单片机。当工作在低速模式时,如果VCC小于2.5V,为保证正常工作,需要在VSS和XOUT之间加入5.1

16、M欧姆电阻LFXT1振荡器也可以外接频率较高的高速晶体振荡器或陶瓷振荡器,以工作在高速模式;这时XTS位置位,同时两个引脚还要外接电容,电容大小根据晶体或振荡器的特性来选择。,49,3.5.3 高速晶体振荡器,高速振荡器(XT2)主要存在于F13X,F14X,F4XX等器件,一般称之为第二振荡器XT2,它产生时钟信号XT2CLK,它的工作特性与LFXT1振荡器工作在高频模式时类似。下页图是TX2振荡器的控制逻辑。如果XT2CLK信号没用做MCLK、SMCLK时钟信号,则可以用XT2Off控制位关闭XT2。如果CPUOff=0,SELM=2,则XT2CLK用做MCLK时钟;如果SCG1=0且SE

17、LS=1,XT2CLK用做SMCLK时钟。,50,51,3.5.4 DCO振荡器,MSP430系列的两个外部振荡器产生的时钟信号都可以经1,2,4,8分频后用作系统主时钟MCLK。上电复位或振荡器失效时,DCO振荡器会自动被选做MCLK的时钟源,频率在800K左右。DCO振荡器实质上是一个可数字控制的RC振荡器。因为RC振荡器的频率会随着温度和工作电压的变化而变化,所以同一型号芯片产生的频率有所不同。但同时DCO频率可通过DCO、MOD、Rsel等控制位用软件调节,这又增加了振荡器频率的稳定性。当DCO信号没有用作SMCLK和MCLK时钟信号时,可以用软件关闭直流发生器,直流发生器消耗的电流定

18、义了DCOCLK的基本频率。,52,DCO的控制逻辑如图所示。,53,MSP430x1xx的DCO控制原理图,54,最终的DCO输出频率DCOCLK由以下功能建立:, DCO基础频率由内部或外部电阻向DC发生器注入的电流决定,由DCOR控制位选择片内或片外电阻。 基础频率由控制位Rsel2,Rsel1和Rsel0分频为8个标称频率范围,而这些频率范围因不同型号而异。 控制位DCO0,DCO1和DCO2可分段调节DCOCLK频率。 由5个调整位MOD0MOD4控制切换DCO和DCO+1选择的两种频率。,55,由DCO控制位选择的DCOCLK频率大约可以在时钟周期的10%范围内调整。在MSP430

19、x1xx系列中DCO的控制由3个寄存器完成:DCOCTL、BCSCTL1、BCSCTL2。(Basic Clock System Control Register ),56,(1) DCOCTL,地址为056H,PUC后的值为060HMOD.0 MOD.4 定义了在32个DCO周期中插入的f(DCO+1)周期,而在余下的DCO周期中为f(DCO)周期。如果DCO常数为7,由于已经选择了最高频率将不进行调整。DCO.0 DCO.2 定义了8种频率之一,而频率由注入直流发生器的电流定义。,57,(2)BCSTCL1,地址为057H,PUC后的值为084H,58,Rsel.0 Rsel.2 三位选择

20、某个内部电阻以决定标称频率。 Rsel=0,选择最低的标称频率; Rsel=7,选择最高的标称频率。XT5V 此位必须为0。DIVA.0 DIVA.1 选择ACLK的分频系数。 DIVA=0,ACLK的分频系数为1; DIVA=1,ACLK的分频系数为2; DIVA=2,ACLK的分频系数为4; DIVA=3,ACLK的分频系数为8。XTS 选择LFXT1工作在低频晶振模式还是高频晶振模式,选择须同实际晶体。 XTS=0,LFXT1工作在低频模式; XTS=1,LFXT1工作在高频模式。XT2OFF 控制XT2振荡器的开启与关闭。 XT2OFF=0,XT2振荡器开启; XT2OFF=1,XT2

21、振荡器关闭。,59,60,(3)BCSTCL2,地址为058H,PUC后值为00HDCOR 选择内部还是外部电阻。DCOR=0,选择内部电阻;DCOR=1,选择外部电阻。DIVS.0 DIVS.1 选择SMCLK的分频因子。DIVS=0,分频因子为1;DIVS=1,分频因子为2;DIVS=2,分频因子为4;DIVS=3,分频因子为8。,61,SELS 选择SMCLK的时钟源。SELS=0,SMCLK的时钟源为DCOCLK;SELS=1,SMCLK的时钟源为LFXT1CLK(对于MSP430F11XX), SMCLK的时钟源为XT2CLK(对于MSP430F13X/14X)。DIVM.0 DIV

22、M.1 选择MCLK的分频因子。DIVM=0,分频因子为1;DIVM=1,分频因子为2;DIVM=2,分频因子为4;DIVM=3,分频因子为8。SELM.0 SELM.1 选择MCLK的时钟源。SELM=0,MCLK的时钟源为DCOCLK;SELM=1,MCLK的时钟源为DCOCLK;SELM=2,MCLK的时钟源为LFXT1CLK(对于MSP430F11XX), MCLK的时钟源为XT2CLK(对MSP430F13X/14X);SELM=3,MCLK的时钟源为LFXT1CLK。,62,PUC信号之后,DCOCLK被自动选做MCLK时钟信号,根据需要,MCLK的时钟源可以另外设置为LFXT1或

23、者XT2.设置顺序如下:1.复位OscOff;2.清除OFIFG;3.延时等待至少50us;4.再次检查OFIFG,如果仍然置位,则重复3,4步骤,直到OFIFG=0为止。,63,举例:,;Select LFXT1 (HF mode) for MCLK BIC #OscOff,SR BIS.B #XTS,BCSSTL1L1 BIC.B #OFIFG,&IFG1 MOV #0FFH,R15L2 DEC R15 JNZ L2 BIT.B #OFIFG,&IFG JNZ L1 BIS.B #SELM1+SELM0,&BCSCTL2,64,MSP430x14x与时钟模块有关的几个引脚,65,3.5.5

24、 振荡器失效检测,MSP430单片机由模拟电路监视LFXT1CLK(工作于高频模式)和XT2CLK。当其失效大约50s时被认定为振荡器失效。当振荡器失效信号被检测到,如果MCLK源为高速模式下的LFXT1或XT2,则MCLK源自动切换到DCO。由于DCO被选为MCLK,所以代码会继续执行。振荡器失效会设置振荡器失效标志位OFIFG,如果此时振荡器失效中断允许位(OFIE)置位,则产生非屏蔽中断请求。OFIFG必须由用户软件清除。,66,67,XT2振荡器的失效信号和LFXT1振荡器的失效信号都能引起OFIFG中断标志。对于只有2个振荡器的芯片(MSP430x11x、MSP430x11x1),振

25、荡器失效标志OFIFG可以在LFXT1的失效信号为“0”时用软件复位。对于有3个振荡器的芯片(MSP430x13x、MSP430x14x),振荡器失效标志OFIFG必须在LFXT1和XT2的失效信号都为“0”时才能被软件复位。当系统上电、,LFXT1在高速模式时失效或XT2失效时,振荡器失效信号XT_OscFault有效,OFIFG被置位。当XT2或高速模式的LFXT1被软件停止,XT_OscFault立即有效,并一直保持到振荡器重起之后约50s。,68,如果MCLK信号来自高速模式的LFXT1或XT2,则当XT振荡器失效时DCO振荡器会自动被选作MCLK的源。由于DCO振荡器被选作MCLK,

26、XT振荡器失效而引起的NMI中断请求也可以得到响应。这个NMI中断的请求甚至在CPU被关闭的情况下也能被处理。,69,70,灯闪烁#include void main(void) WDTCTL = WDTPW + WDTHOLD; / Stop watchdog timer P3DIR |= BIT2; / Set P3.2 to output direction for (;) volatile unsigned int i; P3OUT = BIT2; / Toggle P3.2 using exclusive-OR i = 50000; / Delay do (i-); while (i

27、 != 0); ,3.5.6 基础时钟模块应用举例,例1 设MCLK=XT2,SMCLK=DCOCLK,将MCLK由5.4输出程序如下:#include void main(void) unsigned int i; WDTCTL = WDTPW + WDTHOLD; /停止看门狗 P5DIR |= 0X10; /设置P5.4为输出 P5SEL |= 0X10; /设置P5.4为MCLK输出 BCSCTL1 ,72,例2 设置ACLK=MCLK=LFXT1=LF,将MCLK通过P5.4输出。#include void main(void) unsigned int i; WDTCTL = WD

28、TPW + WDTHOLD; /停止看门狗 / P5DIR |= 0X10; /设置P5.4为输出 P5SEL |= 0X10; /设置P5.4为MCLK输出 BCSCTL1 ,73,3.5.7 低功耗结构,74,MSP430系列单片机是通过CPU中状态寄存器SR中的SCG1、SCG2、OscOff和CPUOff四个位来实现工作模式控制的。各控制位作用如下:,75,SCG1:当SCG1复位时,使能SMCLK;SCG1置位则禁止SMCLK。SCG0:当SCG0复位时,直流发生器被激活,只有在SCG0置位且DCOCLK信号没有用于MCLK或SMCLK,直流发生器才能被禁止。OscOff:当OscO

29、ff复位时,LFXT晶体振荡器激活,只有当OscOff被置位且不用于MCLK或SMCLK时,LFXT晶体振荡器才能被禁止,当使用振荡器关闭选项OscOff时,需要考虑晶体振荡器的启动设置时间。CPUOff:当CPUOff复位,用于CPU的时钟信号MCLK被激活,当CPU置位时,MCLK停止。,76,只要任意中断被响应,上述控制位就被压入堆栈保存,中断处理之后,又可以恢复以前的工作方式。在中断处理子程序执行期间,通过间接访问堆栈数据,可以操作这些位,这样在中断返回后,MSP430单片机会以另外一种功耗方式继续运行。,77,78,下表是各种低功耗工作模式的控制位一览表。,MSP430系列单片机各个

30、模块运行是完全独立的,定时器、输入输出端口、A/D转换、看门狗、液晶显示器等都可以在主CPU休眠的状态下独立运行。当需要主CPU工作时,任何一个模块都可以通过中断唤醒CPU,从而使系统已最低功耗运行。,为了充分利用CPU低功耗性能,可以让CPU工作于突发状态。在通常情况下,根据需要使用软件将CPU设定到某一低功耗工作模式下,在需要时使用中断将CPU从休眠状态中唤醒,完成工作之后又可以进入相应的休眠状态。,#include void main(void) BCSCTL1 |= DIVA_2; / ACLK/4 WDTCTL = WDT_ADLY_1000; / WDT 1s/4 interval

31、 timer IE1 |= WDTIE; / Enable WDT interrupt P3DIR |= BIT1; / Set P3.1 to output direction P3OUT / Clear P3.1 LED off #pragma vector=WDT_VECTOR_interrupt void watchdog_timer (void) _BIC_SR_IRQ(LPM3_bits) / Clear LPM3 bits from 0(SR),当电流消耗是系统应用的重要指标时,应考虑以下的一些基本的设计原则:最大化LPM3的时间,用32KHz晶振作为ACLK时钟,DCO用于CP

32、U激活后的突发短暂运行。用接口模块代替软件驱动功能。用中断控制程序运行。用可计算的分支代替标志位测试产生的分支。用快速查表代替软件的软件计算。在冗长的软件计算中使用单周期的CPU寄存器。避免频繁的子程序和函数调用。尽可能直接用电池供电 不论对于内核还是对于外围模块,选择尽可能低的运行频率,如果不影响功能应设计自动关机。,3.6系统复位和初始化,85,POR来自于硬件复位,只有以下两种情况才能产生POR信号(1)芯片上电;(2)RST/NMI设置成复位模式,在RST/NMI引脚上出现低电平信号。POR信号的产生总会产生PUC信号,但PUC信号的发生不一定会产生POR信号。PUC信号是上电清除信号

33、,产生它的事件为:(1) 发生POR信号;(2) 处于看门狗模式下,看门狗定时时间到;(3) 看门狗定时器写入错误的安全键值;(4) FLASH存储器写入错误的安全键值。,86,3.6.1系统上电复位,当Vcc上电比较慢的时候,POR检测器保持POR信号为高电平直到Vcc已经上升到大于启动门限 ,如图所示。当Vcc快速上升时,POR信号产生一个延迟 再产生POR信号以便让MSP430正确初始化。,87,3.6.2 系统复位后器件的初始状态,(1) 引脚被配置成复位模式;(2) I/O引脚被切换成输入模式;(3) 其他的模块和寄存器被初始化成默认状态,如数据手册所述;(4) 状态寄存器复位;(5

34、) 看门狗定时器以看门狗模式激活;(6) PC装入0FFFEH处的地址值,CPU从这一地址开始执行。,88,软件初始化,用户软件必须根据应用的需求对MSP430进行初始化,必须包括以下几个部分:(1) 初始化SP,通常是RAM的顶部;(2) 初始化看门狗定时器;(3) 配置外围模块。,89,3.7 中断系统,有三种中断:(1) 系统复位(2) NMI中断(3) 可屏蔽中断,90,91,中断优先级顺序排列图(参考P51表),3.7.1不可屏蔽中断NMI,NMI中断的使能位不是由通用中断使能GIE来控制,而是由特殊的标志位来控制(NMIIE, ACCVIE, OFIE),当一个NMI中断发生,所有

35、的NMI中断使能都自动复位。程序从储存在NMI中断向量(0FFFCH)开始执行,用户软件必须在NMI中断中对允许的NMI中断重新使能。NMI中断可以由以下三种中断源产生:(1) 当 引脚配置为NMI模式时,引脚上出现上升沿或下降沿。(2) FLASH访问错误。(3) 发生晶振失效,92,上电后, 引脚被配置为复位模式。 引脚功能选择位在看门狗定时器的控制寄存器WDTCTL中。如果 引脚被设置为复位功能,当 引脚为低电平时CPU被停止。 当输入变成高电平后,CPU从0FFFEH开始执行程序。如果 引脚被设置为NMI功能,并且NMIE被置位, 引脚上的上升沿/下降沿将触发中断, 标志位NMIIFG

36、也被置位。,93,注意:, 当配置为NMI模式时,触发NMI事件的信号不能保持 引脚为低电平。如果NMI信号为低电平,PUC会改变 引脚为复位功能,其间会被保持在复位状态。 当选择NMI模式并且WDTNMIES位被改变,一个NMI事件会根据 引脚上的电平被触发,当NMI边沿选择位在NMI模式选择之前被选择,NMI事件不会被触发。,94,NMI中断处理的流程如下:,95,#include void main(void) WDTCTL = WDTPW + WDTHOLD + WDTNMI + WDTNMIES; / WDT off NMI hi/lo P3DIR |= BIT2; / Set P3

37、.2 to output direction P3OUT / Enable NMI,3.7.2 可屏蔽中断,可屏蔽中断由具有中断能力的外围模块产生,包括处于定时器模式的看门狗定时器。每个可屏蔽中断都可以通过单独的中断允许位来使能。所有的可屏蔽中断可以通过SR中的GIE位来使能。,97,3.7.3 中断处理,中断程序的执行顺序如下: 完成当前正在执行的指令; 把PC寄存器内容入栈; 把SR寄存器内容入栈; 如果同时有多个中断,则选择优先级最高的中断; 如果中断是单源中断则中断标志位自动复位,如果中断是多源中断则需要中断服务程序复位; SR清零,结束低功耗模式,由于GIE被清除,其他的中断被屏蔽。因此中断不能被嵌套; 中断向量被装入PC寄存器,并从该地址开始执行中断服务程序。,98,99,中断由RETI指令结束,从中断返回需要消耗5个时钟周期,并执行下面的动作: 将SR寄存器的值从堆栈弹出,恢复中断前的设置; 将PC寄存器的值从堆栈弹出,程序从PC的地址执行。,100,101,如果在中断服务程序中把GIE置位,则中断嵌套被允许。在执行中断服务程序时发生中断,则不管新的中断的优先级多高,中断服务程序被打断开始执行新的中断。,102,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。