实验二 外部中断实验(南大)
实验二--外部中断实验报告

桂林电子科技大学一、实验目的1 学习外部中断指令的基本使用方法;2 学习外部中断处理程序的编程方法。
二、实验内容1在实验一内容的基础上增加允许急救车优先通过的要求;2 急救车到达时(产生外部中断),交通信号为全红,以便让急救车通过3 急救车通过路口时间为10秒(四个红灯亮10秒)。
急救车通过后,交通灯恢复原状态(中断前的状态);4 中断申请信号为单脉冲“”。
三、实验原理图四、实验程序框五、实验步骤1、检查试验仪,确认相应单片机放置位置,确认无误后将试验仪的USB 数据线连接电脑;2、打开单片机电源开关,运行MEFlash 软件,确认电脑与试验仪连接成功;3、将A T89S52的P0和P2口用短接线LED 灯的端口相连;4、运行KC 编辑软件,调整好程序,并生成相应的.HEX 文件;5、使用MEFlash 软件,将生成的.HEX 文件烧录到单片机中,运行成功;6、测试中断是否运行正常,进行调试,确保程序正常运行。
六、实验程序清单#include<reg51.h>//*******延时1ms 秒********void delay(unsigned int i){unsigned int j;while(i--)交通灯程序的流程图{//对于11.0592M晶振延时越是1msfor(j=0;j<125;j++){{;}}}}//*****延时结束*******// k 代表黄灯闪烁的次数void blink(unsigned int k){for(;k>0;k--) //黄灯闪烁5次{P2=0xF0;delay(300);P2=0xFF;delay(300);}}//******主函数******//******主函数******void main(){P0=0x0F; //初始状态东西南北红灯全亮P2=0xFF;delay(2000) ;EA=1; //开启中断IT0=0 ;EX0=1;//D27到D24分别代表东西南北绿灯//D07到D04分别代表东西南北红灯// D23到D20四灯代表黄灯while(1){P0=0xCF; //南北红灯亮P2=0x3F; //东西绿灯亮delay(2000) ;P2=0xFF; //东西绿灯灭,黄灯闪烁5次blink(5);P0=0x3F; //东西红灯亮P2=0xCF; //南北绿灯亮delay(2000) ;P0=0x3F; //东西红灯亮,黄灯闪烁5次blink(5);}}void int0(void)interrupt 0{unsigned int Temp0;unsigned int Temp2;EA=0;Temp0=P0; //储存初始端口状态Temp2=P2;P0=0x0F; //东西红灯亮P2=0xFF; //南北绿灯亮delay(2000) ;P0=Temp0; //返回中断前端口状态P2=Temp2;EA=1;}七、实验分析该实验主要是检查外部中断的用法及其注意的事项(比如中断时要保护现场和恢复现场)。
PIO外部中断实验报告解读

