LPC21xx系列外部中断寄存器
51单片机外部中断详解

一.外部中断相关寄存器1.定时器/计数器控制寄存器控制寄存器(TCON)IT0:外部中断0触发方式控制位当IT0=0时,为电平触发方式(低电平有效)当IT0=1时,为边沿触发方式(下降沿有效)IT1:外部中断1触发方式控制位当IT1=0时,为电平触发方式(低电平有效)当IT1=1时,为边沿触发方式(下降沿有效)2.中断允许控制寄存器(IE)EX0:外部中断0允许位;EX1:外部中断1允许位;EA :CPU中断允许(总允许)位。
二.外部中断的处理过程1、设置中断触发方式,即IT0=1或0,IT1=1或02、开对应的外部中断,即EX0=1或EX1=1;3、开总中断,即EA=1;4、等待外部设备产生中断请求,即通过P3.2,P.3.3口连接外部设备产生中断5、中断响应,执行中断服务函数三.程序编写要求:通过两位按键连接外部中断0和1,设定外部中断0为下降沿触发方式,外部中断1为低电平触发方式,按键产生中断使数字加减,用一位共阳极数码管来显示数值。
目的:感受外部中断对程序的影响,体会低电平触发和下降沿触发的区别。
#include<reg51.h>#define uint unsigned int #define uchar unsigned char uchar code dat[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uint num;void main(){EA=1; //开总中断IT0=1; //下降沿触发IT1=0; //低电平触发EX0=1; //外部中断0允许EX1=1; //外部中断1允许while(1){P0=dat[num%10];}}void plus() interrupt 0//外部中断0 {EX0=0;num++;EX0=1;}void minus() interrupt 2//外部中断1 {EX1=0;num--; EX1=1; }。
解读LPC210X之外部中断寄存器

解读LPC210X之外部中断寄存器LPC2101/02/03最多包含了三个外部中断输入作为可选择的管脚功能。
管脚进行组合后,外部事件可以处理成三个独立的中断信号。
外部中断输入能够可选择的用于将处理器从低功耗模式下唤醒。
此外,10个捕获输入没有可选择的将器件从低功耗模式唤醒功能,但也能够被用于外部中断。
Register descripTIon有四个寄存器涉及外部中断External Interrupt Flag register (EXTINT - 0xE01F C140)外部中断标志寄存器位信号描述复位值0EINT0对应管脚外部中断到来时,该标志位置位。
写1清除该位,如果该中断处于电平触发模式,那么电平触发期间该位不能清除。
01EINT1同EINT002EINT2同EINT007:3保留NA Interrupt Wake-up register (INTWAKE - 0xE01F C144)中断唤醒寄存器位信号描述复位值0EXTWAKE0置1时,指明EINT0中断将把处理器从低功耗模式唤醒01EXTWAKE1置1时,指明EINT1中断将把处理器从低功耗模式唤醒02EXTWAKE2置1时,指明EINT2中断将把处理器从低功耗模式唤醒014:3保留NA15RTCWAKE置1时,指明RTC中断将把处理器从低功耗模式唤醒External Interrupt Mode register (EXTMODE - 0xE01F C148)外部中断模式寄存器位信号描述复位值0EXTMODE00EINT0电平触发1EINT0边沿触发01EXTMODE10EINT1电平触发1EINT1边沿触发02EXTMODE20EINT2电平触发1EINT2边沿触发07:3保留NAExternal Interrupt Polarity register (EXTPOLAR - 0xE01F C14C)外部中断极性寄存器位信号描述复位值0EXTPOLAR00EINT0低电平或者上升沿触发1EINT0高电平后者下降沿触发01EXTPOLAR10EINT1低电平或者上升沿触发1EINT1高电平后者下降沿触发02EXTPOLAR20EINT2低电平或者上升沿触发1EINT2高电平后者下降沿触发07:3保留NA。
LPC21XX学习笔记之外部中断

