AVR单片机ATemga328P中断原理的介绍

这篇具有很好参考价值的文章主要介绍了AVR单片机ATemga328P中断原理的介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、一AVR单片机中断原理的介绍

ATmega328P微控制器具有两个外部中断引脚,分别是INT0和INT1。

  • 外部中断0(INT0):它对应的引脚是PD2(数字引脚2)。INT0可以用于响应外部信号的边沿触发(上升沿、下降沿或任意边沿),并触发相应的中断服务程序。INT0具有附加的可选特性,例如使能/禁用中断、选择触发边沿、使能上拉电阻等。

  • 外部中断1(INT1):它对应的引脚是PD3(数字引脚3)。INT1的功能与INT0类似,它也可以用于响应外部信号的边沿触发,并触发相应的中断服务程序。INT1同样具有附加的可选特性,例如使能/禁用中断、选择触发边沿、使能上拉电阻等。

这两个外部中断引脚提供了一种机制,使得ATmega328P能够在外部事件发生时及时中断当前的程序执行,以处理外部事件或执行其他特定的任务。程序员可以根据应用需求来配置和利用这些外部中断功能。

AVR单片机ATemga328P中断原理的介绍

AVR单片机ATemga328P中断原理的介绍
AVR单片机ATemga328P中断原理的介绍

ATmega328单片机具有26个中断源。每个中断源都有个独立的中断向量作为中断服务程序的入口地址,而且所有的中断源都有自己独立的使能位。如果全局中断I和相应的中断使能位都置位,则在中断标志位置位时将执行中断服务程序。

一个中断产生后,全局中断使能位I将被清零,后续的中断被屏蔽。用户可以在中断服务程序里面对工置位从而开发中断,在中断返回后全局中断位I将重新置位。

ATmega328P单片机中断向量表介绍:

AVR单片机ATemga328P中断原理的介绍

AVR单片机ATemga328P中断原理的介绍

ATmega328单片机具有2个外部中断,分别是INT0(中断号为2),INT1(中断号为1),这2个外部中断都是由单片机的引脚触发。需要注意的是,如果允许外部中断的话,即使是INT0,INT1这2个引脚都设置为输出方式,外部中断也会触发。INT0,INT1外部中断可以选择的触发方式有上升沿触发、下降沿触发以及低电平触发;使用外部中断涉及到的寄存器有:

AVR单片机ATemga328P中断原理的介绍

1.1 外部中断控制寄存器A

EICRA(External Interrupt Control Register A):这是一个8位寄存器,用于配置外部中断的触发方式。它的低两位(ISC01和ISC00)控制INT0的触发方式,而高两位(ISC11和ISC10)控制INT1的触发方式。这些位可用于选择外部中断的触发边沿(上升沿、下降沿或任意边沿)。
AVR单片机ATemga328P中断原理的介绍

ISC11 ISC10 说明
0 0 INT1引脚为低电平时产生中断请求
0 1 INT1引脚上的任意逻辑电平变化都会产生中断请求
1 0 INT1引脚为下降沿产生中断请求
1 1 INT1引脚为上升沿产生中断请求

AVR单片机ATemga328P中断原理的介绍

ISC01 ISC00 说明
0 0 INT0引脚为低电平时产生中断请求
0 1 INT0引脚上的任意逻辑电平变化都会产生中断请求
1 0 INT0引脚为下降沿产生中断请求
1 1 INT0引脚为上升沿产生中断请求

1.2 外部中断屏蔽寄存器

EIMSK(External Interrupt Mask Register):这是一个8位寄存器,用于使能/禁用外部中断。它包含两个位用于使能/禁用INT0和INT1外部中断。设置EIMSK寄存器的相应位可以启用对应的外部中断功能。
AVR单片机ATemga328P中断原理的介绍

当 INT1 位被设置1并且状态寄存器SREG中的I位被设置1时,外部引脚中断被启用。 外部中断控制寄存器 A (EICRA) 中的中断检测控制 1 位 1/0(ISC11 和 ISC10)定义外部中断是在 INT1 引脚的上升沿和/或下降沿激活还是在检测到电平时激活。 即使 INT1 配置为输出,一旦引脚电平发生了相应的变化,中断就产生。 外部中断请求1对应的中断从INT1中断向量执行。

当 INT0 位被设置1并且状态寄存器SREG中的 I 位被设置1时,外部引脚中断被启用。 外部中断控制寄存器 A (EICRA) 中的中断检测控制 0 位 1/0(ISC01 和 ISC00)定义外部中断是在 INT0 引脚的上升沿和/或下降沿激活还是在检测到电平时激活。 即使INT0配置为输出,一旦引脚电平发生了相应的变化,中断就产生。 外部中断请求0对应的中断从INT0 中断向量执行。

1.3 外部中断标志寄存器

EIFR(External Interrupt Flag Register):这是一个8位寄存器,用于指示外部中断事件的发生。当外部中断事件触发时,相应的位(INTF0和INTF1)会被置位。在处理完中断后,可以通过清除EIFR寄存器的相应位来复位中断标志。

AVR单片机ATemga328P中断原理的介绍
当INT1引脚上的边沿或逻辑变化触发中断请求时,INTF1变为置位1。 如果 SREG 中的I位和IMSK中的INT1位被置位1,MCU将跳转到相应的中断向量。中断程序执行时该标志被清除。 或者,可以通过向其写入逻辑1来清除该标志。 当 INT1配置为电平中断时,该标志总是被清除。

当INT0引脚上的边沿或逻辑变化触发中断请求时,INTF0变为置位1。 如果SREG中的I位和EIMSK中的INT0位被置位1,MCU将跳转到相应的中断向量。中断程序执行时该标志被清除。 或者,可以通过向其写入逻辑 1 来清除该标志。 当 INT0配置为电平中断时,该标志总是被清除。