“SOPC技术综合设计实践”实验报告实验题号: 实验五项目名称:PIO外部中断实验系班: 计科师范系11(1)学号:姓名:实验日期: 2014年4月2日指导老师:一、实验目的(1)熟悉中断服务程序的编写和注册方法。
(2)熟悉程序的调试方法,重点熟悉中断服务程序的调试方法。
(3)熟悉NiosII处理外部中断的方法。
二、实验内容1.外部中断信号由按键提供,然后将中断事件反映到对应的LED。
2.利用边沿捕获寄存器读取按键值,编写中断服务程序将读到的键值输出到LED。
即:按键F1按下,对应的LED0点亮。
三、实验原理当跳转到异常处理地址后,处理器开始执行一段由HAL插入的代码,判断中断源和中断优先级,然后再转跳到用户的中断服务子程序(ISR)中。
即发生异常后,异常处理除ISR 外的所有工作都由HAL系统库代码替换用户完成。
为了将中断服务子程序的信息告知HAL,用户需要完成ISR的登记工作。
向HAL登记ISR的工作可以分为以下两步:(1)编写void isr_name(void *context,alt_u32 id)函数(2)调用alt_irq_register(alt_u32 id,void *context,void(*isr)(void*,alt_u32))函数,向HAL登记ISR。
四、SOPC的整个设计流程(附:截取主要的设计图)1.基于实验3硬件系统(注意:将button_pio改为8位, input),修改后,重新generate。
设计端口芯片引脚开发平台模块设计端口芯片引脚开发平台模块clk_in PIN_B13 时钟button_pio[0] PIN_Y11 F1 led_pio[0] PIN_AC10 LED0button_pio[1] PIN_AA10 F2 led_pio[1] PIN_W11 LED1button_pio[2] PIN_AB10 F3 led_pio[2] PIN_W12 LED2button_pio[3] PIN_AE6 F4 led_pio[7] PIN_AA11 LED3button_pio[4] PIN_V22 F5 led_pio[3] PIN_AE8 LED4button_pio[5] PIN_AF23 F6 led_pio[4] PIN_AF8 LED5button_pio[6] PIN_AE23 F7 led_pio[5] PIN_AE7 LED6button_pio[7] PIN_AC22 F8 led_pio[6] PIN_AF7 LED73.编译后,下载.SOF文件4.在IDE平台上,新建一个.C文件,写入程序#include <stdio.h>#include"system.h"#include"altera_avalon_pio_regs.h"#include"alt_types.h"#include"sys/alt_irq.h"#include"priv/alt_busy_sleep.h"#define LEDCON 0xff //#define KEYCON 0xff //alt_u32 done = 0; // 信号量:通知外部中断事件发生/******************************************************************** * 功能:键按下事件中断服务子程序,当键按下时,通过done标志* 告知外界********************************************************************/ static void KeyDown_interrupts(void* context, alt_u32 id){/* 清中断捕获寄存器 */IOWR_ALTERA_AVALON_PIO_EDGE_CAP(BUTTON_PIO_BASE, 0);/* 通知外部有中断事件发生 */done++;}/******************************************************************** * 功能:初始化LED_PIO为输出,KEY为输入,开中断,清边沿捕获寄存器********************************************************************/ void InitPIO(void){/* 初始化LED_PIO为输出,KEY为输入 */IOWR_ALTERA_AVALON_PIO_DIRECTION(PIO_BASE, LEDCON);IOWR_ALTERA_AVALON_PIO_DIRECTION(BUTTON_PIO_BASE, 0x00);IOWR_ALTERA_AVALON_PIO_IRQ_MASK(BUTTON_PIO_BASE, 0xff);/* 开KEY的中断*//*请同学们自己完成*/IOWR_ALTERA_AVALON_PIO_EDGE_CAP(BUTTON_PIO_BASE, 0x00);/* 清边沿捕获寄存器 */alt_irq_register(BUTTON_PIO_IRQ,NULL,KeyDown_interrupts);/* 注册中断服务子程序 *//*请同学们自己完成*/}/******************************************************************** * 功能:等待按键中断,并输出控制相应的LED。
南昌大学2014年单片机实验报告