LPC21XX学习笔记之中断VIC操作方法1.快速中断主程序:1.在VICIntSelecet中将中断分配为FIQ中断;VICIntSelecet对应位为1,表示分配为FIQ中断2.然后在VICIntEnable中使能外设中断即可2.向量IRQ主程序:1. 在VICIntSelecet中将中断分配为IRQ中断,VICIntSelecet对应位为0,表示分配为IRQ中断2. 在VICV ectCntlx 中分配中断通道(优先级)3. 在VICV ectAddrx中设置中断服务程序的地址4. 通过VICIntEnable中使能外设中断即可中断服务程序:1. 中断处理2. 清除相应的中断标志,以响应下一次中断3. 对VICVectAddrx寄存器执行写操作(通常位0x00),以更新硬件优先级LPC21XX学习笔记之外部中断外部中断唤醒掉电的CPU,不产生中断步骤:1:使能寄存器EXW AKE允许外部中断唤醒处理器2:设置EXTMODE和EXTPOLAR,设置触发方式和触发电平3:设置PINSELn,将相应的管脚设置成外部中断4:外部中断产生后,可以通过向外部中断标志寄存器EXINT写1,清除中断标志再次进入掉电模式外部中断唤醒处理器,同时产生中断步骤:1:使能寄存器EXW AKE允许外部中断唤醒处理器2:设置EXTMODE和EXTPOLAR,设置触发方式和触发电平3:设置PINSELn,将相应的管脚设置成外部中断4:使能IRQ中断:代码如下IRQEnable;使能IRQ中断MRS R0, SPSR ;读回SPSR的值BIC R0, R0, #NoInt ;设置使能IRQ中断MSR SPSR_c, R0 ;回写SPSRMOVS PC, LR ;返回5:设置。
一文读懂LPC中的中断处理

一文读懂LPC中的中断处理LPC中的中断处理小结近来在LPC的中断过程上看了点文献,作为一个初学者感觉这个内容与其它的处理器还是有很大的区别,比如说三星的S3C4510B,两者在中断的处理上理念是完全不同的,个人感觉LPC的要难一些,很多地方感觉上是在和ARM的规范打擦边球,下面具体说一下相关内容。
基础知识:LPC2294的EXT中断分为了三类,包括FIQ,Vectored IRQ,non-- Vectored IRQ,其中,以FIQ的优先级最高,而以non-- Vectored IRQ的优先级最低,系统一共提供了27个中断源,并且给这27个中断源进行了固定的编号,但是注意,这个编号和优先级没有任何的关系,并非是编号在前面的优先级就越高,见下面说明。
关键内容:两套控制渠道,第一套:在ARM体系中,本来有SWI,FIQ,IRQ等这些中断的定义,并且已经定义了这些中断的开关控制位,就是在CPSR寄存器中,该寄存器包含了一个I位和一个F位,I位用于控制IRQ中断的开关,F用于控制FIQ的开关,但是值得注意的是CPSR的读取和修改在用户模式下是不能完成的,必须要通过SWI指令进入到特权模式下才可以进行修改。
第二套:在LPC的SFR(特殊功能寄存器)中,也提供了一套寄存器用于控制相应的中断的进行,这组控制器叫做VIC寄存器(都以VIC开头),改组寄存器包括了所有的与中断有关的设置,开启,分类等功能,仅仅是将外部中断引脚对应的部分功能分离出去,由EXT系列的寄存器来处理,因此,对这一个系列的寄存器的掌握是非常重要的!两者间的关系:仅仅在第二套控制渠道下打开FIQ,IRQ中断是不够的,如果ARM内核没有开中断的话,整个系统就不会有中断产生,因此,常见的做法是这样:先将第二套渠道的控制内容处理好,然后通过SWI软件中断指令,将ARM 处理器的模式切换为特权模式,在特权模式下,对CPSR进行读出-修改-写回的操作,将中断打开,然后在返回到用户模式。
周立功NXP LPC21xx22xx 系列ARM启动代码和分散加载程序分解

周立功NXP LPC21xx/22xx 系列ARM 芯片的启动程序分解关于LPC2200 启动程序分散加载描述文件的叙述在ADS LPC2200 的启动模板中有一个scf 文件夹,其中有mem_a.scf、mem_b.scf、mem_c.scf 这3 个文件,这3 个文件是ADS 的分散加载机制,其目的是将代码段和数据段分别定位到指定地址上。
可以在Arm Linker 中选择加载路径。
分散装载技术概述:分散装载技术可以把用户的应用程序分割成多个RO(只读)运行域和RW(可读写)运行域(一个存储区域块),并且给它们制定不同的地址。
一个嵌入式系统中,Flash、16 位RAM、32 位RAM 都可以存在于系统中,所以,将不同功能的代码定位在特定的位置会大大地提高系统的运行效率。
下面是最为常用的2 种情况:1、32 位的RAM 运行速度很快,因此就把中断服务程序作为一个单独的运行域,放在32 位的RAM,使它的响应时间达到最快。
2、程序在RAM 中运行,其效率要远远高于在ROM 中运行,所以将启动代码(Boot loader)以外的所有代码都复制在RAM 中运行,可以提高运行效率。
分散装载技术主要完成了2 个基本的功能:如何分散。
就是如何将输入段组成输出段和域。
如何装载。
就是确定装载域和运行域在存储空间里的地址是多少。
域可以分为装载域和运行域装载域描述运行前输出段和域在ROM/RAM 里的分布状态,运行域描述了运行时输出段和域在ROM/RAM 里的分布状态。
大多数情况下,映像文件在执行前把它装载到ROM 里,而当运行时,域里的有些输出段(比如RW 类型的输出段)必须复制到RAM 里,程序才能正常运行,所以,在装载和运行时,RW 类的输出段处在不同的位置(地址空间)。
Scatterfile 分散加载文件:在scatterfile 中可以为每一个代码或数据区在装载和执行时指定不同的存储区域地址,Scatlertoading 的存储区块可以分成二种类型:装载区:当系统启动或加载时应用程序的存放区。
51单片机中的21个寄存器

