avr单片机外部中断0,1,2初始化配置及说明

发布者:码字先生最新更新时间:2016-09-14 来源: eefocus关键字:avr单片机  外部中断  初始化配置 手机看文章 扫描二维码
随时随地手机看文章
#include

#include
/*1.状态寄存器SREG

bit7      bit6      bit5      bit4      bit3      bit2      bit1      bit0

   I         T         H         S         V         N         Z         C

I:全局中断使能位。

    在I置位后,单独的中断使能由不同的中断寄存器控制。若I为0,则禁止中断。


MCU 控制寄存器- MCUCR         MCU 控制寄存器包含中断触发控制位与通用 MCU 功能
Bit        7      6     5     4     3     2     1     0 
            SM2    SE    SM1   SM0   ISC11 ISC10 ISC01 ISC00
外部中断 1 由引脚 INT1 激发,如果 SREG 寄存器的 I 标志位和相应的中断屏蔽位置位的话。在检测边沿前 MCU 首先采样 INT1 引脚上的电平。如果选择了边沿触发方式或电平变化触发方式,那么持续时间大于一个时钟周期的脉冲将触发中断,过短的脉冲则不能保证触发中断。如果选择低电平触发方式,那么低电平必须保持到当前指令执行完成。
SE:MCU休眠使能位 
SM1~SM0:MCU休眠模式选择

     SM2             SM1              SM0                  休眠模式

      0               0                0                     空闲

      0               0                1               ADC 噪声抑制模式

      0               1                0                   掉电模式

      0               1                1                   省电模式

      1               0                0                     保留

      1               0                1                     保留

      1               1                0               Standby(1) 模式

      1               1                1             扩展Standby(1) 模式


                           ISC11 ISC10 说明

                             0      0    INT1 为低电平时产生中断请求

                             0      1    INT1 引脚上任意的逻辑电平变化都将引发中断

                             1      0    INT1 的下降沿产生异步中断请求

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

                           ISC01   ISC00 说明

                             0        0    INT0 为低电平时产生中断请求

                             0        1    INT0 引脚上任意的逻辑电平变化都将引发中断

                             1        0    INT0 的下降沿产生异步中断请求

                             1        1    INT0 的上升沿产生异步中断请求
*/

/*MCU 控制与状态寄存器-MCUCSR-
   Bit         7      6     5      4      3      2     1      0 
              JTD    ISC2   –     JTRF WDRF   BORF   EXTRF PORF

                            * Bit 6 – ISC2: 中断 2 触发方式控制

                            异步外中断 2 由外部引脚 INT2 激活,如果 SREG 寄存器的 I 标志和 GICR 寄存器相应的 
                            中断屏蔽位置位的话。若 ISC2 写 0 , INT2 的下降沿激活中断。若 ISC2 写 1 , INT2 的上 
                            升沿激活中断。 INT2 的边沿触发方式是异步的。只要 INT2 引脚上产生宽度大于50ns
        (1s=1000ms,1 ms=1000μs,1μs=1000ns )
                            所示数据的脉冲就会引发中断。若选择了低电平中断,低电平必须保持到当前指令完成, 
                            然后才会产生中断。而且只要将引脚拉低,就会引发中断请求。改变 ISC2 时有可能发生 
                            中断。因此建议首先在寄存器 GICR 里清除相应的中断使能位 INT2 ,然后再改变ISC2。 
                            最后,不要忘记在重新使能中断之前通过对 GIFR 寄存器的相应中断标志位 INTF2 写 '1’ 
                            使其清零。

*/

