单片机中断嵌套实验
- 格式:docx
- 大小:87.98 KB
- 文档页数:6
单片机外部中断实验(附c程序)一、实验目的掌握外部中断的C语言和汇编语言编程方法,会用外部中断解决实际应用问题。
二、实验内容8051C51单片机P2.0接一个发光二极管LED1、P2.1接一个发光二极管LED2,P3.2接一个开关、P3.3接一个开关要求实现以下功能:(1)合上、P3.3断开时LED1闪烁(2)P3.2断开、P3.3合上时LED2闪烁(3)P3.2合上后(不断开)再合上P3.3,LED1闪烁LED2不闪烁(4)P3.3合上后(不断开)再合上P3.2,LED2不闪烁LED1闪烁试编写C语言和汇编语言程序使用自然优先级就可以也可 XO 高级X1低级PX0=1 PX1=0四、实验电路五、参考程序(自己完成)C程序:Include<reg52.h>Sbit P2_0=P2^0;Sbit P2_1=P2^1;Sbit P3_2=P3^2;Sbit P3_3=P3^3;void delay02s(void) //延时0.2秒子程序{unsigned char i,j,k;for(i=20;i>0;i--)for(j=20;j>0;j--)for(k=248;k>0;k--);}Void main{EA=1;EX0=1;EX1=1;ITO=1;IT1=1;PX0=1;PX1=0;While(1);}Void int0(void) interrupt 0 { if(!P3_2){While(1){P2_0=1;delay02s();P2_0=0;delay02s();}}}Void int1(void) interrupt 2 { if(!P3_3){While(1){P2_1=1;delay02s();P2_1=0;delay02s();}}}。
嵌入式中断按键实验报告本实验的目的是学习如何在嵌入式系统中使用中断来处理按键输入。
通过该实验,我们可以掌握如何配置和使用中断,以及如何编写中断服务程序来处理按键输入。
实验材料:1. 嵌入式开发板2. 按键模块3. 电源适配器实验步骤:1. 将按键模块连接到嵌入式开发板的GPIO引脚上,确保连接正确。
2. 打开开发板的开关,给开发板供电。
3. 在开发板上配置GPIO引脚作为中断输入,并使能中断。
4. 编写中断服务程序来处理按键输入。
当按键被按下时,中断服务程序将被调用,并执行相应的操作。
5. 在主程序中初始化中断服务程序,并进入一个无限循环。
在该循环中,可以进行其他的操作,并等待按键中断的发生。
实验结果:在实验中,我们成功地配置并使用了中断来处理按键输入。
当按键被按下时,中断服务程序被调用,并执行了相应的操作。
讨论与分析:通过该实验,我们学习到了中断的基本原理和使用方法。
中断是一种非常重要的机制,可以使嵌入式系统更高效地响应外部事件。
在实际的嵌入式应用中,按键输入是非常常见的操作,使用中断可以很好地处理按键输入,提高系统的响应速度和可靠性。
然而,中断也存在一些问题。
首先,中断处理需要一定的时间,在高速的系统中,中断的处理时间可能会影响到系统的性能。
另外,当系统存在多个中断源时,中断处理的优先级和调度也需要仔细设计,以确保系统的正常运行。
总结:通过本实验,我们成功地学习了嵌入式系统中使用中断处理按键输入的方法。
中断是一种重要的机制,可以使系统更高效地响应外部事件。
通过合理地设计和使用中断,可以提高系统的性能和可靠性。
在实际的嵌入式应用中,我们应该根据具体的需求和系统条件来选择最合适的中断处理方法,并进行适当的优化和调试。
一、实验背景随着电子技术的飞速发展,单片机因其体积小、成本低、功能强大等优点,在各个领域得到了广泛应用。
中断技术是单片机设计中非常重要的一部分,它允许单片机在执行程序的过程中,能够及时响应外部事件,从而提高系统的实时性和效率。
本实训旨在通过实验,加深对单片机中断系统的理解,掌握中断系统的使用方法,并学会在实际应用中灵活运用中断技术。
二、实验目的1. 熟悉单片机中断系统的基本概念和原理。
2. 掌握中断源、中断优先级、中断服务程序等基本概念。
3. 学会使用单片机的中断系统实现实时响应外部事件。
4. 培养动手实践能力和问题解决能力。
三、实验器材1. 单片机实验板2. 示波器3. 电源4. 连接线5. 逻辑分析仪(可选)四、实验内容1. 实验一:外部中断实验(1)实验目的:验证外部中断功能,实现按键控制LED灯的点亮和熄灭。
(2)实验步骤:a. 将外部中断0(INT0)引脚连接到按键,按键按下时产生低电平信号。
b. 编写中断服务程序,实现按键按下时点亮LED灯,按键释放时熄灭LED灯。
c. 编译程序,下载到单片机实验板上。
d. 测试实验效果,观察LED灯的点亮和熄灭情况。
2. 实验二:定时器中断实验(1)实验目的:验证定时器中断功能,实现LED灯的定时闪烁。
(2)实验步骤:a. 配置定时器T0为模式1,设置定时器初值,使定时器溢出时间为1秒。
b. 开启定时器中断,编写定时器中断服务程序,实现LED灯的定时闪烁。
c. 编译程序,下载到单片机实验板上。
d. 测试实验效果,观察LED灯的闪烁情况。
3. 实验三:中断嵌套实验(1)实验目的:验证中断嵌套功能,实现定时器中断和外部中断的嵌套。
(2)实验步骤:a. 配置定时器T0为模式1,设置定时器初值,使定时器溢出时间为1秒。
b. 开启定时器中断和外部中断,设置中断优先级。
c. 编写定时器中断服务程序和外部中断服务程序,实现中断嵌套。
d. 编译程序,下载到单片机实验板上。
实验步骤与结果分析1、建立工程1)、在工程文件中包含如下文件(int、doc、user、lib、start)2)、选择STM32F103VB芯片3)、分别添加如下文件2、运行过程(1) 使用Keil uVision3 通过ULINK仿真器连接EduKit-M3实验平台,打开实验例程NVIC_test子目录下的NVIC.Uv2例程,编译链接工程;(2) 点击MDK 的Debug菜单,选择Start/Stop Debug Session项或Ctrl+F5键,远程连接EduKit-M3实验平台并下载调试代码到目标系统的RAM中;(3) 程序正常启动运行后,会有以下结果:当第一次发生EXTI9 中断后(按下EduKit-M3实验平台上Key按钮),SysTick 中断的优先级比EXTI0中断优先级高。
因此当EXTI0中断发生时(按下Wakeup按钮),将先执行主要程序代码分析/* Configure one bit for preemption priority */NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);主从优先级的选择Group_1,有先占优先级1位,从优先级3位//配置一个比特为抢占优先级/* Enable the EXTI0 Interrupt */ //使能EXTI0中断NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQChannel;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = PreemptionPriorityValue;主优先级的选择PreemptionPriorityValueNVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;//从优先级等于0.NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);/* Enable the EXTI9_5 Interrupt */ //使能EXTI9_5中断NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//EXTI9_5主优先级的选择等于0NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;//EXTI9_5主优先级的选择等于0NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);/* Configure the SysTick Handler Priority: Preemption priority and sub priority */ //配置SysTick处理程序优先级:抢占优先级和子优先级NVIC_SystemHandlerPriorityConfig(SystemHandler_SysTick, !PreemptionPriorityValue, 0);while (1){if(PreemptionOccured != FALSE)//当PreemptionOccured != FALSE)抢占发生{GPIO_WriteBit(GPIOC, GPIO_Pin_6, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_6)));Delay(0x5FFFF);GPIO_WriteBit(GPIOC, GPIO_Pin_7, (BitAction)(1 -GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_7)));Delay(0x5FFFF);GPIO_WriteBit(GPIOC, GPIO_Pin_8, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_8)));Delay(0x5FFFF);GPIO_WriteBit(GPIOC, GPIO_Pin_9, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_9)));Delay(0x5FFFF);}}void GPIO_Configuration(void){/* Configure PC6, PC7, PC8 and PC9 as output push-pull */ 使能为推挽输出GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //使能其速度为50MHz GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //使能为推挽输出GPIO_Init(GPIOC, &GPIO_InitStructure);/* Configure GPIOA Pin0 as input floating */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; 使能为浮空输入GPIO_Init(GPIOA, &GPIO_InitStructure);/* Configure GPIOB Pin9 as input floating */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; 使能为推挽输出入GPIO_Init(GPIOB, &GPIO_InitStructure);}GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);/* Configure EXTI Line0 to generate an interrupt on falling edge */ 配置EXTI Line0产生一个中断在下降沿EXTI_InitStructure.EXTI_Line = EXTI_Line0;EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure);(写不完时,可调整表结构。
嵌入式-中断实验
嵌入式中断实验是一种用来测试和学习嵌入式系统中断功能的实验。
中断是嵌入式系统中常用的一种机制,用于处理紧急事件或高优先级任务。
通过中断,系统可以立即响应外部事件,中断当前正在执行的任务,执行与中断事件相关的代码,然后返回到原来的任务中继续执行。
在进行中断实验时,通常需要以下步骤:
1. 确定中断源:确定要模拟的中断事件,比如外部输入的触发事件、定时器到达时间等。
2. 配置中断控制器:根据硬件平台和实验要求,配置中断控制器的相应寄存器,使其能够正确地处理中断信号。
3. 编写中断服务程序(ISR):定义一个中断服务程序,用于
处理中断事件。
ISR应当对事件进行必要的处理,然后返回到
原来的任务中。
4. 测试和调试:连接硬件平台,运行实验程序,并进行测试和调试,确保中断功能正常工作。
5. 扩展和优化:根据需要,可以进一步扩展和优化中断功能,比如增加多个中断源,实现优先级控制,提高系统响应速度等。
通过嵌入式中断实验,可以深入了解中断机制的工作原理和应用方法,提高对嵌入式系统的理解和能力。
单片机外部中断实验报告实验目的:1、理解单片机外部中断的原理和用途;2、掌握单片机外部中断的配置和使用方法。
实验器材:1、STC15W408AS单片机开发板;2、简单的电路连接器;3、按钮开关。
实验原理:单片机外部中断是通过外部硬件信号触发单片机的中断请求,在单片机运行过程中,当外部信号满足特定条件时,会触发中断,并暂停当前的运行程序,转而执行中断服务程序。
通过外部中断,可以实现对外部事件的实时处理。
实验步骤:1、将按钮开关与单片机开发板连接,将按钮开关的一端与单片机的INT0引脚连接,另一端与GND连接。
2、在开发板上连接好电源并供电。
3、打开Keil软件,新建一个工程,并选择合适的单片机型号。
4、配置单片机的外部中断功能,设置INT0引脚为中断输入。
5、编写中断服务程序,当INT0引脚检测到边沿信号时,执行中断服务程序,并在其中加入相应的处理代码。
6、编写主程序,配置相关的引脚和寄存器,使单片机进入中断模式,接受外部中断信号,并执行中断服务程序。
7、下载程序到单片机开发板上,运行程序。
8、按下按钮开关,触发外部中断,并查看实验结果。
实验结果:当按下按钮开关时,实时触发外部中断,单片机停止当前程序的运行,进入中断模式,并执行中断服务程序中的相应代码。
实验总结:通过这次实验,我对单片机的外部中断有了更深入的理解,并学会了如何使用外部中断实现对外部事件的及时处理。
外部中断广泛应用于各种实时系统和设备中,具有很大的实用价值。
在以后的学习和实践中,我会进一步掌握和应用单片机的外部中断功能。
关于51系列单片机中断嵌套[推荐阅读]第一篇:关于51系列单片机中断嵌套说最基本的,老的51单片机(80C51系列)有5个中断源,2个优先级,可以实现二级中断服务嵌套。
现在很多扩展的51单片机已经有4个优先级(或更多)和更多的中断源了。
在说到中断之前,我先来定义一下优先级,明白了什么是优先级,后面的阐述就容易明白了。
实际上很多人都是混淆了优先级的含义,所以才觉得糊里糊涂。
中断的优先级有两个:查询优先级和执行优先级。
什么是查询优级呢?我们从datasheet或书上看到的默认(IP寄存器不做设置,上电复位后为00H)的优先级:外部中断0 > 定时/计数器0 > 外部中断1 > 定时/计数器1 > 串行中断或 int0,timer0,int1,timer1,serial port 或 INT0、T0、INT1、T1、UART 或 PX0>PT0>PX1>PT1>PS>......其实都是查询优级。
首先查询优先级是不可以更改和设置的。
这是一个中断优先权排队的问题。
是指多个中断源同时产生中断信号时,中断仲裁器选择对哪个中断源优先处理的顺序。
而这与是否发生中断服务程序的嵌套毫不相干。
当CPU查询各个中断标志位的时候,会依照上述5个查询优先级顺序依次查询,当数个中断同时请求的时候,会优先查询到高优查询先级的中断标志位,但并不代表高查询优先级的中断可以打断已经并且正在执行的低查询优先级的中断服务。
例如:当计数器0中断和外部中断1(按查询优先级,计数器0中断>外部中断1)同时到达时,会进入计时器0的中断服务函数;但是在外部中断1的中断服务函数正在服务的情况下,这时候任何中断都是打断不了它的,包括逻辑优先级比它高的外部中断0计数器0中断。
而中断的执行优先级就是你对IP寄存器的设置了。
在2个优先级的情况下,某位为1,则相应的中断源为高优先级;为0,则为低优先级。
实验四--中断嵌套实验一、实验要求本实验中使用了一个外部中断和定时器中断,通过p1口连接的8个发光二极管显示中断的作用。
外部中断未发生时,即引脚INTO的按键开关没有按下时,系统通过定时器定时中断的方法,使LED为流水灯操作;当有外部中断产生,即INTO脚的按键开关按下,外部中断INTO打断定时器定时中断,从而控制8个LED闪烁。
当按键开关松开,继续流水灯的操作。
本实验体现了外部中断对定时器的中断嵌套。
二、实验目的了解中断嵌套及中断优先级的概念,掌握同时使用定时器中断与外部中断的编程方法。
三、实验内容1.选择实验所需元器件,按实验图连接电路。
2.用计算机编写代码,并汇编、调试。
3.将程序下载到单片机中,观察现象。
4.如果不符合预期要求则修改程序。
源代码:ORG 0000HAJMP MAINORG 0003HAJMP INTR0ORG 0100H MAIN:MOV P1,#0FEHMOV A,P1X1:RL AMOV P1,AMOV TMOD,#01HCLR TF0SETB TR0 LOOP:MOV TH0,#0F1HMOV TL0,#0CH LOOP1:JNB TF0,LOOP1CLR TF0JB P3.2,X1SETB EASETB EX0CLR IT0SJMP $INTR0:MOV TMOD,#01H CLR TF0SETB TR0LOOP2:MOV P1,#00HMOV TH0,#0F1HMOV TL0,#0CH LOOP3:JNB TF0,LOOP3CLR TF0MOV P1,#0FFHJNB P3.2,LOOP2MOV P1,#0FEHMOV A,P1X2:RL AMOV P1,AMOV TMOD,#01HCLR TF0SETB TR0MOV TH0,#0F1HMOV TL0,#0CH LOOP5:JNB TF0,LOOP5CLR TF0JB P3.2,X2RETI。
一、实验目的1. 理解中断嵌套的概念和原理。
2. 掌握51单片机中断嵌套的实现方法。
3. 熟悉中断优先级设置和中断屏蔽位的控制。
4. 通过实验加深对中断嵌套在实际应用中的理解。
二、实验原理中断嵌套是指在中断服务程序(ISR)执行过程中,允许更高优先级的中断打断当前正在执行的中断服务程序,从而提高系统的灵活性和响应速度。
在51单片机中,中断嵌套的实现依赖于中断优先级的设置和中断屏蔽位的控制。
三、实验器材1. 51单片机开发板2. Keil uVision4集成开发环境3. Proteus仿真软件4. LED灯8个5. 连接线若干四、实验步骤1. 搭建电路:根据实验要求,连接51单片机、LED灯和相应的引脚。
2. 编写程序:a. 初始化51单片机系统,包括设置中断优先级和中断屏蔽位。
b. 编写两个中断服务程序,分别对应两个不同的中断源。
c. 在主函数中设置中断触发条件,例如检测按钮按下。
3. 仿真测试:a. 使用Proteus仿真软件进行仿真测试。
b. 观察LED灯的响应情况,验证中断嵌套是否成功实现。
五、实验结果与分析1. 实验结果:a. 当按钮按下时,高优先级中断服务程序先被触发,LED灯按照预设的方式闪烁。
b. 当高优先级中断服务程序执行过程中,低优先级中断触发,系统实现中断嵌套,低优先级中断服务程序被执行。
c. 低优先级中断服务程序执行完毕后,系统返回高优先级中断服务程序,继续执行剩余部分。
2. 实验分析:a. 通过设置中断优先级,可以实现不同中断源的响应顺序。
b. 通过控制中断屏蔽位,可以防止中断嵌套过程中发生中断冲突。
c. 实验结果表明,中断嵌套在提高系统响应速度和灵活性方面具有重要作用。
六、实验总结1. 本实验成功实现了51单片机中断嵌套,加深了对中断嵌套原理和实现方法的理解。
2. 通过实验,掌握了中断优先级设置和中断屏蔽位的控制技巧。
3. 中断嵌套在实际应用中具有广泛的应用前景,可以提高系统性能和响应速度。
STM32外中断嵌套实验内容及要求在某STM32实验板上,设计有4个按钮K1、K2、K3、K4,使用这4个按钮编写外中断嵌套实验程序。
(1)编写4个按钮引脚初始化函数(配置端口时钟;设置引脚:浮空输入或上拉输入);(2)编写4个按钮的外中断初始化函数(配置引脚复用时钟;设置中断引脚;中断线初始化:中断线号、中断模式、触发方式、中断线使能);(3)编写4个按钮外中断的NVIC初始化函数(设置优先级组(具体要求见下面);设置中断号、占先级和次优先级(具体要求见下面)、使能中断);(4)编写4个外中断服务函数(具体要求见下面);(5)主函数(调用delay、GPIO、EXTI、NVIC初始化函数;死循环等待中断:while(1))。
(6)4个LED引脚配置函数,配置为通用推挽输出。
当K1、K2、K3、K4被按下时,通过点亮发光二极管LED1、LED2、LED3、LED4,指示中断的发生及及嵌套,具体要求见下面。
(一)对优先级组、优先级设置的要求如下:(1)设置优先级组为1组;4个中断的占先级分别为0、0、1、1,次优先级分别为0~3。
(2)设置优先级组为1组;4个中断的占先级分别为1、1、0、0,次优先级分别为4~7。
(3)设置优先级组为1组;4个中断的占先级分别为0、1、1、0,次优先级分别为0~3。
(4)设置优先级组为1组;4个中断的占先级分别为1、0、0、1,次优先级分别为4~7。
(5)设置优先级组为2组;4个中断的占先级分别为0~3,次优先级分别为0~3。
(6)设置优先级组为2组;4个中断的占先级分别为3~0,次优先级分别为3~0。
(7)设置优先级组为3组;4个中断的占先级分别为1~4,次优先级均为0。
(8)设置优先级组为3组;4个中断的占先级分别为7~5、0,次优先级均为1。
(9)设置优先级组为4组;4个中断的占先级分别为1~4,次优先级均为0。
(10)设置优先级组为4组;4个中断的占先级分别为8~5,次优先级均为0。
PIC18F单片机的中断嵌套的C语言编程方法PIC18F4520单片机提供多个中断源及一个中断优先级功能,可以给大多数中断源分配高优先级或者低优先级.高优先级中断向量地址为0008H,低优先级中断向量地址为0018H。
高优先级中断事伯将中断所有可参正在进行的低优先级中断。
有10个寄存器用于控制中断的操作。
它们是:RCONINTCONINTCON2INTCON3PIR1和PIR2PIE1和PIE2IPR1和IPR2通常,用三个位控制中断源的操作。
它们是:标志位表明发生了中断事件使能位允许程序跳转转到中断向量地址处执行(当标志位置1时)优先级用于选择是高优先级还是低先级通过将IPEN位(RCON<7>)置1,可使能中断优先级功能。
当使能中断优先级时,有2位可使能全局中断。
将GIEH位(INTCON<7>)置1,可使能所有优先级位置1(高优先级)的中断。
将GIEL位(INTCON<6>)置1,可使能所有优先级位清零(低优先级)的中断。
当中断标志位、使能位以及相应的全局中断使能位均被置1时,程序将立即跳转到中断地址0008H或0018H,具体地址取决于优先级位的设置。
通过设置相应的使能位可以禁止单个中断。
注意:系统复位时IPEN位为零(默认状态)时,便会禁止中断优先级功能,此时中断与PIC16系统中档单片机相兼容。
在兼容模式下,所有中断均跳转到地址0008H执行。
下面是在SP9608-PIC增强型单片机开发板利用PIC18F4520单片机来实现的数字频率计数器功能,程序中使用了T0用为外部信号源输入,通TMR0来实现对信号源的频率计数。
TMR3作为定时器,来产生1mS数码管扫描时基和1S秒时基信号。
为了提高频率计数的准确度,采用中断嵌套技术来完成,将TMR3产生1mS的定时信号作为高优先级中断,TMR0作为频率计数溢出中断作为低先级中断。
源程序采用MCC18编译器和MPLAB7.50版本的集成开发环境,调试工具采用ICD2;具体源程序如下:系统时钟:采用外部的12MHz晶振经过内部PLL的4倍频到48MHz。
单片机实验报告四系部名称:信息工程与自动化系专业班级:学号:姓名:指导教师:实验成绩日期实验四中断嵌套实验一、实验要求本实验中使用了一个外部中断和定时器中断,通过p1口连接的8个发光二极管显示中断的作用。
外部中断未发生时,即引脚INTO的按键开关没有按下时,系统通过定时器定时中断的方法,使LED为流水灯操作;当有外部中断产生,即INTO脚的按键开关按下,外部中断INTO打断定时器定时中断,从而控制8个LED闪烁。
当按键开关松开,继续流水灯的操作。
本实验体现了外部中断对定时器的中断嵌套。
二、实验目的了解中断嵌套及中断优先级的概念,掌握同时使用定时器中断与外部中断的编程方法。
三、知识点中断优先级的概念。
在中断响应时,高优先级可以打断低优先级的中断服务,形成嵌套。
掌握中断优先级的设置。
四.实验程序org 0000hAJMP MAINORG 0003HAJMP INRT0ORG 0030HMAIN:MOV P1,00HMOV R1,#255X2: DJNZ R1,X2MOV P1,#0FFHMOV R2,#255x6:DJNZ R2,x6JB P3.2,MAIN CLR IT0 SETB EX0 SETB EA SJMP $ORG 0200H INRT0:MOV A,#0FEH X1:RL A MOV P1,A JNB P3.2,X1 AJMP MAIN END五.实验结果六.实验心得通过实验熟悉proteus仿真软件的使用和单片中断嵌套的使用。
了解并熟悉51单片机中中断嵌套的概念,中断处理系统的工作原理。
理解51单片机中断管理系统处理五种中断源,特别是对外部中断的设置与控制方法。
熟悉中断处理特别是外部中断处理的过程和中断处理子程序的书写格式和使用方法。
宁德师范学院计算机系实验报告(2014—2015学年第2学期)课程名称单片机原理实验名称中断实验专业计算机科学与技术(非师)年级12级学号B********** 姓名王秋指导教师杨烈君实验日期2015.5.21实验步骤、实验结果及分析:1、使用Proteus ISIS 7 Professional应用程序,建立一个.DSN文件2、在“库”下拉菜单中,选中“拾取元件”(快捷键P),分别选择以下元件:AT89C51、LED-YELLOW、BUTTON、7SEG-MPX8-CA-BLUE、RESPACK-8。
3、构建仿真电路4、创建一个Keil应用程序:新建工程项目文件;为工程选择目标器件(AT89C52);为工程项目创建源程序文件并输入程序代码;保存创建的源程序项目文件;把源程序文件添加到项目中。
5、把程序经过编译后生成的HEX文件添加到仿真电路中的处理器中(编辑元件→文件路径)程序代码:1.实现单按键控制Led灯闪烁#include"reg51.h"#define uchar unsigned charsbit Led1=P1^0; uchar Mode=0;void delay(int x) //定义时间间隔{while(x--);}void button_Cotrol() //根据按键模式执行相应的代码{if(Mode==0)Led1=0;if(Mode==1){Led1=~Led1;delay(1000);}}void int0() interrupt 0 //外中断0的中断编号为0{Mode=(Mode+1)%2; //更改按键模式}void main(){Led1=0; //置初值EA=1; //开放总中断EX0=1; //允许使用外中断0IT0=1; //选择负跳变来触发外中断while(1)button_Cotrol();}图1 单按键控制Led灯闪烁while(1)button_Cotrol();}图2 单按键多功能识别,控制4路Led灯闪烁3.实现0-99的计数器效果,按一下数值加1#include"reg51.h"#define uchar unsigned char#define disp_null 10sbit key=P3^2;uchar code tab[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; //共阳数码管显示0~9的段码表uchar DispBuf[8];uchar sec=0;void delay(int x) //定义时间间隔{while(x--);}void PutTime(){DispBuf[7]=sec%10;while(1){P1=0x00;display();}}图3 0-99的计数器效果,按一下数值加1注:1、报告内的项目或设置,可根据实际情况加以补充和调整2、教师批改学生实验报告应在学生提交实验报告10日内。
为傲Z 42彳網妣匚ot Mechamical &Elrclrical Enginecnug, Anhui Polytcc hiiir Litiiversity 单片机中断嵌套实验汇编语言设计姓名:陈志强班级:通信1401学校:安徽工程大学机电学院时间:2016.4.6实验内容:使用一个外部中断和定时器中断,通过P1 口连接的8 个发光二极管来显示中断的作用。
外部中断未发生时,即引脚的INTO的按键开关K1没有按下时,系统通过定时器中断的方法,使LED呈现流水灯显示,当INTO引脚的按键开关K1按下,即长生外部中断,外部中断INTO打断定时器的定时中断,从而控制8个LED闪烁显示,当按键开关松开,继续呈现流水灯显示。
要求外部中断0设置为高优先级中断,定时器中断设置为低优先级中断。
电路设计:LM$EL2J9"POQfjflDO PO L I/ADIFQ-5.CAD5 FOeWBP2.W/3P2 IM®P22/A10P23JA11P24/A12P7 5JA13 PZ 7JA15PSENALE EAF- iiF<-P3 liTKp 円P3 3CTTP34TTD pg5fT1P3 7/CD 二__汇编程序设计:ORG 0OOOH LJMP MAIN ORG 0003H LJMP INT ORG 000BH LJMP ITOP3j■3837 J- 3321■22竺3■24■25■ 26■1?77■—1 ■ ■12|n► 1A1 15I 'PO.O/ADO PH 11 (API P0.2''AD2P0.3/AD3 PO 4 AD4 P0.5JAD5PO 6/AD6PO7''AD7 U1KTAL1XTAL2-y ^1P2.0/A8 P2.1JA0P2 2/A10PSEfJ P2 3/A11ALE P2 4/A12EAP2.&A13 P2.&A14F27/A15P3.D/RKD P1 1 P3.1/TXD P1.2 P3 2/l\T0PI.3 P3.3/\T1P1,1 P3/1.T0P I ,5P3 smR3E/WRP1.7 P3 "莎RST『「Z-.-J 7£厂—.-E -7MAIN:MOV A,#0FEHMOV SP,#60HMOV TMOD,#01HMOV TL0,#0CHMOV TH0,#0FFHSETB IT1SETB EASETB EX0SETB ET0SETB PX0SETB TR0 START: LJMP START ITOP:MOV TL0,#0CH MOV TH0,#0FFH LOOP1:LCALL TIMEMOV P1,ARL ARETIINT: MOV P1,#00H LCALL TIME MOV P1,#0FFH LCALL TIME RETITIME: MOV R5,#20 D1: MOV R6,#20 D2: MOV R7,#248 D3: DJNz R7,D3DJNz R6,D2DJNz R5,D1RETEND(范文素材和资料部分来自网络,供参考。
单片机及DSP课程设计报告专业:电子信息班级:信息092*名:***学号:*********指导教师:何香玲、王辛杰、吴则举时间:2012-06-11~24通信与电子工程学院一、设计目的为了进一步巩固学习的理论知识,增强学生对所学知识的实际应用能力和运用所学的知识解决实际问题的能力,开始为期两周的课程设计。
通过设计使学生在巩固所学知识的基础之上具有初步的单片机系统设计与应用能力。
1、通过本设计,使学生综合运用《单片机技术原理与应用》、《DSP原理与应用》《C语言程序设计》以及《数字电路》、《模拟电路》等课程的内容,为以后从事电子产品设计、软件编程、系统控制等工作奠定一定的基础。
2、学会使用KEIL C和PROTEUS等软件,用C语言或汇编语言编写一个较完整的实用程序,并仿真运行,保证设计的正确性。
3、了解单片机接口应用开发的全过程:分析需求、设计原理图、选用元器件、布线、编程、调试、撰写报告等。
二、设计内容题目42:中断嵌套的设计。
设计要求:实现中断嵌套程序。
51单片机的P1口上接有8只LED。
在外部中INT)引脚接有一只按钮开关K1。
在外部中断1输入引断0输入引脚P3.2(0INT)引脚接有一只按钮开关K2。
要求K1和K2都未按下时,P1口脚P3.3(1的8只LED呈流水灯显示,当K1按下再松开时,产生一个低优先级的外中断0请求(跳沿触发),进入外中断0中断服务程序,左右4只LED交替闪烁。
此时按下K2再松开时,产生一个高优先级的外中断1请求(跳沿触发),进入外中断1中断服务程序,P1口的8只LED全部闪烁。
当显示一段时间后,再从外中断1返回继续执行外中断0中断服务程序,即P1口控制8只LED左右4只LED交替闪烁。
设置外中断1为高优先级,外中断0为低优先级。
三、设计分析89c52有两个外部中断,外部中断0和外部中断1。
分别由INT0和INT1两个端口控制。
默认是外部中断0的优先级高于外部中断1,但是设计要求是中断0为高优先级,所以需要用PX1=1更改优先级设置。
ARM学习过程中中断嵌套问题ARM的中断管理体系和51系列微控制器的中断管理体系不太一样。
熟悉51体系结构的用户需要特别注意这一点。
ARM的中断不会自动嵌套,实现ARM微控制器的中断嵌套比较烦琐,我们不提倡中断嵌套。
但不排除需要嵌套的应用,因而在启动代码中,有对中断嵌套的处理。
模板中的文件IRQ.S用于处理中断嵌套,是以下中断处理方法的依据。
用户要根据自己的应用更改此文件,只需要在文件末尾添加中断处理程序的句柄即可。
中断嵌套的原则:低优先级的中断嵌套高优先级的中断。
可嵌套中断服务程序编写方法:1、保存当前中断使能寄存器VICIntEnable的值;2、禁止当前中断和低优先级中断;3、清除中断逻辑,使VIC能够响应更高优先级的中断;4、中断处理服务程序;5、恢复保存的中断使能寄存器的值。
声明需要嵌套的中断服务程序时,不能使用'__irq'关键字,而需要通过句柄的方式进行。
请注意IRQ.S中宏$IRQ_Label HANDLER $IRQ_Exception_Function的用法。
例子如下:/********************************************************************************************* 文件名:VIC_Nesting.c* 功能:本实验演示中断嵌套现象。
程序开启了两个中断:定时器0和外部中断0。
定时器0使LED8~LED1 * 闪烁,而外部中断0取反蜂鸣器控制口。
分配定时器0中断优先级高于外部中断0的优先级。
设置* KEY1连接外部中断0。
按住KEY1键后全速运行程序,看LED8~LED1能否闪烁,若闪烁,则说明中* 断嵌套成功。
需要在文件IRQ.S末尾添加句柄:* Timer0_Handler HANDLER IRQ_Timer0* Eint0_Handler HANDLER IRQ_Eint0* 说明:用跳线帽短接KEY1,BEEP,74HC595_2相关跳线。
为傲Z 42彳網妣
匚ot Mechamical &Elrclrical Enginecnug, Anhui Polytcc hiiir Litiiversity 单片机中断嵌套实验
汇编语言设计
姓名:陈志强
班级:通信1401
学校:安徽工程大学机电学院
时间:2016.4.6
实验内容:
使用一个外部中断和定时器中断,通过P1 口连接的8 个发光二极管来显示中断的作用。
外部中断未发生时,即引脚的INTO的按键开关K1没有按下时,系统通过定时器中断的方法,使LED呈现流水
灯显示,当INTO引脚的按键开关K1按下,即长生外部中断,外部中断INTO打断定时器的定时中断,从而控制8个LED闪烁显示,当按键开关松开,继续呈现流水灯显示。
要求外部中断0设置为高优先级中断,定时器中断设置为低优先级中断。
电路设计:
LM
$
EL2
J9"POQfjflDO PO L I/ADI
FQ-5.CAD5 FOeWB
P2.W/3
P2 IM®P22/A10
P23JA11
P24/A12
P7 5JA13 PZ 7JA15
PSEN
ALE EA
F- iiF<-
P3 liTKp 円
P3 3CTT
P34TTD pg
5fT1
P3 7/CD 二__
汇编程序设计:
ORG 0OOOH LJMP MAIN ORG 0003H LJMP INT ORG 000BH LJMP ITOP
3j
■38
37 J- 33
21
■22
竺3
■24
■25
■ 26
■
1?
77
■—1 ■ ■
12
|
n
► 1
A
1 15
I '
PO.O/ADO PH 11 (API P0.2''AD2
P0.3/AD3 PO 4 AD4 P0.5JAD5
PO 6/AD6
PO7''AD7 U1
KTAL1
XTAL2
-
y ^1
P2.0/A8 P2.1JA0
P2 2/A10
PSEfJ P2 3/A11
ALE P2 4/A12
EA
P2.&A13 P2.&A14
F27/A15
P3.D/RKD P1 1 P3.1/TXD P1.2 P3 2/l\T0
PI.3 P3.3/\T1
P1,1 P3/1.T0
P I ,5
P3 sm
R3E/WR
P1.7 P3 "莎
RST
『「Z-.-J 7£厂—.-E -7
MAIN:MOV A,#0FEH
MOV SP,#60H
MOV TMOD,#01H
MOV TL0,#0CH
MOV TH0,#0FFH
SETB IT1
SETB EA
SETB EX0
SETB ET0
SETB PX0
SETB TR0 START: LJMP START ITOP:MOV TL0,#0CH MOV TH0,#0FFH LOOP1:LCALL TIME
MOV P1,A
RL A
RETI
INT: MOV P1,#00H LCALL TIME MOV P1,#0FFH LCALL TIME RETI
TIME: MOV R5,#20 D1: MOV R6,#20 D2: MOV R7,#248 D3: DJNz R7,D3
DJNz R6,D2
DJNz R5,D1
RET
END
(范文素材和资料部分来自网络,供参考。
可复制、编制,期待你的好评与关注)。