51单片机中的21个寄存器ACC 累加器B 用于辅助累加器做某些运算的寄存器PSW 程序状态字其中最高位是进/借位标志C;PSW.6 是辅助进位标志AC,用于标识加减运算中低四位向高四位的进位;PSW.4 和PSW.3 是寄存器组选择位RS1 和RS0,用于从00H--1FH 的32 个存储器单元(4 组)中选出当前准备使用的一组工作寄存器的映射地址;PSW.2 是溢出标志OV;PSW.0 是ACC 的偶校验位P;PSW 的其余位不用IP 中断优先级控制寄存器在51 中IP.0--IP.4 依次控制INT0、T0、INT1、T1、UART 中断的优先级,高三位不用IE 中断使能控制器IE.7 是所有中断的总开关EA,IE.0--IE.4 依次控制INT0、T0、INT1、T1、UART 中断功能的开放或关断P0、P1、P2、P3 这四个寄存器用于读写51 单片机的四个I/O 端口SBUF 串行数据缓冲器将数据写入SBUF,单片机就自动将数据从UART 口发送出去SCON 串行口功能控制器最高两位SM0、SM1 控制串行口工作模式;第5 位SM2 通常用于多机通信中区分地址帧和数据帧;第4 位REN 是控制串口接收数据的使能位;第3 位TB8 和第2 位RB8 分别是在串口的相关工作模式下要发送的和接收到的第9 位数据;次低位TI 和最低位RI 分别标识一个发送或接收过程已结束,这两个标志位都会触发串口中断TH0、TL0 定时器T0 的计数单元的高8 位和低8 位TH1、TL1 定时器T1 的计数单元的高8 位和低8 位TMOD 定时/计数器工作模式控制器低4 位和高4 位的内容对应相同,分别控制T0 和T1 的工作模式,次低位和最低位控制对应定时/计数器的工作模式;最高位控制定时/计数器的计数是否由外中断口线参与控制;次高位控制对应的定时器/计数器工作在定时方式还是对相应口线的脉冲进行计数的方式TCON 定时/计数器控制字TCON.0 和TCON.2 分别是外中断INT0 和INT1 的触发方式选择位IT0 和IT1;TCON.1 和TCON.3 分别是外中断INT0 和INT1 的中断触发标志位IE0 和IE1;TCON.4 和TCON.6 分别是T0 和T1 的计数开关TR0 和TR1;TCON.5 和TCON.7 分别是T0 和T1 的中断触发标志位TF0 和TF1PCON 电源模式控制器最高位SMOD 用于串行口通信的波特率加倍,低4 位用于选择不同的低功耗模式,比如空闲模式、掉电模式、时钟停止模式等,但具体每一位的用法没有找到相关资料DPH、DPL 数据指针DPTR 的高、低字节DPTR 可以用于指向程序存储器、片内RAM、片外RAM 来读取数据SP 堆栈指针堆栈都是分配在片内RAMtips:感谢大家的阅读,本文由我司收集整编。
LPC2119调试说明