实验一I/O口输入输出实验一、实验目的掌握单片机P1口、P3口的使用方法。
二、实验内容以P1 口为输出口,接八位逻辑电平显示,LED 显示跑马灯效果。
以P3 口为输入口,接八位逻辑电平输出,用来控制跑马灯的方向。
三、实验要求根据实验内容编写一个程序,并在实验仪上调试和验证。
四、实验步骤1)系统各跳线器处在初始设置状态。
用导线连接八位逻辑电平输出模块的K0 到CPU 模块的RXD(P3.0 口);用8 位数据线连接八位逻辑电平显示模块的JD4B 到CPU 模块JD8(P1 口)。
2)启动PC 机,打开THGMW-51 软件,输入源程序,并编译源程序。
编译无误后,下载程序运行。
3)观察发光二极管显示跑马灯效果,拨动K0 可改变跑马灯的方向。
五、实验参考程序;//******************************************************************;文件名: Port for MCU51;功能: I/O口输入、输出实验;接线: 用导线连接八位逻辑电平输出模块的K0到CPU模块的RXD(P3.0口);; 用8位数据线连接八位逻辑电平显示模块的JD2B到CPU模块的JD8(P1口)。
;//******************************************************************DIR BIT P3.0ORG 0000HLJMP STARTORG 0100HSTART:OUTPUT1:MOV A, #0FEHMOV R5, #8LOOP1: CLR CMOV C,DIRJC OUTPUT2MOV P1, ARL AACALL DELAYDJNZ R5, LOOP1SJMP OUTPUT1OUTPUT2:MOV A, #07FHMOV R5, #8LOOP2:CLR CMOV C,DIRJNC OUTPUT1MOV P1, ARR AACALL DELAYDJNZ R5,LOOP2SJMP OUTPUT2DELAY:MOV R6,#0DELAYLOOP1:MOV R7,#0DELAYLOOP2:NOPNOPDJNZ R7,DELAYLOOP2DJNZ R6,DELAYLOOP1RETEND六、实验结果当八位逻辑电平的K0拨到上方,即输出高电平时,实验箱B5区的八个LED灯从左至右循环点亮,当K0拨到下方,即输出低电平时,八个LED灯从右至左循环点亮。
单片机定时器及外部中断实验报告

单片机实验报告(二)实验名称:定时器及外部中断姓名:张昊学号:110404247班级:通信2班时间:2013.11南京理工大学紫金学院电光系一、实验目的1、学习定时/计数器的应用;2、学习外部中断技术的基本使用方法;3、学习中断处理程序的编程方法。
二、实验原理(1)以P1口作为输出口,定时器实现1s定时,实现显示数的1s加1,外部中断0键盘外接BUTTON,实现对显示数快速加1的控制。
(2)系统板上硬件连线把“单片机系统”A2区的J61接口的P1.0~P1.6端口与D1区的J52接口相连。
把“单片机系统”A2区的INT0端口用导线连接到D1区的KEY1端口上;三、实验内容利用定时器中断控制1s的输出,使用外部中断0使得显示的数加1. 程序如下:#include<reg51.h>#define uchar unsigned char#define uint unsigned intvoid delay(){uint x,y;for(x=100;x>0;x--)for(y=110;y>0;y--);}uchar m,flag;void main(){uchar a,b;TMOD=0x01;TH1=(65536-50000)/256;TL1=(65536-50000)%256;EX0=1; EX1=1; PX1=1; ET0=1; EA=1; 中断开启TR0=1;m=0; P1=0;while(1){while(flag==0); flag=0;if(m==100) m=0;m++;a=m/10;b=m+a*6;P1=b;}}void timer0() interrupt 1 using 0{uchar t;TH1=(65536-50000)/256;TL1=(65536-50000)%256;if(t<20) t++;else { flag=1; t=0; }}void exter0() interrupt 0 using 1{if(INT0==0) delay();if(INT0==0) flag=1;}void exter1() interrupt 2 using 2{if(INT1==0) delay();if(INT1==0) m=0;}将编译好的程序下载到仿真电路中四、小结与体会通过本次定时器中断实验,我对定时器的工作原理有了更加深入的理解,这也是建立在向同学请教的基础上。
单片机外部中断实验报告

