1.ATmega16单片机具有21个中断源。每个中断源都有一个独立的中断向量作为中断服务程序的入口地址,而且所有的中断源都有自己独立的使能位。如果全局中断I和相应的中断使能位都置位,则在中断标志位置位时将执行中断服务程序。
2.一个中断产生后,全局中断使能位I将被清零,后的中断被屏蔽。用户可以在中断服务程序里面对I置位从而开全局中断,在中断返回后全局中断I将重新置位。
3.ATmega16单片机中断向量表介绍:
4.AVR单片机外部中断
- ATmega16单片机具有3个外部中断,分别是INT0,INT1,INT2,这3个外部中断都是有单片机的引脚触发的。
- 需要注意的是,如果允许外部中断的话,即使INT0,INT1,INT2这3个引脚都设置为输出方式,外部中断也会触发。
- INT0,INT1外部中断可以选择的触发方式有上升沿触发、下降沿触发以及低电平触发;INT2只有跳变沿触发(即上升沿触发或下降沿触发),没有电平触发。
- 使用外部中断涉及到的寄存器有:MCU控制寄存器MCUCR,MCU控制欲状态寄存器MCUCSR,通用中断控制寄存器GICR,通用中断状态寄存器GIFR。
ISC11和ISC10——外部中断1,ISC01和ISC00——外部中断0
只需关心ISC2位,为零时下降沿触发中断;为1时上升沿触发中断。
第7位——全中断使能位
各单独中断源中断使能
使用外部中断函数可以不用关心此寄存器,也可以软件查询。
5.
6.外部中断的使用步骤
- 设置外部中断触发方式(寄存器MCUCR——INT0、INT1,MCUCSR——INT2)
- 使能外部中断(寄存器GICR)
- 设置中断管脚(是否需要上拉电阻,若是,则设置INT0、INT1、INT2所在IO口引脚为输出且上拉电阻)
- 打开全局中断(寄存器SREG)
- 选择中断号,写中断服务程序。
关键字:AVR 单片机 中断
引用地址:
嵌入式学习笔记20——AVR单片机之中断
推荐阅读最新更新时间:2024-03-16 14:53
【STM32电机方波】记录2——NVIC中断基本设置
NVIC概念:提供中断控制器,用于总体管理异常,称之为“内嵌向量中断控制器”。简单来说,就是MCU提供、处理内部中断的模块。 NVIC库函数: 中断优先级: 在配置NVIC之前得弄懂一个概念:中断优先级,即中断的执行顺序。中断优先级中,分为抢占式优先级(先占优先级)和响应优先级(从优先级)。抢断优先级,顾名思义,能再别人中断是抢占别人中断,实现中断嵌套。响应优先级则只能排队,不能抢在前面插别人的对,即不能嵌被嵌套。 STM32中指定优先级的寄存器为4位,其定义如下: 第0组:所有4位用于指定响应优先级 NVIC_PriorityGroup_0 = 选择第0组 第1组:最高1位用于指定抢占式优先级,最低3位用于指定响应优先级
[单片机]
如何使用C语言实现51单片机模拟I2C总线
电路原理图 EEPROM为ATMEL公司的AT24C01A。单片机为ATMEL公司的AT89C51。 软件说明 C语言为Franklin C V3.2。将源程序另存为testi2c.c,用命令 C51 testi2c.c L51 TESTI2C.OBJ OHS51 TESTI2C 编译,连接,得到TESTI2C.HEX文件,即可由编程器读入并进行写片,实验。 3.源程序 #include 《reg51.h》 #include 《intrins.h》 #define uchar unsigned char #define uint unsigned int #define AddWr 0xa0 /*器件地址选择及写标志*/ #d
[单片机]
AMPIRE12864液晶C语言代码
#include iom16v.h #include macros.h #define uchar unsigned char #define uint unsigned int #define RS_H() PORTD|=BIT(4); #define RS_L() PORTD&=~BIT(4); #define RW_H() PORTD|=BIT(5); #define RW_L() PORTD&=~BIT(5); #define E_H() PORTD|=BIT(6); #define E_L() PORTD&=~BIT(6); #define CS1_L() PORTA&=~BIT(6);//左屏 #
[单片机]
51单片机通过WIFI模块ESP8266控制LED灯
一、系统方案 手机APP通过ESP8266 WIFI模块与51单片机通信控制LED灯的开关。下位机由单片机、ESP8266模块和LED灯组成,上位机由Android手机APP承担。我们在APP上发送LED灯的开关控制指令,ESP8266将收到的数据发送给单片机,从而实现对LED灯进行开关控制。 设计好的实物是这个样子: 二、硬件设计 ESP8266模块作为一个透传模块使用,RXD、TXD分别连接51单片机的TXD和RXD,VCC和CH_PD管脚接3.3V电压,GND接地,只需要连接这些管脚,ESP8266模块就可以正常工作了。在单片机P2口上连接了三个5mm的LED灯,分别是红黄蓝三种颜色,我们的目的是通过手机A
[单片机]
51单片机STC89C52控制LED跑马灯左移(使用C51自带库_crol_()实现)
/*-----------------------包含头文件区域-------------------------*/ #include reg52.h //单片机头文件 #include intrins.h //C51自带库头文件 /*-----------------------函数声明区域---------------------------*/ void delay(unsigned int xms);//延时函数声明 /*-----------------------主函数区域-----------------------------*/ void main() { unsigned char i;/
[单片机]
基于单片机仿真器的设计详解
仿真器是什么 仿真器(emulator)以某一系统复现另一系统的功能。与计算机模拟系统(Computer Simula TI on)的区别在于,仿真器致力于模仿系统的外在表现、行为,而不是模拟系统的抽象模型。 仿真器可以替代你的目标系统中的MCU,仿真其运行。 仿真器运行起来和实际的目标处理器一样,但是增加了其它功能,使你能够通过桌面计算机或其它调试界面来观察MCU中的程序和数据,并控制MCU的运行。 单片机仿真器的作用 单片机仿真器是一种在电子产品开发阶段代替单片机芯片进行软硬件调试的开发工具。配合集成开发环境使用仿真器可以对单片机程序进行单步跟踪调试,也可以使用断点、全速等调试手段,并可观察各种变量、RAM
[单片机]
基于单片机控制的自动停车收费管理系统
0 引言 随着经济的增长,越来越多的人加入了购车行列。汽车数量的剧增和停车场地的相对短缺,使得停车场的管理收费问题凸现。特别是大型超市的临时停车场管理收费更加困难。 1 现有停车场收费管理系统 目前的停车场收费管理系统通常采用以下两种计费方式: (1)摄像计费方式:在停车场出入口分别放置一台摄像机,通过摄像机摄下汽车车牌号码,送单片机或者电脑处理。再通过单片机计算停车时间和费用,并控制大门开启。该方案信息量大,要求具有较大的存储容量。软件设计复杂,成本高。 (2)刷卡计费方式:车主到指定地点办理IC卡,通过打卡进出停车场,并通过IC卡缴费。但该方式更适合于有长期固定停放车位的停车场。 为了解
[单片机]
单片机的快速启动技术
系统硬件初始化 系统上电或复位后,程序从位于地址0x0的Reset Exception Vector处开始执行,因此需要在这里放置Bootloader的第一条指令:b ResetHandler,跳转到标号为ResetHandler处进行第一阶段的硬件初始化,主要内容为:关看门狗定时器,关中断,初始化PLL和时钟,初始化存储器系统。执行完以上程序后,系统进行堆栈和存储器的初始化。系统堆栈初始化取决于用户使用了哪些中断,以及系统需要处理哪些错误类型。一般情况下,管理者堆栈必须设置,如果使用了IRQ中断,则IRQ堆栈也必须设置。如果系统使用了外设,则需要设置相关的寄存器,以确定其刷新频率、总线宽度等信息。 代码段复制到RA
[单片机]