飞利浦ARM芯片LPC2119调试说明注:LPC2119FBD64和LPC2119FBD64/00在国外已经停产,最新版本是LPC2119FBD64/01,这个版本与旧版本不同的地方是CAN总线的控制器号由原来的1~2改为了0~1,以后如果更换为最新版本的芯片则需要在程序内把控制器号作相应的修改!二、系统控制模块1.外部中断输入✧由于外部中断管脚输入内部没有上拉电阻,所以管脚必须外接一上拉电阻,以确保管脚不会悬空。
✧对外部中断方式寄存器(EXTMODE)及外部中断极性寄存器(EXTPOLAR)设置时会影响VPBDIV寄存器,可用以下方法解决:1)VPBDIV写入0x02)写入想要设置的值到 EXTMODE 或 EXTPOLAR3)VPBDIV写入与2)中相同的值4)VPBDIV写入原来的值举例:设置EXTMODEVPBDIV = 0x0 //VPBDIV写入0EXTMODE = 0x1 //EXTMODE设置为1VPBDIV = 0x1 //VPBDIV写入与EXTMODE一样的值VPBDIV = 0x1 //VPBDIV恢复原来的值0x1 若原来的值为0则写0x0设置EXTPOLAR与EXTMODE一致,只要把第二行代码改为EXTPOLAR = 0x1即可2.存储器映射控制MAMMAP用于改变地址从0x00000000开始的中断向量的映射MAMMAP=0x2(用户RAM模式)表示产生中断时,从0x00000008的读数/取指是对0x40000008单元进行操作;MAMMAP=0x1(用户FLASH模式)表示产生中断时,从0x00000008的读数/取指是对片内FLASH单元的0x00000008进行操作;MAMMAP=0x2(BOOT装载程序模式)表示产生中断时,从0x00000008的读数/取指是对0x7fffe008单元进行操作。
3.PLLPLL频率计算方法Fosc:晶振频率;Fcco:PLL电流控制震荡器的频率;Fcclk:PLL输出频率(即CPU的时钟频率)M:PLLCFG寄存器中MSEL位的倍频器值;P:PLLCFG寄存器中PSEL位的分频器值。
外部中断及应用

外部中断及应用
Logo
Contents
1 2 3
外部中断介绍Leabharlann 外部中断相关寄存器应用举例
USTB Smartcar Lab
AVR单片机快速应用 AVR单片机快速应用
——by ——by ChenXi
Logo 5.1 外部中断介绍
中断:由于某一随机事件发生,单片机暂 停原程序的运行,转去执行另一程序(随 机事件),处理完毕后又自动返回源程序 继续运行。 中断源:引起中断的原因,或能发生中断 申请的来源。 主程序:单片机先运行的程序。 中断服务子程序:处理随机事件的程序。
AVR单片机快速应用 AVR单片机快速应用
——by ——by ChenXi
Logo 5.2 相关寄存器 通用中断控制寄存器GICR
USTB Smartcar Lab
AVR单片机快速应用 AVR单片机快速应用
——by ——by ChenXi
Logo 5.2 相关寄存器 通用中断标志寄存器GIFR
USTB Smartcar Lab
AVR单片机快速应用 AVR单片机快速应用
——by ——by ChenXi
Logo 5.3应用举例 应用举例 PC2到PC4的灯循环闪烁,当按键按下时停止闪 烁,PC1的灯亮一段时间,然后继续恢复PC2到 PC4的灯循环闪烁。
USTB Smartcar Lab
AVR单片机快速应用 AVR单片机快速应用
USTB Smartcar Lab AVR单片机快速应用 AVR单片机快速应用 ——by ——by ChenXi
Logo 5.1 外部中断介绍
外部中断响应示意图
主 程 序 随机事件1 随机事件2
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LPC21xx系列外部中断寄存器
LPC2114有4个外部中断,分别为EINT0、EINT1、EINT2、EINT3,具有4个相关得寄存器。
外部中断输入可以用于将处理器从掉电模式唤醒。
EXTINT是外部中断标志寄存器。
当一个管脚选择使用外部中断功能时,对
应在EXTMODE和EXTPOLAR寄存器中得位选择得电平或边沿将置位EXTINT寄存器的中断标志。
这样来向VIC提出中断请求,如果管脚中断使能,则产生中断。
低4位与外部中断引脚EINT3、EINT2、EINT1、EINT0对应,为1时表示外部中断有效。
可以通过软件对其相应位写入1清零标志位。
电平激活方式下,该方式只有在管脚处于无效状态时才有效。
一旦EINT0~EINT3 中的一位被置位并开始执行相应代码时,该位必须清零。
否则EINT刚触发得
事件以后将不会被识别。
电平激活方式下,如果管脚的EINT功能被选用且管脚处于有效状态时,该
位置位;边沿激活方式下,如果管脚的EINT功能被选用且管脚上出现所选边
沿时,该位置位。
EXTWAKE是中断唤醒寄存器。
EXTWAKE寄存器中的使能位允许外部中断和其他源将处理器从掉电模式中唤醒。
相应的EINTn功能必须映射到管脚才能实现掉电唤醒。
这样做的好处是允许外部中断输入将处理器从掉电唤醒,但不产生中断;或者在掉电模式下使能中断而不会将处理器唤醒。
[3:0]
=EXTWAKE3~EXTWAKE0,为1时允许唤醒。
EXTMODE是外部中断模式寄存器。
该寄存器中的位用来选择EINTn的引脚是电平还是边沿激活。
只有选择用作EINT功能,并且已通过VICIntEnable寄。