/*
通用中断控制寄存器- GICR

                             Bit         7      6     5      4      3       2       1       0

                                        INT1   INT0 INT2    –     –      –    IVSEL    IVCE

                            * Bit 7 – INT1: 使能外部中断请求 1

                            当 INT1 为 '1’ ,而且状态寄存器SREG 的 I 标志置位,相应的外部引脚中断就使能了。 
                            MCU通用控制寄存器– MCUCR的中断敏感电平控制1位 1/0 (ISC11与ISC10)决定中断是 
                            由上升沿、下降沿,还是 INT1 电平触发的。只要使能,即使 INT1 引脚被配置为输出, 
                            只要引脚电平发生了相应的变化,中断可将产生。

                            * Bit 6 – INT0: 使能外部中断请求 0

                            当 INT0 为 '1’ ,而且状态寄存器SREG 的 I 标志置位,相应的外部引脚中断就使能了。 
                            MCU通用控制寄存器– MCUCR的中断敏感电平控制0位 1/0 (ISC01与ISC00)决定中断是 
                            由上升沿、下降沿,还是 INT0 电平触发的。只要使能,即使 INT0 引脚被配置为输出, 
                            只要引脚电平发生了相应的变化,中断可将产生。

                           * Bit 5 – INT2: 使能外部中断请求 2

                            当 INT2 为 '1’ ,而且状态寄存器SREG 的 I 标志置位,相应的外部引脚中断就使能了。 
                           MCU通用控制寄存器– MCUCR 的中断敏感电平控制2位 1/0 (ISC2与ISC2)决定中断是由 
                           上升沿、下降沿,还是 INT2 电平触发的。只要使能,即使 INT2 引脚被配置为输出,只 
                           要引脚电平发生了相应的变化,中断可将产生


*/
/*
通用中断标志寄存器- GIFR

                            Bit         7      6     5      4     3      2     1      0

                                       INTF1 INTF0 INTF2   –    –     –    –     –

                           * Bit 7 – INTF1: 外部中断标志 1

                           INT1引脚电平发生跳变时触发中断请求,并置位相应的中断标志INTF1。如果SREG 的位 
                           I以及GICR寄存器相应的中断使能位INT1为”1” ,MCU即跳转到相应的中断向量。进入中 
                           断服务程序之后该标志自动清零。此外,标志位也可以通过写入 ”0” 来清零。

                           * Bit 6 – INTF0: 外部中断标志 0

                           INT0引脚电平发生跳变时触发中断请求,并置位相应的中断标志INTF0。如果SREG 的位 
                           I以及GICR寄存器相应的中断使能位INT0为”1” ,MCU即跳转到相应的中断向量。进入中 
                           断服务程序之后该标志自动清零。此外,标志位也可以通过写入 ”0” 来清零。

                           * Bit 5 – INTF2: 外部中断标志 2

                           INT2引脚电平发生跳变时触发中断请求,并置位相应的中断标志INTF2。如果SREG 的位 
                           I以及GICR寄存器相应的中断使能位INT2为”1” ,MCU即跳转到相应的中断向量。进入中 
                           断服务程序之后该标志自动清零。此外,标志位也可以通过写入 ”0” 来清零。注意,当 
                           INT2中断禁用进入某些休眠模式时,该引脚的输入缓冲将禁用。这会导致INTF2标志设置 
                           信号的逻辑变化

 

*/
//外部中断0向量端口
#pragma interrupt_handler INTER_0:iv_INT0 
//外部中断1向量端口
#pragma interrupt_handler INTER_1:iv_INT1 
//外部中断2向量端口         
#pragma interrupt_handler INTER_2:iv_INT2

