ATmega16开发板教程(5)——外部中断
6、外部中断
这里主要编写外部中断0和1的边沿触发,通过LED状态显示。
外部中断0
外部中断我们要知道的是:①如何触发?上升沿、下降沿还是高低电平;②外部中断使能;③中断服务函数的编写。
AVR提供了3个外部中断0/1/2,对应的Pin脚是PD2/PD3/PB2,其中外部中断0是所有中断中优先级最高,响应最快的。
①MCUCR:SM2,SE,SM1,SM0,ISC11,ISC10,ISC01,ISC00
MCUCR寄存器的低2位用于控制INT0中断的触发方式,具体如下图:
这里我们选择上升沿触发产生中断请求。
②GICR:INT1,INT0,INT2,Dummy4,Dummy3,Dummy2,IVSEL,IVCE
中断使能位为GICR的第6位,默认初始值=0,赋值为1使能。
③编写初始化函数和中断函数,具体程序如下:
当然别忘了,对应中断引脚设置为上拉输入。
外部中断1
外部中断1与0类似,其设置触发方式的寄存器与INT0一致,但具体是第2和3位来设置。
同理这里还是设置为上升沿触发。
然后使能位是GICR寄存器的最高位,赋值1即可。
具体编程如下:
仿真视频
主函数如下:LED2正常闪烁时,等待外部中断0和1触发。
/**
******************************************************************************
* @file main.c
* @author Alex——小白
* @version V1.0
* @date 2021.1.20
* @brief 外部中断,按键控制LED亮灭
* @store Proteus仿真店子——公众号
* @Link https://shop484534014.taobao.com/
* @Email 844545015@qq.com
******************************************************************************
* @attention All Rights Reserved
**/
#include <main.h>
void main(void)
{LED.LED_Init(0x07);EXIT.EXIT0_Init();EXIT.EXIT1_Init();while(1){ LED.LED_Reverse(2);Delay.Delay_ms(500);}
}
如需Proteus和IAR安装包以及AVR编程参考手册,请关注公众号:
Proteus仿真店子
可通过查看历史记录,查看源码和仿真工程
(若需Proteus和IAR安装包以及AVR编程参考手册,后台回复:AVR;若需其它设计,后台回复:AVR设计)
ATmega16开发板教程(5)——外部中断相关推荐
- OK6410开发板学习之外部中断(按键点亮led和蜂鸣器)
中断在嵌入式里面是很常见的一个功能了.通过这个功能,可以让CPU减轻很多负担,不用不断的查询设备的状态.提高了CPU的效率. 中断的大体过程如下: 中断源检测中断信号产生,然后将中断信号发送给中断控制 ...
- ATmega16开发板教程(6)——串口通信
7.串口通信 串口通信的基本概念就是用一根线收RX和另外一根线发TX数据,那么什么时候发?什么时候开始收呢?例如,古时候的暗号--天王盖地虎.小鸡炖蘑菇,说完就开始交易. 串口通信最重要的参数就是波特 ...
- ATmega16开发板教程(8)——ADC
9.ADC 在将ADC之前,先聊聊其前因后果--由于计算机在自动控制.检测以及其他领域广泛应用数字电子技术,而大自然的信号全是模拟信号,如果通过计算机保存自然信号呢?那么就需要ADC(模数转换器An ...
- ATmega16开发板教程(4)——定时器
5.定时器 这里主要编写定时器0和1的定时功能,通过数码管显示. 定时器T0 首先T0是一个8位定时器,其主要由TCNT0(初值寄存器).TCCR0(控制寄存器). TCCR0:FOC0,WGM00, ...
- ATmega16开发板教程(2)——KEY点灯
3.KEY点灯 KEY引脚的寄存器定义与LED相同,还是3个寄存器:DDRx.PORTx.PINx(具体介绍可参见LED点灯部分). DDRx:1-输出,0-输入.当配置为输入时,PORTx=1,上 ...
- ATmega16开发板教程(1)——LED点灯
2.LED点灯 作为通用数字IO使用时,AVR单片机的IO具备读.写.修改功能.每个端口具有3个寄存器:DDRx.PORTx.PINx. DDRx:1-输出,0-输入.当配置为输入时,PORTx=1 ...
- ATmega16开发板教程(7)——LCD1602
8.LCD1602 LCD1602作为最基础的字符型液晶显示屏,能过显示16x02=32个字符.那么时序的操作--读写是最主要的内容,今天就带大家一起读读时序. 在看时序图前,对LCD的引脚功能要了 ...
- ATmega16开发板仿真教程——前言
1.基础知识 简单介绍单片机ATmega16的硬件资源,以及IAR软件使用,Proteus8.9仿真软件的基本操作. AVR单片机分类: ATtiny系列:tiny13/15/26属于低档,适合功能相 ...
- 厦门理工嵌入式开发LPC1768开发板教程
LPC1768开发板教程 注意:本文档基于LPC1768.h头文件和EZ1768.h头文件(在文档结尾附出) 文章目录 LPC1768开发板教程 1.GPIO 1.1 设置GPIO 1.2 设置输入输 ...
最新文章
- Android--学习路线指南
- 云计算 码率适配限速_面向大型集团公司的云平台架构
- 华为LTE 模块AT 命令拨号上网流程
- sap.ui.require in SAP UI5 and require in nodejs
- 【渝粤教育】电大中专建设工程法规1作业 题库
- Angular项目目录介绍
- java开发实战经典
- 51单片机dds信号发生器 扫频 c语言,基于AT89C51单片机和DDS器件实现频率特征测试仪的设计...
- linux串口 接收 字符串_非常好用的 Win10 串口调试助手
- 安装rvm的时候提示curl证书的问题..
- php中strrpos函数的返回值类型是型_PHP字符串处理的一些常用函数 - strrpos
- 数据结构题集(c语言版)严蔚敏答案pdf
- MySQL sql语句总结
- VHDL学习--分频器
- php代码实现微信代扣,html5+如何通过native.js实现APP微信支付代扣签约?
- 字体设计符号组合多功能微信小程序源码
- MCU--低功耗处理流程
- 【C++学习笔记】基本内置类型和变量
- 年薪百万的阿里 P7 到底该具备什么样的能力?!解密篇
- 马云励志演讲:要相信80后、90后创业