《《单片机中断》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《单片机中断》PPT课件.ppt(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、外部中断应用实例外部中断应用实例例例7.1 7.1 用按键控制的一位用按键控制的一位LED LED 数码管显示系统数码管显示系统1 1)硬件电路硬件电路图图7-2 7-2 为硬件原理图。其中为硬件原理图。其中LED LED 数码管的控制显示连接数码管的控制显示连接与例与例6.4 6.4 相同,相同,PA PA 口工作于输出方式,作为口工作于输出方式,作为LED LED 数码数码管的段码输出,管的段码输出,LED LED 数码管的位信号接地,因此这个一数码管的位信号接地,因此这个一位的位的LED LED 数码管工作于静态显示方式。图中使用了两个数码管工作于静态显示方式。图中使用了两个按键按键K1
2、K1、K2K2,按键的一端分别与,按键的一端分别与PD2PD2(INT0INT0)、)、PD3PD3(INT1INT1)连接。)连接。INT0 INT0 和和INT1 INT1 作为外部中断的输入,作为外部中断的输入,采用电平变化的下降沿触发方式,当采用电平变化的下降沿触发方式,当K1K1(K2K2)按下时,)按下时,会在会在PD2PD2(PD3PD3)引脚上产生一个高电平到低电平的跳变,)引脚上产生一个高电平到低电平的跳变,触发触发INT0 INT0 或或NT1NT1中断。中断。12系统的功能还是控制一个系统的功能还是控制一个8 8 段数码管显示段数码管显示“0”“0”“F”16“F”16
3、个十六进制的数字。当系统上电个十六进制的数字。当系统上电时,显示时,显示“0”“0”。K1 K1 键的作用是加键的作用是加“1”“1”控制控制键:按键:按1 1 次次K1 K1 键,显示数字加键,显示数字加1 1,依次类推。,依次类推。当第当第15 15 次按次按K1 K1 键时,显示键时,显示“F”“F”,第,第16 16 次按次按K1 K1 键,显示又从键,显示又从“0”“0”开始。开始。K2 K2 键的作用是键的作用是减减1 1 控制键:按控制键:按1 1 次次K1 K1 键,显示数字减键,显示数字减1 1,减到减到“0”“0”后,再从后,再从“F”“F”开始。开始。3#include
4、flash char led_716=0 x3F,0 x06,0 x5B,0 x4F,0 x66,0 x6D,0 x7D,0 x07,0 x7F,0 x6F,0 x77,0 x7C,0 x39,0 x5E,0 x79,0 x71;char counter;/INT0 中断服务程序interrupt EXT_INT0 void ext_int0_isr(void)if(+counter=16)counter=0;/INT1 中断服务程序interrupt EXT_INT1 void ext_int1_isr(void)4if(counter)-counter;else counter=15;vo
5、id main(void)PORTA=0 xFF;DDRA=0 xFF;GICR|=0 xC0;/允许INT0、INT1 中断MCUCR=0 x0A;/INT0、INT1 下降沿触发GIFR=0 xC0;/清除INT0、INT1 中断标志位counter=0;/计数单元初始化为0#asm(sei)/全局中断允许while(1)PORTA=led_7counter;/显示计数单元;5建议使用建议使用CVAVR CVAVR 中的程序生成向导功能来帮助你建中的程序生成向导功能来帮助你建立整个程序的框架,以及芯片的初始化部分的语立整个程序的框架,以及芯片的初始化部分的语句,可以省掉你过多的查看器件手册
6、和考虑寄存句,可以省掉你过多的查看器件手册和考虑寄存器的设置值等。器的设置值等。上面的程序,就是先利用上面的程序,就是先利用CVAVR CVAVR 的程序生成向导功的程序生成向导功能进行配置,然后在它生成的程序框架基础上完能进行配置,然后在它生成的程序框架基础上完成的。程序中定义了一个计数变量成的。程序中定义了一个计数变量countercounter,执行,执行一次一次INT0 INT0 中断服务程序,中断服务程序,counter counter 加加1 1,而执行一次,而执行一次 INT1 INT1 中断服务程序,中断服务程序,counter counter 减减1 1。在主程序中只是显示。
7、在主程序中只是显示countercounter的值。的值。INT0INT0、INT1 INT1 初始化为电平变化的下降沿触发。初始化为电平变化的下降沿触发。6上机练习:显示两位数099,按K1键,加一,按K2键,减一789AVR有不同的中断源。每个中断和复位在程序空间都有独立的有不同的中断源。每个中断和复位在程序空间都有独立的中断向量。所有的中断事件都有自己的使能位。当使能位置位,中断向量。所有的中断事件都有自己的使能位。当使能位置位,且状态寄存器的全局中断使能位且状态寄存器的全局中断使能位I 也置位时,中断可以发生。也置位时,中断可以发生。根据程序计数器根据程序计数器PC 的不同,在引导锁定
8、位的不同,在引导锁定位BLB02 或或BLB12 被被编程的情况下,中断可能被自动禁止。这个特性提高了软件的编程的情况下,中断可能被自动禁止。这个特性提高了软件的安全性。程序存储区的最低地址缺省为复位向量和中断向量。安全性。程序存储区的最低地址缺省为复位向量和中断向量。完整的向量列表见完整的向量列表见 下页下页。列表也决定了不同中断的优先级。向。列表也决定了不同中断的优先级。向量所在的地址越低,优先级越高。量所在的地址越低,优先级越高。RESET 具有最高的优先级,具有最高的优先级,第二个为第二个为INT0 外部中断请求外部中断请求0。通过置位。通过置位MCU 控制寄存器控制寄存器(MCUCR
9、)的的IVSEL,中断向量可以移至引导,中断向量可以移至引导Flash的起始处。编的起始处。编程熔丝位程熔丝位BOOTRST也可以将复位向量移至引导也可以将复位向量移至引导Flash的起始处。的起始处。任一中断发生时全局中断使能位任一中断发生时全局中断使能位I 被清零,从而禁止了所有其被清零,从而禁止了所有其他的中断。用户软件可以在中断程序里置位他的中断。用户软件可以在中断程序里置位I 来实现中断嵌套。来实现中断嵌套。此时所有的中断都可以中断当前的中断服务程序。执行此时所有的中断都可以中断当前的中断服务程序。执行RETI 指指令后令后I 自动置位。自动置位。中断与定时中断与定时10从根本上说有
10、两种类型的中断。第一种由事件触发并置从根本上说有两种类型的中断。第一种由事件触发并置位中断标志。对于这些中断,程序计数器跳转到实际的位中断标志。对于这些中断,程序计数器跳转到实际的中断向量以执行中断处理程序,同时硬件将清除相应的中断向量以执行中断处理程序,同时硬件将清除相应的中断标志。中断标志也可以通过对其写中断标志。中断标志也可以通过对其写”1”的方式来的方式来清除。当中断发生后,如果相应的中断使能位为清除。当中断发生后,如果相应的中断使能位为0,则中断标志位置位,并一直保持到中断执行,或者被软则中断标志位置位,并一直保持到中断执行,或者被软件清除。类似的,如果全局中断标志被清零,则所有已件
11、清除。类似的,如果全局中断标志被清零,则所有已发生的中断都不会被执行,直到发生的中断都不会被执行,直到I 置位。然后挂起的各置位。然后挂起的各个中断按中断优先级依次执行。第二种类型的中断则是个中断按中断优先级依次执行。第二种类型的中断则是只要中断条件满足,就会一直触发。这些中断不需要中只要中断条件满足,就会一直触发。这些中断不需要中断标志。若中断条件在中断使能之前就消失了,中断不断标志。若中断条件在中断使能之前就消失了,中断不会被触发。会被触发。11AVR 退出中断后总是回到主程序并至少执退出中断后总是回到主程序并至少执行一条指令才可以去执行其他被挂起的中行一条指令才可以去执行其他被挂起的中断
12、。要注意的是,进入中断服务程序时状断。要注意的是,进入中断服务程序时状态寄存器不会自动保存,中断返回时也不态寄存器不会自动保存,中断返回时也不会自动恢复。这些工作必须由用户通过软会自动恢复。这些工作必须由用户通过软件来完成。使用件来完成。使用CLI 指令来禁止中断时,指令来禁止中断时,中断禁止立即生效。没有中断可以在执行中断禁止立即生效。没有中断可以在执行CLI 指令后发生,即使它是在执行指令后发生,即使它是在执行CLI 指指令的同时发生的。下面的例子说明了如何令的同时发生的。下面的例子说明了如何在写在写EEPROM 时使用这个指令来防止中断时使用这个指令来防止中断发生以避免对发生以避免对EE
13、PROM 内容的可能破坏。内容的可能破坏。12131415通用中断控制寄存器 GICRBit 1 IVSEL:中断向量选择中断向量选择当当IVSEL 为为0“时,中断向量位于时,中断向量位于Flash 存储器的起始地址;存储器的起始地址;当当IVSEL 为为1“时,中断向量转移到时,中断向量转移到Boot 区的起始地址。实际区的起始地址。实际的的Boot 区起始地址由熔丝位区起始地址由熔丝位BOOTSZ 确定。为了防止无意识地确定。为了防止无意识地改变中断向量表,修改改变中断向量表,修改IVSEL 时需要遵照如下过程:时需要遵照如下过程:1.置位中断向量修改使能位置位中断向量修改使能位IVCE2.在紧接的在紧接的4 个时钟周期里将需要的数据写入个时钟周期里将需要的数据写入IVSEL,同时对,同时对IVCE 写写”0”16Bit 0 IVCE:中断向量修改使能中断向量修改使能改变改变IVSEL 时时IVCE 必须置位。在必须置位。在IVCE 或或IVSEL 写操作之后写操作之后4 个时钟周期,个时钟周期,IVCE 被硬件清零。如前面所述,置位被硬件清零。如前面所述,置位IVCE 将禁将禁止中断止中断17
限制150内