void INTER_init_0(unsigned char a)//a取值0-3
{
switch(a)
{
case 0:MCUCR&=~(1< case 1:MCUCR&=~(1< case 2:MCUCR|=1< case 3:MCUCR|=1< default : MCUCR|=1< }
GICR|=(1< GIFR&=~(1< SREG|=0x80;//使能全局中断
}
void INTER_init_1(unsigned char a)//a取值0-3
{
switch(a)
{
case 0:MCUCR&=~(1< case 1:MCUCR&=~(1< case 2:MCUCR|=1< case 3:MCUCR|=(1< default : MCUCR|=1< }
GICR|=(1< GIFR&=~(1< SREG|=0x80;//使能全局中断

}
void INTER_init_2(unsigned char a)
{
if(a)
MCUCSR|=(1< else 
MCUCSR&=~(1<

GICR|=(1< GIFR&=~(1< SREG|=0x80;//使能全局中断
}
void INTER_0(void)
{

//add your code here!


void INTER_1(void)
{

//add your code here!

}
void INTER_2(void)
{

//add your code here!

}

关键字:avr单片机  外部中断  初始化配置 引用地址:avr单片机外部中断0,1,2初始化配置及说明

上一篇:avr单片机USART串口通讯初始化配置及说明
下一篇:AVR端口(DDxn,PORTxn)配置及其说明

推荐阅读最新更新时间:2024-03-16 15:10

STM32-外部中断实验
这一节,我们将向大家介绍如何使用STM32的外部输入中断。通过第1、2节的学习,我们掌握了STM32的IO口最基本的操作。这节我们将介绍作为外部中断输入口,STM32的需要做哪些设置。本节分为如下几个部分: 3.4.1 STM32外部中断简介 3.4.2 硬件设计 3.4.3 软件设计 3.4.4 下载与测试 3.4.1 STM32外部中断简介 STM32的IO口在本章第一节有详细介绍,而外部中断在第二章也有详细的阐述。这里我们将介绍如何将这两者结合起来,实现外部中断输入。 STM32的每个IO口都可以作为中断输入,这点很好用。要把IO口作为外部中断输入,有以下几个步骤: 1)初始化IO口为输入。 这一步设置你要作为外部中断输入
[单片机]
avr单片机 PWM调速程序及原理图
源程序: #include iom16v.h #include macros.h #define uint unsigned int #define uchar unsigned char #define Left OCR1A #define Right OCR1B #define ADD 1.15; //宏定义,加速系数 uchar i; uchar flag; //是否减速标志位 uchar TCRT5000_IN; uint Max_Speed; uchar Min_Speed; /************************************************* 函数名称:Init
[单片机]
51单片机的外部中断触发方式简介
51单片机的外部中断有两种触发方式可选:电平触发和边沿触发。选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向CPU请求中断。选择边沿触发方式时,单片机在上一个机器周期检测到中断源口线为高电平,下一个机器周期检测到低电平,即置位中断标志,请求中断。 这个原理很好理解。但应用时需要特别注意的几点: 1) 电平触发方式时,中断标志寄存器不锁存中断请求信号。也就是说,单片机把每个机器周期的S5P2采样到的外部中断源口线的电平逻辑直接赋值到中断标志寄存器。标志寄存器对于请求信号来说是透明的。这样当中断请求被阻塞而没有得到及时响应时,将被丢失。换句话说,要使电平触发的中断被CPU响应并执行,必须保证
[单片机]
stm32 外部中断库函数实现全程分析
前题:   闭门造车,两周了,经过各种的思考和求问,反复阅读了 M3权威指南 和 stm32不完全手册 的相关章节,以及开发板厂商的实验例程,对stm32这块中断终有所悟,是以记之。   至于中断的什么优先级,什么优先级分组,使能之类的原理,就不再赘述。这里主要是记载以下如何使用中断,以及中断配置函数的实现过程,其中并叙述我曾经的疑惑和感悟。   我的开发板里的中断例程是用按键控制一个灯亮和灭的两个状态。   这个例程的实现过程如下描述: 第一步,将一个I/O口配置成中断输入模式。      这里需要注意的是,GPIO本身是没有中断功能神马的。如果硬要使他产生中断输入方式,就得将相应的端口映射到相应的外部事件上去。而
[单片机]
stm32 <font color='red'>外部中断</font>库函数实现全程分析
基于AVR单片机的语音识别系统设计方案
引言 传统的人机交互依靠复杂的键盘或按钮来实现,随着科技的发展,一些新型的人机交互方式也随之诞生,带给人们全新的体验。基于语音识别的人机交互方式是目前热门的技术之一。但是语音识别功能算法复杂、计算量大,一般在计算机上实现,即使是嵌入式方面,多数方案也需要运算能力强的ARM或 DSP ,并且外扩RAM、FLASH等资源,增加了硬件成本,这些特点无疑限制了语音识别技术的应用,尤其是嵌入式领域。 本系统采用的主控MCU为Atmel公司的ATMEGA128,语音识别功能则采用ICRoute公司的单芯片LD3320。LD3320内部集成优化过的语音识别算法,无需外部FLASH,RAM资源,可以很好地完成非特定人的语音识别任务。
[单片机]
基于<font color='red'>AVR单片机</font>的语音识别系统设计方案
如何使用AVR单片机进行数字PID调节器的设计
数字PID调节器具有操作简单,控制精度准确,安全可靠性高等优点,广泛应用于工业生产过程中。提出一种以AVR单片机ATmega16为核心的数字PID调节器,该调节器充分利用了高性能AVR单片机的片内资源及外围扩展电路,能够接收多种类型的测量信号,具有较强的在线修改和丰富的控制功能,并且采取硬件和软件双重抗干扰措施提高了调节器的可靠性。 在连续生产过程控制中,按偏差的比例(P)、积分(I)、微分(D)进行控制的PID调节器是应用最为广泛的一种自动控制器。 它具有原理简单、易于实现、适用面广等优点。在计算机用于生产过程控制之前,模拟PID控制器一直占主导地位。单片机的出现,使以单片机为核心的数字PID调节器迅速成为应用最广泛的自
[单片机]
如何使用<font color='red'>AVR单片机</font>进行数字PID调节器的设计
NVIC寄存器组中的中断挂起SETPEND与消除CLRPEND,与外部中断挂起寄存器EXTI_PR
STM32的中断控制是分级管理的,CM3内核中的NVIC是顶层,对每个通道都设有1BIT的中断挂起位, 但每个通道可能不止一个中断源,比如EXTI5_9_IRQn,对NVIC而言,只算一个通道,但实际包含有5个中断源, 因此,下层就必须实现对这多个中断源的独立监控,这就是EXTI- PR中的挂起位了。 STM32的中断系统可以理解为分两级管理, 顶层当然是CM3内核强大的NVIC,下层就是形形色色的片上外设了, 对于NVIC来说,它最大可以管理256个不同的中断通道, 这256个中断,内核自留了16个,剩下的通称为外部中断(注意与EXTI不要混淆,EXTI是外部中断中的一小部分,全称为外部线中断),外部中断可以多达240个(具
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved