《《ATmega中断》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《ATmega中断》PPT课件.ppt(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第章章外外部部中中断断及及应应用用 本章内容本章内容1.中断的基本概念2.ATmega16的外部中断3.外部中断的应用1.中断的基本概念中断的基本概念日常生活中的中断日常生活中的中断单片机中的中断概念单片机中的中断概念中断技术的一般概念中断技术的一般概念日常生活中的中断日常生活中的中断 你在看书,电话铃响,你在看书,电话铃响,于是你在书上做上记号,于是你在书上做上记号,去接电话,与对方通话;去接电话,与对方通话;门铃响了,有人敲门,你门铃响了,有人敲门,你让打电话的对方稍等一下,让打电话的对方稍等一下,你去开门,并在门旁与来你去开门,并在门旁与来访者交谈,谈话结束,关访者交谈,谈话结束,关好
2、门;回到电话机旁,继好门;回到电话机旁,继续通话,接完电话后再回续通话,接完电话后再回来从做记号的地方接着看来从做记号的地方接着看书。书。看看 书书接接电电话话与与来来访访者者交交谈谈电话铃响敲门声看看 书书接接电电话话 计算机中的中断概计算机中的中断概念念中断由于某一随机事件的发生,计算机暂停原程序的运行,转去执行另一程序(随机事件),处理完毕后又自动返回原程序继续运行。中断源引起中断的原因,或能发生中断申请的来源。主程序计算机现行运行的程序。中断服务子程序处理随机事件的程序。主主程程序序主主程程序序中中断断服服务务程程序序1中中断断服服务务程程序序1中中断断服服务务程程序序2随机事件1随机
3、事件2中断的检测与中断的响应中断程序的转入ATmega16的中断系统 中断技术的一般概中断技术的一般概念念中断的检测与中断的响应中断源产生的中断请求是随机发生无法预料的,中断源产生的中断请求是随机发生无法预料的,CPU必须不断地检测中断输入线上的中断请求信号,且必须不断地检测中断输入线上的中断请求信号,且相邻两次检测不能相隔太长。相邻两次检测不能相隔太长。中断的检测中断的检测在每条指令的最后状态对中断请求进在每条指令的最后状态对中断请求进行一次检测。行一次检测。中断的检测中断的响应(1)CPU检测到了中断请求,并非立即响应,单片机的中断响应是有条件的:中断的检测与中断的响应设立中断请求触发器设
4、立中断请求触发器设立中断屏蔽触发器设立中断屏蔽触发器总中断是开放的总中断是开放的CPU在现行指令结束后响应中断在现行指令结束后响应中断中断的检测与响应示意图(1)机器周期的最机器周期的最后一个状态?后一个状态?现行指连结束?现行指连结束?YNN 由硬件自动完成取下一条指令取下一条指令NN开中断?开中断?YY有中断请求?有中断请求?Y中断的响应(2)当满足“中断的响应(1)”的条件后,CPU立即响应中断,转入中断周期,CPU做以下几件事:关中断关中断保留断点保留断点保护现场保护现场给出中断入口,转入相应的中断服务程序给出中断入口,转入相应的中断服务程序恢复现场恢复现场开中断与返回开中断与返回中断
5、的检测与响应示意图 关中断关中断保护现场保护现场 开中断开中断中断服务中断服务 关中断关中断恢复现场恢复现场 开中断开中断中断返回中断返回断点地址由堆栈弹入断点地址由堆栈弹入PC保护现场和恢复现场的过程中不允许中断,以免现场遭到破坏。保护和恢复现场之后的开中断是为了允许有更高级中断打断此中断服务程序。硬件自动完成(2)当CPU响应中断,在关中断、保留断点后,一个十分重要的问题是如何转入中断服务程序的入口。中断服务程序的转入(1)主主程程序序主主程程序序中中断断服服务务程程序序随机事件中断服务子程序的入口地址入口地址主程序断点地址断点地址中中断断响响应应解决方案:矢量中断解决方案:矢量中断断断中
6、中返返回回中断服务程序的转入(2)中断服务子程序入口地址也称为中断矢量中断矢量或中断向量中断向量。单片机中的中断源矢量地址是固定固定的,不能改动。上电和看门狗复位上电和看门狗复位外部中断外部中断0 0外部中断外部中断1 1T/C2T/C2比较匹配中断比较匹配中断写程序存取器准备写程序存取器准备好中断好中断程序存储器程序存储器使用时,通常在这些入口地址处存放使用时,通常在这些入口地址处存放一条跳转指令,使程序跳转到用户安一条跳转指令,使程序跳转到用户安排的中断服务程序起始地址上去!排的中断服务程序起始地址上去!单片机中的中断源不同中断服务程序的入口地址也不同。0002H0002H0004H000
7、4H0006H0006H0028H0028H0000H0000H0000H0000H外部中断源外部中断的控制的外部中断的外部中断外部中断源外部中断源ATmega16有3个外部中断源:管脚外部中断PD2INT0(外部中断0输入)PD3INT1(外部中断1输入)PB2INT2(外部中断2输入)ATmega16的外部中断用户可以控制:外部中断的控制外部中断的控制vSREG状态寄存器vGICR通用中断控制寄存器vMCUCRMCU控制寄存器vMCUCSRMCU控制和状态寄存器vGIFR通用中断标志寄存器INT0INTF0中断源中断源中断标志位中断标志位 每一个外部中断源都有相应的中断标志位;某一个外部中
8、断源申请中断,相应中断标志位置1。76543210通用中断标志寄存器 GIFR INTF1 INTF0 INTF2 INT1INTF1INT2INTF2中断标志位由CPU自动置“1”当CPU响应中断后,则中断标志位自动 清“0”;也可以通过对其写“1 1”来清“0”状态寄存器 SREG7 6 5 4 3 2 1 0 I T H S V N Z C位7:全局中断使能。当该位置“1”时,使能全局中断,单独的中断使能由各自独立控制寄存器所控制。位60:与中断无关,在C语言编程时由系统管理。在ICCAVR C开发系统中,用#asm(“sei”)汇编语汇编语句句设置全局中断使能,对应的C语言语句语言语句
9、为SREG|=0 x80;一旦CPU响应中断,I标志位由硬件自动清“0”;当执行中断返回时,I标志位由硬件自动置“1”。通用中断控制寄存器 GICR7 6 5 4 3 2 1 0 INT1 INT0 INT2 IVSEL IVCE 位75:外部中断1、0、2使能位。当该位置“1”,且全局中断使能为“1”时,外部中断源的中断请求将被响应。在ICCAVR C开发系统中,可通过编程向导编程向导对位75进行设置。位40:与外部中断的设置无关。MCU控制寄存器 MCUCR7 6 5 4 3 2 1 0 SM2 SE SM1 ISC01 ISC10 ISC00 ISC11 SM0 位30:外部中断1、0中
10、断请求信号有效方式控制位。外部中断1、0中断请求信号方式:ISCx1ISCx0中断请求信号有效方式ISCx1ISCx0中断请求信号有效方式00低电平10下降沿01上升沿或下降沿11上升沿位74:与外部中断的设置无关。在ICCAVR C开发系统中,可通过编程向导编程向导对位30进行设置。MCU控制和状态寄存器 MCUCSR7 6 5 4 3 2 1 0 JTD ISC2 EXTRF BORF PORF WDRF JTRF 位6:外部中断2中断请求信号有效方式控制位。当ISC2清“0”时,INT2引脚上的下降沿信号下降沿信号触发中断请求;当ISC2置“1”时,INT2引脚上的上升沿信号上升沿信号触
11、发中断请求。在ICCAVR C开发系统中,可通过编程向导编程向导对该位进行设置。应用课题:设计一段程序,用于统计 外部INT0的中断次数。3.外部中断应用外部中断应用设计思想外部中断0的输入引脚为PD2,将PC口的第2位设计成方波信号输出,并连接到PD2引脚,作为外部中断请求信号。在中断程序中设计一个计数器,每中断一次,计数器加1,同时显示所计的数。为便于观察中断的信号的请求,将PC口连接到发光二极管的输入端。接线原理图8位LED显示器MAX 7219ATmega16PD2(INT0)PC2(PB4)/SS(PB7)SCK(PB5)MOSIVccE2#include#include#inclu
12、de d:7219_16.c/int x;void main(void)DDRC=0 xFF;/GICR=0 x40;/MCUCR=0 x02;/MCUCSR=0 x00;GIFR=0 x40;/SREG|=0 x80;/spi_7219c();/delay_ms(20);/while(1)PORTC.2=!PORTC.2;/delay_ms(500);/;interrupt EXT_INT0 void ext_int0_isr(void)x+;/xunce_7219(0,x,7);/PC口输出,输出方波,作外部中断信号总中断开放,等价#asm(“sei”)显示芯片初始化输出方波,作为外部中断
13、请求信号包含数码管显示的源程序程序设计与分析INT0中断使能(开放)INT0引脚下降沿触发中断清“0”INTF0标志位等待初始化完成中断发生一次,计数器加1在数码管上显示中断的次数延时,改变此值即改变方波的频率,也即改变中断请求的频率主 程 序中断程序可由编程向导自动生成实验与指导接线:PB口7219XLEDW7219WLEDD7219DPD口PC口LED口指导:本实验程序中用到了有关数码管显示的子程序函数,该子程序是实验装置本实验程序中用到了有关数码管显示的子程序函数,该子程序是实验装置开发者自行编制的,置于开发者自行编制的,置于“7219_16.c”源程序中,所以需用源程序中,所以需用”include”预处预处理语句将其包含进来。理语句将其包含进来。spi_7219c()显示芯片初始化函数xunce_7219(char i,int y,char n)显示函数用扁平线相连用扁平线相连数字编号,显示器的12位显示i显示的数字,显示器的38位显示yn为小数点的位置 0 1 2 3 4 5 6 7 小数点位置n 编号 i数字 y数字 y 的符号数码管显示器数码管显示器8位LED显示器MAX 7219ATmega16PD2PC2(PB4)/SS(PB7)SCK(PB5)MOSIVccE22 3 4 5 6(INT0)7 8 9 110实验结果仿真感谢谢 谢!
限制150内