AVR单片机外部中断0、1、2详解.docx

AVR单片机外部中断0、1、2详解.docx

ID:61766283

大小:21.84 KB

页数:15页

时间:2021-03-19

AVR单片机外部中断0、1、2详解.docx_第1页
AVR单片机外部中断0、1、2详解.docx_第2页
AVR单片机外部中断0、1、2详解.docx_第3页
AVR单片机外部中断0、1、2详解.docx_第4页
AVR单片机外部中断0、1、2详解.docx_第5页
资源描述:

《AVR单片机外部中断0、1、2详解.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、AVR单片机外部中断0、1、2详解中断基本包含:1.中断源2.中断向量(中断入口地址)3.中断优先级4.中断函数除此之外,在单片机中,中断的执行或者中断的触发必须符合以下的规则:中断触发

2、执行=全局中断使能位AND中断源使能位AND中断源标志位单片机内部中断的触发必须完成,全局中断使能,中断源使能,中断源标志位置一等条件。除此之外,如果是外部中断0,1,2(INT0,1,2),必须设置引脚触发的规则。最后呢,就是需要在程序里建立处理中断的中断函数。在编程的时候的步骤大致如下:(无视INT2)1.初始化PD2,PD3为输入状态。DDRD

3、=BIT(2)

4、BIT(3);2.

5、设置INT0,1引脚触发的规则,实验中为低电平触发。MCUCR=0xF0;3.设置INT0,1中断源使能位为逻辑1。GICR

6、BIT(7)

7、BIT(6);4.清除INT0,1的中断标志位(软件写入,逻辑1为清除)。GIFR

8、=BIT(7);BIT(6);5.全局中断允许位使能。SREG

9、=BIT(7);6.编辑中断处理函数。/*ATmega16提供3个外部中断,分别由INT0、INT1和INT2引脚触发。需要注意的是,如果将ATmega16设置为允许外部中断,则即使把INT0、INT1和INT2引脚设置为输出方式,外部中断仍然会被触发。外部中断可选择采用上升沿触发、下降

10、沿触发和低电平触发(INT2中断只能采用沿触发方式。*/#include;#include;#include"smg.h"/*1.状态寄存器SREGbit7bit6bit5bit4bit3bit2bit1bit0ITHSVNZCI:全局中断使能位。在I置位后,单独的中断使能由不同的中断寄存器控制。若I为0,则禁止中断。MCU控制寄存器-MCUCRMCU控制寄存器包含中断触发控制位与通用MCU功能Bit76543210SM2SESM1SM0ISC11ISC10ISC01ISC00外部中断1由引脚INT1激发,如果SREG寄存器的I标志位和相应的中断屏蔽

11、位置位的话。在检测边沿前MCU首先采样INT1引脚上的电平。如果选择了边沿触发方式或电平变化触发方式,那么持续时间大于一个时钟周期的脉冲将触发中断,过短的脉冲则不能保证触发中断。如果选择低电平触发方式,那么低电平必须保持到当前指令执行完成。SE:MCU休眠使能位SM1~SM0:MCU休眠模式选择SM2SM1SM0休眠模式000空闲001ADC噪声抑制模式010掉电模式011省电模式100保留101保留110Standby(1)模式111扩展Standby(1)模式ISC11ISC10说明00INT1为低电平时产生中断请求01INT1引脚上任意的逻辑电平变化都将引发中断1

12、0INT1的下降沿产生异步中断请求11INT1的上升沿产生异步中断请求外部中断0由引脚INT0激发,如果SREG寄存器的I标志位和相应的中断屏蔽位置位的话。在检测边沿前MCU首先采样INT0引脚上的电平。如果选择了边沿触发方式或电平变化触发方式,那么持续时间大于一个时钟周期的脉冲将触发中断,过短的脉冲则不能保证触发中断。如果选择低电平触发方式,那么低电平必须保持到当前指令执行完成ISC01ISC00说明00INT0为低电平时产生中断请求01INT0引脚上任意的逻辑电平变化都将引发中断10INT0的下降沿产生异步中断请求11INT0的上升沿产生异步中断请求*//*MCU控

13、制与状态寄存器-MCUCSR-Bit76543210JTDISC2–JTRFWDRFBORFEXTRFPORF*Bit6–ISC2:中断2触发方式控制异步外中断2由外部引脚INT2激活,如果SREG寄存器的I标志和GICR寄存器相应的中断屏蔽位置位的话。若ISC2写0,INT2的下降沿激活中断。若ISC2写1,INT2的上升沿激活中断。INT2的边沿触发方式是异步的。只要INT2引脚上产生宽度大于50ns(1s=1000ms,1ms=1000μs,1μs=1000ns)所示数据的脉冲就会引发中断。若选择了低电平中断,低电平必须保持到当

14、前指令完成,然后才会产生中断。而且只要将引脚拉低,就会引发中断请求。改变ISC2时有可能发生中断。因此建议首先在寄存器GICR里清除相应的中断使能位INT2,然后再改变ISC2。最后,不要忘记在重新使能中断之前通过对GIFR寄存器的相应中断标志位INTF2写'1’使其清零。*//*通用中断控制寄存器-GICRBit76543210INT1INT0INT2–––IVSELIVCE*Bit7–INT1:使能外部中断请求1当INT1为'1’,而且状态寄存器SREG的I标志置

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。