实验三外部中断实验报告班级:学号:姓名:教师:一、实验目的1、掌握单片机外部中断的原理及过程。
2、掌握单片机外部中断程序的设计方法。
3、掌握单片机外部中断时中断方式的选择方法。
二、实验内容如下图所示,P3.2设为输入,P2设为输出位,连有8个发光二极管D1~D8。
每当发生外部中断时,发光二极管以向下流水灯的方式点亮。
分别选择边沿触发外部中断放是和电平触发外部中断方式两种。
三、编程提示1、P3口是8位准双向口,具有双重功能:第一功能和P1口一样,作为输入输出口,也有字节操作和位操作两种方式,每一位可分别定义为输入或输出;第二功能定义如下:P3.0 RXD 串行输入口P3.1 TXD 串行输出口P3.2 INT0 外部中断0请求输入线P3.3 INT1 外部中断1请求输入线P3.4 T0定时器/计数器T0外部计数器脉冲输入线P3.5 T1定时器/计数器T1外部计数器脉冲输入线P3.6 WR外部数据存贮器写脉冲输出线P3.7 RD外部数据存贮器读脉冲输出线2、各中断服务程序入口地址:外部中断0 03H定时器/计数器T1溢出中断0BH外部中断1 13H定时器/计数器1BH串行口中断23H3、外部中断的产生条件中断允许寄存器IE:EA ES ET1 EX1 ET0 EX0(1)外部中断源允许中断(中断0:EX0=1;中断1:EX1=1)。
(2)CPU开中断(EA=1)。
(3)外部中断方式CPU发出中断申请。
4、外部中断方式的选择控制TCON:TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0IT0是选择文字则外部中断0请求(INT0)边沿触发方式或电平触发方式的控制位。
前一方式IT0=1,后一方式IT0=0。
IT1是选择外部中断1请求(INT1)为边沿触发方式或电平触发方式的控制位。
前一方式IT1=1,后一方式IT1=0。
当8031复位后,TCON被清0。
5、外部中断电路负脉冲作为中断请求信号时,为了保证中断的唯一性,必须加上消除开关抖动的电路或者去抖动延时程序,保证每次只产生单脉冲,构成边沿触发方式外部中断电路。
《嵌入式系统原理与应用》实验报告04-外部中断实验

