AVR单片机新手入门必看教程课件

上传人:ui****22 文档编号:253023827 上传时间:2024-11-27 格式:PPTX 页数:29 大小:278KB
返回 下载 相关 举报
AVR单片机新手入门必看教程课件_第1页
第1页 / 共29页
AVR单片机新手入门必看教程课件_第2页
第2页 / 共29页
AVR单片机新手入门必看教程课件_第3页
第3页 / 共29页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,恭喜你:选择了正确的AVR学习资料,ATmega16的中断系统,ATmega16的中断源和中断向量,AVR一般拥有数十个中断源,每个中断源都有独立的中断向量,。,AVR的程序存储区的最低端,即从Flash地址的0x0000开始用于放置中断向量,称作中断向量区。,各种型号的AVR中断向量区的大小是不同的,由下式决定:,中断向量区大小 = 中断源个数 每个中断向量占据字数,AVR的21个中断中,包含1个非屏蔽中断(RESET)3个外部中断(INT0、INT1、INT2)和17个内部中断,,1.外部中断,INT0、INT1和INT2是3个外部中断源,它们是分别由芯片外部引脚PD2、PD3、PB2上的电平的变化或状态触发的。通过对控制寄存器MCUCR和控制与状态寄存器MCUCSR的配置,外部中断可以定义为由PD2、PD3、PB2引脚上的电平的下降沿、上升沿、逻辑电平变化,或者低电平(INT2仅支持电平变化的边沿触发)触发。,3个定时计数器触发的内部中断,MER2 COMP,TIMER2 OVF 定时溢出2,TIMER1 CAPT 扑捉溢出1,TIMER1 COMPA 定时比较A,TIMER1 COMPB 定时比较B,TIMER1 OVF 定时溢出2,TIMER0 OVF 定时溢出0,TIMER0 COMP 定时比较0,同步/异步串行接收和转发器USART的内部中断,USART RXC 接收一个字节,USART TXC 发送一个字节,USART UDRE 发送数据寄存器为空,其它内部中断,SPI STC为内部SPI串行接口传送结束中断,ADC为ADC单元完成一次A/D转换的中断,EE_RDY是片内的EEPROM就绪(对EEPROM的操作完成)中断,ANA_COMP是由内置的模拟比较器输出引发的中断,TWI为内部两线串行接口的中断,SPM_RDY是对片内的Flash写操作完成中断,ATmega16的中断控制,中断优先级的确定,1.在AVR单片机中,一个中断在中断向量区中的位置决定了 它的优先级,位于低地址的中断优先级高于位于高地址的中断。2AVR单片机采用固定的硬件优先级方式,不支持通过软件对中断优先级的重新设定。,AVR有两种机制不同的中断:,带有中断标志的中断(可挂起),不带中断标志的中断(不能挂起)。,中断标志,在AVR中,大多数的中断都属于带中断标志的中断。,中断标志概念,每个中断源在其I/O空间寄存器中具有自己的一个中断标志位。AVR的硬件系统在每个时钟周期内都会检测(接受)外部(内部)中断源的中断条件。一旦中断条件满足,AVR的硬件就会将置位相应的中断标志位(置为“1”),表示向MCU提起中断请求。,中断标志清除,中断标志位一般在MCU响应该中断时,由,硬件自动清除,,或在中断服务程序中通过,读/写专门数据寄存器,的方式自动清除。,中断标志位除了由硬件自动清除外也可以使用软件指令清除,注意:如用,软件方法清除,,清除的方法是对其写“1”。,不带(不设置)中断标志的中断:,如配置为低电平触发的外部中断即为此类型的中断,低电平中断的重要应用是唤醒处于休眠工作模式的MCU。,三、中断屏蔽与管理,为全局中断允许控制位:,中断允许的总控制位I(标志寄存器SREG中的I标志位SREG.7),每一个中断源都设置了独立的中断允许位,AVR对中断采用两级控制方式。,这些中断允许位分散位于各中断源所属模块的控制寄存器中。,AVR响应一个可屏蔽中断源(假定为A中断)的中断的条件是:,1.响应A中断 = 全局中断允许标志 AND 中断A允许标志 AND 中断A标志,2.AVR复位后,各个中断允许位以及全局中断允许位均被清零,这保证了程序在开始执行时(一般程序开头是对芯片内部以及外围系统的初始化配置)不会受到中断的干扰。,3.在AVR复位后的用户初始化程序中,需要先对需要使用的中断源进行必要的配置。待系统初始化过程结束后再置位I,使系统进入正常的工作状态,开始响应中断请求。,由于AVR在响应一个中断的过程中通过硬件将I标志位自动清零,这样就阻止了MCU响应其它中断。因此通常情况下,AVR是不能自动实现中断嵌套的。如要系统中必须要实现中断嵌套的应用,用户可在中断服务程序中使用指令将全局中断允许位开放,通过间接的方式实现中断的嵌套处理。,四、中断嵌套,外部中,断,断触发,方,方式和,特,特点,INT0、INT1,、,、INT2的,中,中断触,发,发方式,取,取决于,用,用户程,序,序对MCU控,制,制寄存,器,器MCUCR,以,以及MCU控,制,制与状,态,态寄存,器,器MCUCSR的设,定,定。其,中,中,INT0,和,和INT1支,持,持4种,中,中断触,发,发方式,,,,INT2支,持,持2种,。,。,任意电,平,平变化,触,触发表,示,示只要,引,引脚上,有,有逻辑,电,电平的,变,变化就,会,会产生,中,中断申,请,请(不,管,管是上,升,升沿还,是,是下降,沿,沿都引,起,起中断,触,触发),4种触,发,发方式,中,中,还,有,有以下,的,的一些,不,不同的,特,特点:,低电平,触,触发是,不,不带中,断,断标志,类,类型的,,,,即只,要,要中断,输,输入引,脚,脚PD2或PD3保,持,持低电,平,平,那,么,么将一,直,直会产,生,生中断,申,申请。,2.MCU对INT0和INT1,的,的引脚,上,上的上,升,升沿或,下,下降沿,变,变化的,识,识别(,触,触发),,,,需要I/O,时,时钟信,号,号的存,在,在(由I/O,时,时钟同,步,步检测,),),属,于,于同步,边,边沿触,发,发的中,断,断类型,。,。,3.MCU对INT2的引,脚,脚上的,上,上升沿,或,或下降,沿,沿变化,的,的识别,(,(触发,),),以,及,及低电,平,平的识,别,别(触,发,发)是,通,通过异,步,步方式,检,检测的,,,,不需,要,要I/O时钟,信,信号的,存,存在。,因,因此,,这,这类触,发,发类型,的,的中断,经,经常作,为,为外部,唤,唤醒源,,,,用于,将,将处在Idle休眠,模,模式,,以,以及处,在,在各种,其,其它休,眠,眠模式,的,的MCU唤醒,。,。这是,由,由于除,了,了在空,闲,闲(Idel,),)模式,时,时,I/O时,钟,钟信号,还,还保持,继,继续工,作,作,在,其,其它各,种,种休眠,模,模式下,,,,I/O时钟,信,信号均,是,是处在,暂,暂停状,态,态的。,4.如,果,果使用,低,低电平,触,触发方,式,式的中,断,断作为,唤,唤醒源,,,,将MCU从,掉,掉电模,式,式(Power-down,),)中唤,醒,醒时,,电,电平拉,低,低后仍,需,需要维,持,持一段,时,时间才,能,能将MCU唤,醒,醒,这,是,是为了,提,提高了MCU,的,的抗噪,性,性能。,拉,拉低的,触,触发电,平,平将由,看,看门狗,的,的时钟,信,信号采,样,样两次,(,(在通,常,常的5V电源,和,和25,时,,看,看门狗,的,的时钟,周,周期为1s,),)。如,果,果电平,拉,拉低保,持,持2次,采,采样周,期,期的时,间,间,或,者,者一直,保,保持到MCU,启,启动延,时,时(start-up time,),)过程,之,之后,MCU,将,将被唤,醒,醒并进,入,入中断,服,服务。,如,如果该,电,电平的,保,保持时,间,间能够,满,满足看,门,门狗时,钟,钟的两,次,次采样,,,,但在,启,启动延,时,时(start-up time,),)过程,完,完成之,前,前就消,失,失了,,那,那么MCU仍,将,将被唤,醒,醒,但,不,不会触,发,发中断,进,进入中,断,断服务,程,程序。,所,所以,,为,为了保,证,证既能,将,将MCU唤醒,,,,又能,触,触发中,断,断,中,断,断触发,电,电平必,须,须维持,足,足够长,的,的时间,。,。,5.如,果,果设置,了,了允许,响,响应外,部,部中断,的,的请求,则即,便,便是引,脚,脚PD2、PD3、PB2,设,设置为,输,输出方,式,式工作,引脚,上,上的电,平,平变化,也,也会产,生,生外部,中,中断触,发,发请求,。,。这一,特,特性为,用,用户提,供,供了使,用,用软件,产,产生中,断,断的途,径,径。,与外部,中,中断相,关,关的寄,存,存器和,标,标志位,在ATmega16,中,中,与,外,外部中,断,断有关,的,的寄存,器,器有4,个,个,共,有,有11,个,个标志,位,位。其,作,作用分,别,别是3,个,个外部,中,中断各,自,自的中断标,志,志位,,中,中断允,许,许控制,位,位,和用于定义外,部,部中断,的,的触发,类,类型。,1)MCU,中,中断方,式,式控制,寄,寄存器,MCUCR,MCU,控,控制寄,存,存器MCUCR的低4位为INT0(ISC01,、,、ISC00,),)和INT1(ISC11,、,、ISC10,),)中断,触,触发类,型,型控制,位,位,MCU,对,对INT0、INT1引脚,上,上电平,值,值的采,样,样在边,沿,沿检测,前,前。,1.如,果,果选择,脉,脉冲边,沿,沿触发,或,或电平,变,变化中,断,断的方,式,式,那么,在,在INT0、INT1引脚,上,上的一,个,个脉宽,大,大于一,个,个时钟,周,周期的,脉,脉冲变,化,化将触,发,发中断,,,,过短,的,的脉冲,则,则不能,保,保证触,发,发中断,。,。,2.如,果,果选择,低,低电平,触,触发中,断,断,那么低,电,电平必,须,须保持,到,到当前,指,指令执,行,行完成,才,才触发,中,中断。,如,如果是,低,低电平,触,触发方,式,式的话,,,,中断,请,请求将,一,一直保,持,持到引,脚,脚上的,低,低电平,消,消失为,止,止。,2)MCU控,制,制和状,态,态寄存,器,器MCUCSR,MCU,控,控制和,状,状态寄,存,存器MCUCSR中,的,的第6,位,位(ISC2,),)为INT2的中,断,断触发,类,类型控,制,制位,3)通,用,用中断,允,允许控,制,制寄存,器,器GICR,通用中,断,断控制,寄,寄存器GICR的高3位为INT0、INT1,和,和INT2的,中,中断允,许,许控制,位,位 。GICR寄存,器,器中相,应,应的中,断,断允许,位,位被置,为,为“1,”,”,当,外,外部引,脚,脚INT0(,或,或INT1、,或,或INT2),上,上的电,平,平变化,时,时,MCU将,会,会响应,相,相应的,中,中断请,求,求。,4),通,通用中,断,断标志,寄,寄存器,GIFR,中断标,志,志寄存,器,器GIFR的,高,高3位,为,为INT0、INT1和INT2,的,的中断,标,标志位,当INT2.0引,脚,脚上的,有,有效事,件,件满足,中,中断触,发,发条件,后,后,INTF2.0位会,变,变成“1”。,如,如果此,时,时SREG寄,存,存器中I =1,,以,以及GICR,寄,寄存器,中,中的INTn,被,被置为,“,“1”,,,,MCU,将,将响应,中,中断请,求,求,跳,至,至相应,的,的中断,向,向量处,开,开始执,行,行中断,服,服务程,序,序,同,时,时硬件,自,自动将INTFn标,志,志位清,零,零。,用户可,以,以使用,指,指令将INTFn清,除,除,清,除,除的方,式,式是写,逻,逻辑“1”到INTFn,,将,将标志,清,清零。,当,当INT0(INT1)设,置,置为低,电,电平触,发,发方式,时,时,标,志,志位INTF0(INTF1)始,终,终为“0”,,这,这并不,意,意味着,不,不产生,中,中断请,求,求,而,是,是低电,平,平触发,方,方式是,不,不带中,断,断标志,类,类型的,中,中断触,发,发。,在系统,程,程序的,初,初始化,部,部分中,对,对外部,中,中断进,行,行设置,时,时(定,义,义或改,变,变触发,方,方式),,,,应先,将,将GICR寄,存,存器中,该,该中断,的,的中断,允,允许位,清,清零,,禁,禁止MCU响,应,应该中,断,断后再,设,设置ISCn,位,位。,而在开,放,放中断,允,允许前,,,,一般,应,应通过,向,向GIFR寄,存,存器中,的,的中断,标,标志位INTFn写,入,入逻辑,“,“1”,,,,将该,中,中断的,中,中断标,志,志位清,除,除,然,后,后开放,中,中断。,这,这样可,以,以防止,在,在改变ISCn的过,程,程中误,触,触发中,断,断。,中断服,务,务程序,的,的编写,中,中断服,务,务程序,的,的编写,编写中,断,断服务,程,程序的,两,两个基,本,本原则,:,:,1.全,面,面、仔,细,细考虑,中,中断现,场,场的保,护,护和恢,复,复。,2.中,断,断服务,程,程序应,尽,尽可能,的,的短,不同高,级,级语言,开,开发环,境,境中对,编,编写中,断,断服务,程,程序的,语,语法规,则,则和处,理,理方法,是,是不同,的,的。用,户,户在编,写,写中断,服,服务程,序,序前,,应,应对所,使,使用开,发,发平台,,,,中断,程,程序的,编,编写方,法,法,中,断,断的处,理,理方法,等,等有较,好,好的了,解,解。,使用ICCAVR等,高,高级语,言,言编写,中,中断服,务,务程序,时,时,用,户,户通常,不,不必考,虑,虑中断,现,现场保,护,护和恢,复,复的处,理,理,这,是,是由于,编,编译器,在,在编译,中,中断服,务,务程序,的,的源代,码,码时,,会,会在生,成,成的目,标,标代码,中,中自动,加,加入相,应,应的中,断,断现场,保,保护和,恢,恢复的,指,指令,,同,同时自,动,动采用RETI指令,作,作为中,断,断服务,的,的返回,指,指令。,在ICCAVRR中,,只,只要用#pragma,伪,伪指令和,中,中断向量说,明,明中断服务,程,程序的入口,地,地址。,中断服务函,数,数按以下格,式,式定义:,#pragma interrupt_handler:,如:INT0中断服务,程,程序,#pragma interrupt_handlerint0_isr:2,voidint0_isr,(,(void,),),中断服,务,务程序,C编译器会,自,自动帮助用,户,户产生正确,的,的中断向量,处,处的以及初,始,始化堆栈指,针,针的代码,,同,同时在中断,服,服务程序中,自,自动生成中,断,断现场保护,和,和恢复(函,数,数中用到的,全,全部寄存器,保,保护)及使,用,用RETI,指,指令返回。,图中使用了,两,两个按键K1、K2,,按,按键的一端,分,分别与PD2(INT0)、PD3(INT1)连接。INT0和INT1作,为,为外部中断,的,的输入,采,用,用电平变化,的,的下降沿触,发,发方式,当K1(K2,),)按下时,,会,会在PD2,(,(PD3),引,引脚上产生,一,一个高电平,到,到低电平的,跳,跳变,触发INT0或INT1中,断,断。,外部中断应,用,用实例,硬件电路,应用中断应,举,举例:,定时扫描数,码,码管,INT0、INT1按键下,降,降沿出发中,断,断,使键值,分,分别加减1,/*,功,功,能,能: INT0中断函,数,数,使键值,加,加1*/,#pragma interrupt_handlerInt0_isr:2,voidInt0_isr(void),delay_nms(20);/延,时,时大约20,毫,毫秒,去抖,if(KEY0=0)/再次,判,判断按键是,否,否按下,while(KEY0=0);/等待,按,按键释放,Key_Number+;/键值,加,加1,/*,功,功,能,能: INT1中断函,数,数,使键值,减,减1*/,#pragma interrupt_handlerInt1_isr:3,voidInt1_isr(void),delay_nms(20);/,延,延时大约20毫秒,去,抖,抖,if(KEY1=0)/再次判,断,断按键是否,按,按下,while(KEY1=0);/等待,按,按键释放,Key_Number-;/键值减1,/*,功,功,能,能: Timer0溢,出,出中断,数,码,码管扫描*/,#pragma interrupt_handlerTimer0_ovf_isr:10,voidTimer0_ovf_isr(void),Display_One_SMG(2,Key_Number/100);,/在第三,位,位数码管显,示,示百位,Display_One_SMG(1,Key_Number%100/10);,/在第二,位,位数码管显,示,示十位,Display_One_SMG(0,Key_Number%100%10);,/在第一,位,位数码管显,示,示个位,/*,功,功,能,能: Timer0初,始,始化程序*/,voidTimer0_Init(void),TCCR0= 0x00;/,停,停止Timer0工作,TCNT0= 0x00;/清TCNT0,TCCR0|=(1CS02);/,启,启动Timer0,系,统,统时钟256分频,/主函数名,称,称: main()*/,/*,功,功,能,能: 定时,扫,扫描数码管,INT0,、,、INT1,按,按键 */,/*,下,下降沿出发,中,中断,使键,值,值分别加、,减,减1。*/,voidmain(void),CLI();/,关,关闭中断,CPU_Init();/初始化CPU,Timer0_Init();/初始,化,化定时器0,MCUCR|=(1ISC11)|(1ISC01);,/设置INT0、INT1下降,沿,沿触发中断,GICR|=(1INT1)|(1INT0);/使,能,能INT0,、,、INT1,中,中断,TIMSK|=(1TOIE0);/使能Timer0溢,出,出中断,SEI();/打开,中,中断,while(1 )/,动,动态暂停,演讲完毕,,谢,谢谢观看!,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 营销创新


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!