二、中断服务函数写法

语法格式:

#pragma interrupt_handler<函数名>:<中断向量号>

例如定义INT0中所服务程序:

#pragma interrupt_handler into_isr: 2
void into_isr(void)
{
	//INTO中断服务函数
}

三、外部中断使用步骤

1、设置外部中断触发方式
2、使能外部中断
3、设置中断管脚(是否需要上拉电阻)
4、打开全局中断
5、选择终端号,编写中断服务函数文章来源地址https://www.toymoban.com/news/detail-453138.html

#include <avr/io.h>
#include <avr/interrupt.h>

// 外部中断0的中断服务函数
ISR(INT0_vect)
{
    // 在此处编写中断处理代码
    // ...
}

int main(void)
{
    // 配置引脚和外部中断

    // 设置PD2引脚为输入
    DDRD &= ~(1 << PD2);
    // 使能PD2引脚的上拉电阻
    PORTD |= (1 << PD2);

    // 配置外部中断0的触发方式为下降沿触发
    EICRA |= (1 << ISC01);
    EICRA &= ~(1 << ISC00);

    // 使能外部中断0
    EIMSK |= (1 << INT0);

    // 全局使能中断
    sei();//SREG |= (1 << 7);

    while (1)
    {
        // 主循环代码
        // ...
    }

    return 0;
}

到了这里,关于AVR单片机ATemga328P中断原理的介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • AVR128单片机 USART通信控制发光二极管显示

    一、系统方案 二、硬件设计 原理图如下: 三、单片机软件设计 1、首先是系统初始化 void port_init(void) { PORTA = 0xFF; DDRA = 0x00;//输入 PORTB = 0xFF;//低电平 DDRB = 0x00;//输入 PORTC = 0xFF;//低电平 DDRC = 0xFF;//输出 PORTE = 0xFF; DDRE = 0xfE;//输出 PORTD = 0xff; DDRD = 0xFB;//输出 PORTD = 0xff; PORTF = 0xFF

    2024年02月10日
    浏览(36)
  • 单片机原理及应用 实验四 指示灯数码管的中断控制

    单片机原理及应用(C51 版) 功能: 开机后D1灭灯,LED1黑屏,随后单击K1→D1状态反转,单击K2→LED1从0开始循环显示0~F字符。 实验目的及要求: 1.掌握外部中断的工作原理,学会中断程序设计; 2.按照实验报告要求图,绘制本实验电路原理图; 3.要求采用外部中断原理完成

    2024年02月07日
    浏览(45)
  • 【期末不挂科-单片机考前速过系列P10】(第十章:11题中断系统的工作原理及应用)经典例题盘点(带图解析)

    前言 大家好吖,欢迎来到 YY 滴单片机期末速过系列 ,热烈欢迎! 本章主要内容面向接触过单片机的老铁 主要内容含: 欢迎订阅 YY 滴C++专栏!更多干货持续更新!以下是传送门! YY的《C++》专栏 YY的《C++11》专栏 YY的《Linux》专栏 YY的《数据结构》专栏 YY的《C语言基础》专

    2024年02月01日
    浏览(54)
  • AT89C51单片机实现单片机串口互动(中断方式,单片机--单片机,应答)

     说一下功能:客户机发送0x01到服务机 2服务单片机应答0xf2到客户机 3客户机接收到0xf2,发送信息153432这6个数字到服务机 4client发送完信息后发送0xaa结束通信 5server接收到0xaa后回复0xaa结束通信,从此老死不相往来 看代码: 服务端代码:    

    2024年02月13日
    浏览(57)
  • 51单片机中断系统

    我们先来举一个生活事例: 你打开火,烧上一壶水。然后去洗衣服,在洗衣服的过程中,突然听到水壶发出水开的报警声,这时,你停止洗衣服动作,立即去关掉火,然后将开水灌入暖水瓶中,灌完开水后,你又回去继续洗衣服。这个过程中实际上就发生了一次中断。 对于

    2024年02月05日
    浏览(57)
  • 51单片机中断

    1、什么是中断? CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生); CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务); 待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断 。 中断触

    2024年01月21日
    浏览(51)
  • 51单片机(九):中断

    一、“中断”与定时器的关系         前面我们学习过了定时器,实际上 定时器的一般用法都是采取中断的方式进行实现的 。需要明确的是,定时器和中断不是一回事,定时器是单片机模块的一个资源,确确实实存在的一个模块,而中断是单片机中的一种运行机制。 在单片

    2024年02月04日
    浏览(43)
  • 51单片机——中断

    中断系统的设置,是为了让CPU能对外界紧急事件进行实时处理 中断的过程是,当中断请求源发出中断请求时,CPU响应中断后,CPU先暂停当时正在执行的主程序,转而去处理中断服务程序,处理完后继续原来的工作 微型机一般允许多个中断源,当几个中断源同时发出中断时,

    2023年04月15日
    浏览(86)
  • 【51单片机——————外部中断】

    中断是指单片机主程序运行过程中,出现某些意外情况需要单片机处理,单片机能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。 在实际应用开发中,单片机不可能一直轮询查看按键是否按下,单片机还需要去执行其他任务,

    2024年02月06日
    浏览(48)
  • 【51单片机】外部中断

    51的 外部中断 与 定时器(内部中断) 有一个共同特点,那就是与主程序是 并行 工作的,就是主程序在运行的时候,中断也在等待触发条件,当 中断被触发的时候会暂停主程序 转而执行中断服务程序,只有中断服务程序执行完后,才会继续执行主程序。 这里的触发条件是指:

    2024年02月02日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包