VICVectAddr=0x00;
}
void EINT3_init(void)//中断的初始化
{
PINSEL1=(PINSEL1 & 0xFFFFCFF)|0x300;
EXTMODE=EXPOLAR & 0x0E;
IO0CLR=0x01;
IO0DIR=0x01;//p0.1设为输出
while(1);
}
五、分析与讨论
六、教师评语
签名:
日期:
成绩
3. 熟悉LPC2000 系列ARM7 微控制器的GPIO控制。
二、实验设备(环境)及要求
硬件:PC机;
软件:PC机操作系统windows XP,ADS1.2集成开发环境,Proteus软件。
三、实验内容与步骤
实验内容:
设置P0.20脚为EINT3功能,初始化为向量中断,并设置为下降沿触发模式,然后等待外部中断。中断服务程序将LED灯控制输出信号取反,然后清除中断标志并退出中断。
《嵌入式系统原理与应用》实验报告
实验序号:4实验项目名称:外部中断实验
学 号
1207012117
姓 名
黄明
专业、班
1
实验地点
实验楼1#318
指导教师
黄鹏程
实验时间
4-28
一、实验目的
1. 掌握LPC2200 专用工程模板的使用;
2.熟悉LPC2000 系列ARM7 微控制器的VIC和外部中断的使用;
实验步骤:
四、实验结果与数据处理
源程序:
#include "config.h"
int i; /*全局变量*/
void __irq EINT3_ISR(void)//中断服务函数
中断实验实训报告
一、实验实训名称中断实验实训二、实验实训目的1. 理解中断的概念和作用。
2. 掌握中断系统的基本组成和原理。
3. 学会中断程序的编写和调试。
4. 提高编程能力和问题解决能力。
三、实验实训内容1. 中断系统概述介绍中断的概念、作用、分类及中断系统的基本组成。
2. 中断处理过程分析中断处理过程,包括中断请求、中断响应、中断处理和中断返回等步骤。
3. 中断程序的编写学习编写中断服务程序,掌握中断程序的编写方法和技巧。
4. 中断程序的调试利用调试工具对中断程序进行调试,找出并解决程序中的错误。
四、实验实训步骤1. 熟悉实验环境,了解实验设备。
2. 阅读实验指导书,明确实验目的、内容和步骤。
3. 编写中断服务程序,实现中断功能。
4. 编写主程序,调用中断服务程序。
5. 使用调试工具对程序进行调试,确保程序正常运行。
6. 分析实验结果,总结实验经验。
五、实验实训结果与分析1. 实验结果实验成功实现了中断功能,主程序在调用中断服务程序后,程序运行正常。
2. 实验分析(1)通过编写中断服务程序,掌握了中断程序的编写方法和技巧。
(2)通过调试工具对程序进行调试,提高了问题解决能力。
(3)实验过程中,了解了中断系统的基本组成和原理,为后续深入学习打下了基础。
六、实验实训总结1. 通过本次实验实训,掌握了中断系统的基本组成和原理,了解了中断处理过程。
2. 学会了中断程序的编写和调试,提高了编程能力和问题解决能力。
3. 实验过程中,遇到了一些问题,通过查阅资料和请教老师,成功解决了这些问题,锻炼了自己的自学能力和团队协作能力。
4. 在今后的学习和工作中,将继续深入研究中断技术,为我国信息技术发展贡献自己的力量。
七、实验实训报告撰写人(姓名)(日期)。
计算机原理实验-外部中断实验
计算机原理与应用实验实验名称:外部中断实验学院:信息与通信工程学院班级:2017211113姓名:***学号:**********同组成员姓名:李凝同组成员学号:**********一、实验目的1. 掌握NVIC 中断优先级配置。
2. 学会外部中断配置。
二、实验原理及内容(一)实验原理电路结构如图3.1 所示1. NVIC 中断优先级NVIC 是嵌套向量中断控制器,控制着整个芯片中断相关的功能,它跟内核紧密耦合,是内核里面的一个外设。
但是各个芯片厂商在设计芯片的时候会对Cortex-M4 内核里面的NVIC 进行裁剪,把不需要的部分去掉,所以说STM32 的NVIC 是Cortex-M4 的NVIC 的一个子集。
CM4 内核可以支持256个中断,包括16个内核中断和240个外部中断,256 级的可编程中断设置。
对于STM32F4 没有用到CM4 内核的所有东西,只是用到了一部分,对于STM32F40 和41 系列共有92个中断,其中有10个内核中断和82个可屏蔽中断,常用的为82个可屏蔽中断。
ISER[8]—中断使能寄存器组,用来使能中断,每一位控制一个中断,由于上面已经说明了控制82 个可屏蔽的中断,因此利用ISER[0~2]这三个32 位寄存器就够了。
一下的几个寄存器同理。
ICER[8]—中断除能寄存器组,用来消除中断。
ISPR[8]—中断挂起控制寄存器组,用来挂起中断。
ICPR[8]—中断解挂控制寄存器组,用来解除挂起。
IABR[8]—中断激活标志寄存器组,对应位如果为1 则表示中断正在被执行。
IP[240]—中断优先级控制寄存器组,它是用来设置中断优先级的。
我们只用到了IP[0]~IP[81],每个寄存器只用到了高4 位,这4 位又用来设置抢占优先级和响应优先级(有关抢占优先级和响应优先级后面会介绍到),而对于抢占优先级和响应优先级各占多少位则由AIRCR 寄存器控制,相关设置如表 3.1 所示。
实验二 外部中断实验(南大)
南昌大学实验报告学生姓名:学号:专业班级:卓越通信班实验类型:□验证□综合□√设计□创新实验日期:201303 实验成绩:实验二外部中断实验一.实验目的掌握S3C2410A处理器外部中断的引脚功能设置;掌握中断初始化以及中断服务函数的编写。
二.实验设备硬件:PC机1台MagicARM2410教学实验开发平台1台软件:Windows 98/2000/XP操作系统ADS 1.2集成开发环境三.实验内容设置GPF4引脚为外部中断EINT4功能,下降沿触发模式。
初始化S3C2410A 中断控制器,设置EINT4为IRQ中断,并使能中断允许。
初始化完成后,等待外部中断产生。
中断服务程序里负责把LED1控制口输出信号取反,清除中断标志后退出中断。
四.实验原理a 独立按键KEY1电路使用了GPF4口,设置GPFCON寄存器可以选择GPF4引脚为外部中断EINT4功能,此时通过按下KEY1键即可触发外部中断;b 对于S3C2410A的众多中断源,通过设置INTMOD寄存器可将它们分为IRQ中断或FIQ中断,一般只设置一个中断源为FIQ中断。
对于多个IRQ 中断,通过PRIORITY寄存器可以设置中断的优先级,一般将其设置为0使用默认固定的优先级即可;c 设置INTMSK寄存器使能某个中断源的中断允许,有些中断源还需要设置SUBMASK寄存器使能(比如UART的发送中断和接收中断);d 对于外部中断EINT4~EINT23,由于它们在S3C2410A的中断控制器中不是独立中断源(EINT4~EINT7共用一个中断源,EINT8~EINT23共用另一个中断源),所以还需要设置EINTMASK寄存器来使能某一个外部中断;e 由于S3C2410A的中断控制器不是向量中断控制器,即处理器硬件不能自动获取对应于中断源的中断服务程序地址,所以在IRQ中断服务程序中要通过中断标志寄存器INTPND来获得对应的中断服务程序地址(参考ARM Executable Image for DeviceARM2410工程模板的Target.c文件,其中的IRQ_Exception函数)。
外部中断脉冲计数实验
《单片机原理与应用》课程实验报告实验名称:外部中断----脉冲计数实验实验日期:班级:电技13-2班姓名:马倩南学号:02号指导老师:评分:一、实验目的:1.熟悉单片机外部中断的使用方法;2.熟悉数码管的工作原理和驱动方法;3.程序设计中数组的使用。
、实验内容: 连接最小系统板与脉冲开关、数码管模块电路,构成模拟计数器电路。
编程检测外部脉冲的输入,并通过数码管来指示脉冲个数1、设计出外部中断计数器的电路原理图,单片机选用AT89C51 P0 口接八位逻辑电平显示发光二极管,INTO或INT1接单次脉冲输出端。
2、打开Keil uVision2 仿真软件,首先建立本实验的项目文件,接着编写外部中断计数器.AS M源程序,进行编译,直到编译无误,生成HEX文件。
3、将HEX文件上载到Protues电路原理图的AT89C5仲,并仿真成功。
4、实验电路功能,连续按动单次脉冲产生电路的按键,对单次脉冲进行计数,八个发光二极管显示计数结果。
三、程序及其运行结果:1、外部中断的初始化设置共有三项内容:中断总允许即EA=1,外部中断允许即EXi=1 (i=0 或1),中断方式设置。
中断方式设置一般有两种方式:电平方式和脉冲方式,本实验选用后者,其前一次为高电平后一次为低电平时为有效中断请求。
因此高电平状态和低电平状态至少维持一个周期,中断请求信号由引脚INT0(P3.2)或INT1(P3.3)引入。
2、中断服务的关键:a、保护进入中断时的状态。
堆栈有保护断点和保护现场的功能使用PUSH在转中断服务程序之前把单片机中有关寄存单元的内容保护起来。
b、必须在中断服务程序中设定是否允许中断重入,即设置EX0位。
c、用POP指令恢复中断时的现场。
3、中断控制原理:中断控制是提供给用户使用的中断控制手段。
实际上就是控制一些寄存器,51系列用于此目的的控制寄存器有四个:TCON、IE、SCON及IP。
4、中断响应的过程:首先中断采样然后中断查询最后中断响应。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
南昌大学实验报告
学生姓名:学号:专业班级:卓越通信班
实验类型:□验证□综合□√设计□创新实验日期:201303 实验成绩:
实验二外部中断实验
一.实验目的
掌握S3C2410A处理器外部中断的引脚功能设置;
掌握中断初始化以及中断服务函数的编写。
二.实验设备
硬件:
PC机1台
MagicARM2410教学实验开发平台1台
软件:
Windows 98/2000/XP操作系统
ADS 1.2集成开发环境
三.实验内容
设置GPF4引脚为外部中断EINT4功能,下降沿触发模式。
初始化S3C2410A 中断控制器,设置EINT4为IRQ中断,并使能中断允许。
初始化完成后,等待外部中断产生。
中断服务程序里负责把LED1控制口输出信号取反,清除中断标志后退出中断。
四.实验原理
a 独立按键KEY1电路使用了GPF4口,设置GPFCON寄存器可以选择GPF4
引脚为外部中断EINT4功能,此时通过按下KEY1键即可触发外部中断;
b 对于S3C2410A的众多中断源,通过设置INTMOD寄存器可将它们分为
IRQ中断或FIQ中断,一般只设置一个中断源为FIQ中断。
对于多个IRQ 中断,通过PRIORITY寄存器可以设置中断的优先级,一般将其设置为0使用默认固定的优先级即可;
c 设置INTMSK寄存器使能某个中断源的中断允许,有些中断源还需要设置SUBMASK寄存器使能(比如UART的发送中断和接收中断);
d 对于外部中断EINT4~EINT23,由于它们在S3C2410A的中断控制器中不
是独立中断源(EINT4~EINT7共用一个中断源,EINT8~EINT23共用另一个中断源),所以还需要设置EINTMASK寄存器来使能某一个外部中断;
e 由于S3C2410A的中断控制器不是向量中断控制器,即处理器硬件不能自
动获取对应于中断源的中断服务程序地址,所以在IRQ中断服务程序中要通过中断标志寄存器INTPND来获得对应的中断服务程序地址(参考ARM Executable Image for DeviceARM2410工程模板的Target.c文件,其中的IRQ_Exception函数)。
f在中断服务程序中,退出中断之前要清除中断标志,即对SRCPND和INTPND寄存器相应位写1,先清除SRCPND寄存器,再清除INTPND寄存器。
对于外部中断EINT4~EINT23中断,要最先清除EINTPEND寄存器中的中断标志。
实验电路图
五.实验步骤
(1) 启动ADS 1.2,使用ARM Executable Image for DeviceARM2410工程模板建立一个工程EINT。
(2) 在工程src组中的main.c中编写实验代码。
(3) 选用DebugRel生成目标,然后编译链接工程。
(4) 将MagicARM2410实验箱上的启动方式选择跳线JP8短接,然后按RST键复位系统。
(5) 选择【Project】->【Debug】,启动AXD进行JTAG仿真调试。
(6) 在中断服务程序中设置断点,全速运行程序,按下/释放KEY1按键,使EINT4为低/高电平(产生中断)。
(7) 取消中断服务程序中有断点,全速运行程序,按下/释放KEY1按键,观察LED1灯的变化。
六.实验参考程序(略)
七.实验现象
通过中断程序设置可以控制LED灯的亮灭。
按下/释放KEY1按键,使EINT4为低/高电平(产生中断) ,按下/释放KEY1按键,LED1灯的灭了
八.思考题:
EINT4与EINT0的中断设置和中断标志清除有什么异同?
答:对于外部中断EINT0,它在S3C2410A的中断控制器中是独立中断源,为了使中断控制器能够接收中断请求,只需在在启动代码中将PSR的F位或I位设置为0,同时将中断屏蔽寄存器(INTMASK)中的相应位设置为0;但对于外部中断EINT4,由于它在S3C2410A的中断控制器中不是独立中断源(EINT4~EINT7共用一个中断源),满足上述设置外还需要设置EINTMASK寄存器来使能某一个外部中断(这里是EINT4)。
而在中断标志清除中,二者都要在退出中断之前要清除中断标志,即对SRCPND和INTPND寄存器相应位写1,先清除SRCPND寄存器,再清除INTPND 寄存器。
对于外部中断EINT4中断,要最先清除EINTPEND寄存器中的中断标志。