​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)——外部中断相关推荐

  1. OK6410开发板学习之外部中断(按键点亮led和蜂鸣器)

    中断在嵌入式里面是很常见的一个功能了.通过这个功能,可以让CPU减轻很多负担,不用不断的查询设备的状态.提高了CPU的效率. 中断的大体过程如下: 中断源检测中断信号产生,然后将中断信号发送给中断控制 ...

  2. ATmega16开发板教程(6)——串口通信

    7.串口通信 串口通信的基本概念就是用一根线收RX和另外一根线发TX数据,那么什么时候发?什么时候开始收呢?例如,古时候的暗号--天王盖地虎.小鸡炖蘑菇,说完就开始交易. 串口通信最重要的参数就是波特 ...

  3. ATmega16开发板教程(8)——ADC

    ​9.ADC 在将ADC之前,先聊聊其前因后果--由于计算机在自动控制.检测以及其他领域广泛应用数字电子技术,而大自然的信号全是模拟信号,如果通过计算机保存自然信号呢?那么就需要ADC(模数转换器An ...

  4. ATmega16开发板教程(4)——定时器

    5.定时器 这里主要编写定时器0和1的定时功能,通过数码管显示. 定时器T0 首先T0是一个8位定时器,其主要由TCNT0(初值寄存器).TCCR0(控制寄存器). TCCR0:FOC0,WGM00, ...

  5. ATmega16开发板教程(2)——KEY点灯

    ​3.KEY点灯 KEY引脚的寄存器定义与LED相同,还是3个寄存器:DDRx.PORTx.PINx(具体介绍可参见LED点灯部分). DDRx:1-输出,0-输入.当配置为输入时,PORTx=1,上 ...

  6. ATmega16开发板教程(1)——LED点灯

    ​2.LED点灯 作为通用数字IO使用时,AVR单片机的IO具备读.写.修改功能.每个端口具有3个寄存器:DDRx.PORTx.PINx. DDRx:1-输出,0-输入.当配置为输入时,PORTx=1 ...

  7. ATmega16开发板教程(7)——LCD1602

    ​8.LCD1602 LCD1602作为最基础的字符型液晶显示屏,能过显示16x02=32个字符.那么时序的操作--读写是最主要的内容,今天就带大家一起读读时序. 在看时序图前,对LCD的引脚功能要了 ...

  8. ATmega16开发板仿真教程——前言

    1.基础知识 简单介绍单片机ATmega16的硬件资源,以及IAR软件使用,Proteus8.9仿真软件的基本操作. AVR单片机分类: ATtiny系列:tiny13/15/26属于低档,适合功能相 ...

  9. 厦门理工嵌入式开发LPC1768开发板教程

    LPC1768开发板教程 注意:本文档基于LPC1768.h头文件和EZ1768.h头文件(在文档结尾附出) 文章目录 LPC1768开发板教程 1.GPIO 1.1 设置GPIO 1.2 设置输入输 ...

最新文章

  1. Android--学习路线指南
  2. 云计算 码率适配限速_面向大型集团公司的云平台架构
  3. 华为LTE 模块AT 命令拨号上网流程
  4. sap.ui.require in SAP UI5 and require in nodejs
  5. 【渝粤教育】电大中专建设工程法规1作业 题库
  6. Angular项目目录介绍
  7. java开发实战经典
  8. 51单片机dds信号发生器 扫频 c语言,基于AT89C51单片机和DDS器件实现频率特征测试仪的设计...
  9. linux串口 接收 字符串_非常好用的 Win10 串口调试助手
  10. 安装rvm的时候提示curl证书的问题..
  11. php中strrpos函数的返回值类型是型_PHP字符串处理的一些常用函数 - strrpos
  12. 数据结构题集(c语言版)严蔚敏答案pdf
  13. MySQL sql语句总结
  14. VHDL学习--分频器
  15. php代码实现微信代扣,html5+如何通过native.js实现APP微信支付代扣签约?
  16. 字体设计符号组合多功能微信小程序源码
  17. MCU--低功耗处理流程
  18. 【C++学习笔记】基本内置类型和变量
  19. 年薪百万的阿里 P7 到底该具备什么样的能力?!解密篇
  20. 马云励志演讲:要相信80后、90后创业

热门文章

  1. 一枚专科生的寒假计划
  2. 闲鱼 12 块买的软件资源!禁止贩卖赚钱
  3. TrueType字体轮廓矢量绘制
  4. 大数据测试(一)大数据离线数据构造
  5. WinForm模拟苹果手机计算器
  6. android studio signatures are inconsistent
  7. java打印1970年之后日历
  8. 《What every programmer should know about memory》-CPU Caches译
  9. 自然语言处理NLP算法总结(持续更新)
  10. 编程英语:常见代码错误 error 语句学习(13)