Atmega16中断

合集下载

atmege16外部中断程序

atmege16外部中断程序

atmege16外部中断程序/****************************************** 功能:演示ATMEGA16的3个外部中断程序编辑环境:ICCAVR******************************************/#include<iom16v.h>#include<macros.h>#define uint unsigned int#define uchar unsigned char#define beep_0 (PORTD&=~(1<<PD7)) #define beep_1 (PORTD|=(1<<PD7))//蜂鸣器响uint count;/******************************************* 三个外部中断声明,注意中断向量号*******************************/#pragma interrupt_handler Exint0:2#pragma interrupt_handler Exint1:3#pragma interrupt_handler Exint2:19/*************************************系统延时函数************************************/void delay(uint ms){uint i,j;for(i=0;i<ms;i++){for(j=0;j<1140;j++);}}/**************************************端口初始化每个外部中断端口是固定的****************************************/void port_init(){DDRA=0XFF;PORTA=0XFF;DDRB&=(0<<PB2);//INT2PORTB|=(1<<PB2);DDRD&=(0<<PD2);//INT0PORTD|=(1<<PD2);DDRD&=(0<<PD3);//INT1PORTD|=(1<<PD3);}/***********************************外部中断初始化*******************************/void INT_init(){SREG=0X80;//打开全局中断GICR|=(1<<INT0)|(1<<INT1)|(1<<INT2);//三个中断使能MCUCR=(1<<ISC11)|(0<<ISC10)|(1<<ISC01)|(0<<ISC00);//I NT0,INT1下降沿触发MCUCSR=(0<<ISC2);//INT2下降沿触发中断}/***************************************** 流水灯函数****************************************/ void LED_1(){uchar i;for(i=0;i<8;i++){PORTA=~BIT(i);delay(200);}}/*********************************** LED_2函数**********************************/void LED_2(){PORTA=0X0F;delay(500);PORTA=0XF0;delay(500);}/********************************LED_3函数************************************/ void LED_3(){PORTA=0X81;delay(500);PORTA=0X7E;delay(500);}/************************************ 外中断0函数**********************************/ void Exint0(){LED_2();}/********************************** 外中断1函数***********************************/ void Exint1(){LED_3();}/************************外中断2函数***********************/void Exint2(){DDRD=(1<<PD7);for(count=0;count<4;count++) {beep_0;delay(200);beep_1;delay(200);}}/********************************* 主函数*********************************/ void main(){port_init();//端口初始化INT_init();//中断初始化while(1)// 当非0值时执行下面函数{LED_1();//流水灯函数}}。

第4章avrmega16单片机中断实例

第4章avrmega16单片机中断实例

• 4) 中断嵌套
在中断发生后,SREG的I位由硬件清除,并由 RETI(中断返回)指令置位,从而允许子序列的中断响应。
由于 AVR 在响应一个中断的过程中通过硬件将 I 标志 位自动清零,这样就阻止了 MCU响应其它中断。因此通 常情况下,AVR 是不能自动实现中断嵌套的。 如要系统中必须要实现中断嵌套的应用,用户可在中 断服务程序中使用指令将全局中断允许位开放,通过间接 的方式实现中断的嵌套处理。
1) MCU 控制寄存器—MCUCR
• MCU 控制寄存器 MCUCR 的低 4 位为 INT0(ISC01、 ISC00)和 INT1(ISC11、ISC10)中断触发类型控制位。
2)MCU 控制和状态寄存器—MCUCSR
• MCU 控制和状态寄存器 MCUCSR 中的第6位(ISC2) 为 INT2 的中断触发类型控制位。
void main(void) { PORTA=0xFF; DDRA=0xFF; PORTD|=0x0C; DDRD|=0x00; //DDRD.3=0;DDRD.2=0; GICR|=0xC0; MCUCR=0x0A; MCUCSR=0x00; GIFR=0xC0; //清除INT0、INT1中断标志位 #asm("sei") //SREG|=0x80; SREG.7=1; while (1) { PORTA=led_7[counter]; } }
4) 通用中断标志寄存器—GIFR
• 注意:用户可以使用指令将 INTFn 清除,清除的方式是 写逻辑“1”到 INTFn,将标志清零。另外, 当INT0 (INT1) 设置为低电平触发方式时, 标志位 INTF0 (INTF1) 始终为“0”,这并不意味着不产生中断请求, 而是低电平触发方式是不带中断标志类型的中断触发。在 低电平触发方式时,中断请求将一直保持到引脚上的低电 平消失为止。 • 而在开放中断允许前,一般应通过向 GIFR 寄存器中的中 断标志位 INTFn 写入逻辑“1” ,将该中断的中断标志位 清除,然后开放中断。这样可以防止在改变ISCn 的过程

ATMEGA16 中断GCC模式

ATMEGA16 中断GCC模式

AVR单片机中断实现ATmega16 INT ISR(INT0_vect)内容来源:本站发布时间:[2010-11-28]查看次数:42332.21 实例功能前面例子中分别介绍了按键控制发光二极管的亮灭,但是我们注意到,在程序中需要一直检测按键的状态,这样明显的浪费了单片机的资源,降低了单片机的工作效率,。

那么有没有一种方法可以让单片机不用一直检测按键的状态,而只在有按键动作时才去响应呢?当然有!单片机中除了具有基本输入输出功能的作用外,还有专门检测外界信号并作出响应的中断系统。

在本例中,通过利用外部中断实现单片机对按键事件的响应和处理。

本例中三个功能模块描述如下:● 单片机系统:对按键事件产生的中断时间作出响应,并在数码管上显示按键按下的次数。

● 外围电路:通过将按键连接到单片机的外部中断检测端口,实现中断产生电路,数码管显示电路用于指示按键的按下状态。

● 软件程序:编写AVR单片机的外部中断服务程序,从而实现对中断事件的响应。

2.2.2 器件和原理1单片机的中断系统关于中断的概念可以在一般的教材中找到,本例中只做简要叙述,不再详细说明。

中断属于一种对事件的实时处理过程。

中断源可能随时停止单片机当前正在处理的工作,转而去处理中断事件,待中断时间处理完毕之后,再返回原来工作的断点处,继续原来的工作。

对于单片机的中断系统,需要了解这几个概念:中断源、中断信号、中断向量、中断优先级、中断嵌套、中断控制(屏蔽)、中断响应条件、中断响应过程(中断服务程序)。

●中断源中断源是指能够向单片机发出中断请求信号的部件和设备。

对于单片机来讲,往往存在多个中断源。

中断源一般可分为内部中断源和外部中断源。

单片机内部集成的许多功能模块,如定时器、串行通讯口、模/数转换器等,它们在正常工作时往往无需CPU参与,而当处于某种状态或达到某个规定值需要程序控制时,会通过发出中断请求信号通知CPU。

这一类的中断源位于单片机内部,称作内部中断源。

第07章 ATM16的中断系统应用PPT课件

第07章   ATM16的中断系统应用PPT课件
2、对于一些条件触发型中断(如低电平触发的外部中断)来 讲,它们不置位有中断标志位,在中断条件成立时,将一直不 断的向MCU申请中断,如果在中断允许响应前,中断条件由成 立状态变成不成立状态,该中断即宣告终止了。
第9章 编译器和集成开发环境
广西大学电气工程学院
mega16的中断向量表(3)
向量 序号
15 16 17 18 19 20 21
中断向量 中断源代码 flash 地址
$001C $001E $0020 $0022 $0024 $0026 $0028
ADC EE-RDY ANA-COMP TWI INT2 TIMER0 COMP SPM-RDY
第9章 编译器和集成开发环境
广西大学电气工程学院
中断返回:
三、中断返回:
在中断子程序的最后,安排一条中断返回指令(RETI), 将堆栈内保存的进入中断时被中断的程序位置值弹出。并自 动开启全局中断标志位I,以便CPU能响应新的中断请求。
在C编译器中,中断返回与恢复现场和保护现场一样,不 需要用户编写完成。
2、GICR---通用中断控制寄存器: 3、GIFR---通用中断标志寄存器: 4、MCUCR---微控制器控制寄存器: 5、MCUSCR ---微控制器状态与控制寄存器:
第9章 编译器和集成开发环境
广西大学电气工程学院
GICR--通用中断控制寄存器
Bit
765 4 3 2 1 0
INT1 INT0 - - - - IVSEL IVCE GICR
第9章 编译器和集成开发环境
广西大学电气工程学院
外中断1 触发方式控制
ISC11 ISC10 说明
0
0 INT1为低电平时产生中断请求

4.ATmega16中断系统

4.ATmega16中断系统

编 译 开 关
关键字
Байду номын сангаас
自定义 函数名
函数名
中断源中断服务 程序主体
四、中断系统 6、中断应用编程
编程步骤: (1)确定中断源(内部中断,外部中断) (2)如是INT中断还得设定外部中断触发方式 MCUCR——INT0,INT1; MCUCSR——INT2; (3)开放可屏蔽中断源(打开中断开关) SREG.7——中断总开关; GICR ——中断源开关 (4)编写中断事件函数
四、中断系统 4、外部中断
INT0、INT1和INT2 3个外部中断源,分别由芯片外部引 脚PD2、PD3、PB2上的电平的变化或状态作为中断触发信号。 其中,INT0和INT1支持4种中断触发方式,INT2支持2种。
四、中断系统 4、外部中断
特 点: ●低电平触发是不带中断标志类型的,只要PD2或PD3保持低 电平,一直会产生中断申请。������ ● MCU对INT0和INT1的引脚上的上升沿或下降沿变化的识别 (触发),需要I/O时钟信号的存在(由I/O时钟同步检测 ),属于同步边沿触发的中断类型。������ ● MCU对INT2的引脚上的上升沿或下降沿变化的识别(触发 ),以及低电平的识别(触发)是通过异步方式检测的, 不需要I/O时钟信号。因此,这类触发类型的中断经常作为 外部唤醒源。������
四、中断系统 5、中断寄存器
在ATmega16中,除了寄存器SREG中的全局中断允许标 志位I外,与外部中断有关的寄存器有4个,共有11个标 志位。其作用分别是: ●3个外部中断中断标志位, ● 3个中断允许控制位 ● 用于定义外部中断的触发类型。
(1)中断控制寄存器——MCUCR
四、中断系统 5、中断寄存器

AT mega系列单片机原理及应用第4章 ATmega 单片机的中断系统及定时器

AT mega系列单片机原理及应用第4章 ATmega 单片机的中断系统及定时器
• 在CPU内部有一个中断允许触发器。只有当其为 “1”时,CPU才能响应中断;若其为“0”,即使 INTR线上有中断请求,CPU也不响应。而这个触 发器的状态可由软件指令来改变。当CPU复位时, 中断允许触发器为“0”,所以必须要用软件指令 来开中断。当中断响应后,CPU就自动关中断, 所以在中断服务程序中也必须要用软件指令来开 中断。CPU在现行指令结束后即响应中断。
告终止了。
4.1.2 外部中断
• 外部中断通过引脚INT0,INT1(ATmega16L多一 个INT2外部中断)触发。即使引脚INT0,1配置 为输出,只要电平发生了合适的变化,中断也会 触发。这个特点可以用来产生软件中断。通过设 置MCU控制寄存器MCUCR,中断可以由下降沿、 上升沿,或者是低电平触发。

GICR = 0x40;//开启中断0使能

//}}WIZARD_MAP(External IRQ)
•}
• SIGNAL(SIG_INTERRUPT0)//外部中断0程序
•{

uint k;//设置变量k来记录中断的次数

// TODO: Add your code here
• k++;
•}
4.2 定时器/计数器的使用方法
• 中断源基本上分为两种类型的中断:一类是时间 触发型中断,另一类是条件中断,对于时间触发 类中断(如时钟、计数、比较等),一旦事件产 生后会将相应的中断标志位置位,申请中断处理, 当MCU响应中断,跳转到实际中断向量,开启相 应的中断处理程序时,硬件自动清除对应的中断 标志,这些中断标志位也可通过软件写“1”来清 除。
-
-
-
-
-
GIFR
R/W R/W

(精)atmega16寄存器笔记整理

(精)atmega16寄存器笔记整理

一、中断寄存器中断是指微处理器在程序执行期间响应外部的事务请求,暂停当前的处理器工作转而处理外部事件,外部事件处理完成之后返回原来工作暂停的地方继续执行程序。

Atmega16具有21个中断源,每个中断源都有独立的中断向量作为中断服务程序的入口地址,而且所有的中断源都有自己独立的使能位。

如果中断位I和中断向量使能位都置位,则中断发生,中断标志位置位,并执行中断服务程序。

中断向量表见表2,处于越低地址的中断具有更高优先级。

<一> 全局中断控制位1、状态寄存器SREG在I置位后,单独的中断使能由不同的中断寄存器控制。

若I为0,则禁止中断。

<二>外部中断?SE:MCU休眠使能位INT1:使能外部中断请求1INT0:使能外部中断请求0INT2:使能外部中断请求2INTF1:外部中断标志INT1引脚电平发生跳变时触发中断请求,并置位相应的中断标志INTF1。

如果SREG的位I以及GICR寄存器相应的中断使能位INT1为”1”,MCU即跳转到相应的中断向量。

进入中断服务程序之后该标志自动清零。

此外,标志位也可以通过写入”1” 来清零。

INTF0:外部中断标志INT0引脚电平发生跳变时触发中断请求,并置位相应的中断标志INTF0。

如果SREG的位I以及GICR寄存器相应的中断使能位INT0为”1”,MCU即跳转到相应的中断向量。

进入中断服务程序之后该标志自动清零。

此外,标志位也可以通过写入”1” 来清零。

INTF2:外部中断标志INT2引脚电平发生跳变时触发中断请求,并置位相应的中断标志INTF1。

如果SREG的位I以及GICR寄存器相应的中断使能位INT2为”1”,MCU即跳转到相应的中断向量。

进入中断服务程序之后该标志自动清零。

此外,标志位也可以通过写入”1” 来清零。

<三>定时器/计数器A VR的三个定时/计数器。

他们分别是T/C0、T/C1、T/C2,其中T/C0和T/C2是8位定时/计数器,T/C1是16位定时/计数器。

ATmega16定时器中断

ATmega16定时器中断

ATmega16定时器/计数器中断及编程Atmega16内部有三个定时器/计数器T/C0,T /C1.T/C2,其中T/C0,T/C2为8为定时器,T/C1为16定时器,这里从高级语言编程的使用出发,简要介绍T/C0的使用。

定时器中断的过程是:当中断发生时,程序控制立即从主程序转移到中断服务程序,执行完中断服务程序后再返回到主程序的中断处继续执行后续的程序。

利用中断可以节省CPU资源。

先了解几个寄存器。

MCUCR---MCU控制寄存器;MCUCSR-----MCU控制与状态寄存器;GICR-----通用控制寄存器;GIFR-----通用中断标志寄存器;TIFR---定时器中断标志寄存器,TIMSK----定时器中断屏蔽寄存器。

这几寄存器保留默认设置即可,需要编程时了解并设置的寄存器为TCCR0----T/C0控制寄存器,TCNT0----T/C0的计数初始值,OCR0----输出比较寄存器,OC0/PB3----输出比较引脚。

TCCR0为8位寄存器,从高位到低位的名称依次是:FOC0,WGM00,COM01,COM00,WGM01,CS02,CS01,CS00.TCCR0各个控制位的作用:(1) CS02,CS01,CS00控制时钟选择和预分频,如100表示预分频为256(2) WGM01,WGM00控制波形产生模式,分为普通模式(用于普通计时),CTC模式(用于频率发生),快速PWM模式(用于PWM调速,功率调节),相位修正PWM模式。

如10表示CTC模式。

(3) COM01,COM00控制比较匹配输出模式。

在不同的波形产生模式下其逻辑值功能表不同,如在普通模式或CTC模式下01表示比较匹配发生OC0取反。

(4)FOC0,中断标志位,设为零即可。

至于上述控制位的逻辑值功能表可查阅Atmega16的中文数据手册,在官方网上会有英文版。

完成TCCR0的设定,接下来是设置TCNT0,OCR0寄存器了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

应用课题:设计一段程序,用于统计INT0的 中断次数
主程序
void main(void) { 设置引脚PD2方向为输入 DDRD.2=0; 设置PC口方向为输出 DDRC=0xff; INT0中断使能 GICR=0x40; 设置INT0为下降沿触发 MCUCR=0b00000010; 清INT0的中断标志位 GIFR=0x40; 开放全局中断使能 SREG=0x80; while(1) { PD2引脚输出方波, PORTC.2=! PORTC.2; 作为外部中断信号 delay_ms(500); }
中断法和查询法的特点及差别:
中断法特点: ▲ 需要开放中断的“总开关”和“分开关”; ▲ 中断响应速度快; ▲ 需要定义中断服务程序才能进行相关处理。 ▲ 不需要软件清中断标志位 查询法特点: ▲ 不需要开放中断的“总开关”和“分开关”; ▲ 标志位检测不及时,因而响应速度慢; ▲ 不需要定义中断服务程序也能进行相关处理。 ▲ 需要软件清中断标志位(写“1”清零)
interrupt [中断向量号或中断向量号的宏定义] void handler(中断函数名) (void) 其中,中断函数名为用户定义的中断服务子程序的名称,
而中断向量号则用于表明中断的类型。
例如: interrupt [2] void int_0 (void) { …… } interrupt [EXT_INT0] void int_0 (void) { …… }
通用中断标志寄存器——GIFR
∫5.3 外部中断应用
CVAVR编译器的中断操作:
CVAVR 的C编译器支持在C源程序中直接开发中断程序。当 用户使用该功能时,必须在中断服务子程序定义之前用 “interrupt”语句通知编译器,该子程序是一个中断操作。
用“interrupt”语句定义中断服务子程序的格式为:
中断的检测与中断的响应条件
设置中断请求触发器 设置中断屏蔽触发器 总中断是开放的 CPU在现行指令结束后响应中断
设置中断请求触发器
每一个中断源,要能发出中断请求信号,且这个信号能保持着, 直到CPU响应这个中断后,才可清除中断请求。
设置中断屏蔽触发器
实际应用系统中,往往有多个中断源,每一个中断源的中断请 求是否能发送至CPU,由各自的中断屏蔽触发器决定。只有当 此触发器为1时,中断请求才能被送至CPU。
单片机中断的概念
中断是指正在执行正常程序的计算机,由于出现一些需要立即 进行处理的情况,CPU暂停现在正在执行的操作,转而执行中 断服务程序,执行完毕后,再返回到原来程序继续执行的过程。
中断的功能
中断技术在单片机上能实现很多的功能,它们主要包括:
● 实现单片机与低速外设的配合 由于许多外设的速度较慢,无法与单片机实现直接的数据交换, 因此,必须采用中断功能来协调单片机与外设的速度,当单片机在执 行程序的过程中,如要进行数据的输入/输出操作,则单片机先发一个 命令给外设,然后单片机继续执行程序,当外设为数据交换做好准备 以后,它向单片机发出中断请求,这时,单片机暂时中止正在执行的 程序,转而执行中断服务程序中的数据输入/输出程序,数据交换完成 后,单片机再返回继续执行原来的程序。由此可见,中断技术实现了 单片机与外设的速度配合,提高了单片机的工作效率,也提高了数据 交换的效率。
用查询法实现题目要求
void main(void) { DDRD.2=0; 设置引脚PD2方向为输入 PORTD.2=1; 设置引脚PD3方向为输入 DDRD.3=0; 设置PB口方向为输出 PORTD.3=1; 设置引脚PD0方向为输出 DDRB=0xff; 设置INT0、INT1均为下降沿触发 DDRD.0=1; MCUCR=0b00001010;清INT0、INT1的中断标志位 GIFR=0xc0; while(1) { if((GIFR&0x80)!=0) PORTB=0x06,GIFR=0x80; 查询INT1的标志位,如置位则令LED显示“1”,并清标志位 if((GIFR&0x40)!=0) PORTB=0x3f,GIFR=0x40;} 查询INT0的标志位,如置位则令LED显示“0”,并清标志位
例1:开放INT0、INT1,并将INT0设置为上升沿触 发中断、 INT1设置为上降沿触发中断。
#include<mega16.h> void main(void) { DDRD.2=0; DDRD.3=0; GICR=0xc0; MCUCR=0b00001011;
GIFR=0xc0; SREG=0x80; while(1) ; }
总中断是开放的
在CPU内部有一个中断允许触发器。只有当其为1时CPU才能响 应中断;若其为0,即使有中断请求,CPU也不响应。该触发器 的状态可由指令设置,称为总中断开关。
CPU在现行指令结束后响应中断
在开中断情况下,若外设有中断请求,CPU也并不是立即响应, 只有当正在执行的指令运行至最后一个机器周期的最后一个状 态时,CPU才采样中断请求信号线。若发现有中断请求,则把 内部的中断锁存器置1,然后下一个机器周期进入中断周期,执 行中断服务程序。
● 实时控制功能 所谓实时控制就是单片机能及时完成对受控对象的测量、计算、分析和控 制,从而使受控对象保持良好的工作状态,并达到系统的使用要求。单片 机的中断技术使控制参量能随时向计算机发出中断请求,以完成对数据的 及时处理,因此它是单片机实现实时控制功能的一个必然要求。 ● 实现故障的及时发现 计算机在运行过程中,常会突然发生一些事先无法预料的故障。如:硬件 故障、运算错误及程序故障。有了中断技术,计算机就能对这些故障及时 发现并进行自行处理。 ● 实现人机联系 人们想对运行的计算机进行干预,必须先通过键盘发出中断请求,在获得 了机器准许后,方可进行。中断技术使得人们可以随时进行人机联系,而 不用先停机处理,然后再重新开机。
ISCX1 0 ISCX0 0 中断触发方式 低电平
0
1 1
1
0 1
下降沿和上升沿
下降沿 上升沿
MCU控制和状态寄存器—— MCUCSR
位6:外部中断INT2的中断触发方式控制位。 当ISC2置“0”时,INT2引脚上的一个下降沿将触发中断; 当ISC2置“1”时,INT2引脚上的一个上升沿将触发中断。
INT0的中断服务程序:
interrupt[EXT_INT0] void int0(void) { x++; 显示函数(); }
课程小结:
ATmega16的外部中断用户是可编程的。与外部中 断有关的控制寄存器为: 状态寄存器(SREG) 通用中断控制寄存器(GICR) MCU控制寄存器(MCUCR) MCU控制和状态寄存器(MCUCSR) 通用中断标志寄存器(GIFR)
● 模数转换完成中断 AT90LS8535单片机的模数转换完成中断用于标识单片机内部的模数 转换器。当模数转换器的一次模数转换及数据更新完成时,ADIF置 “1”,若此时ADIE(ADC中断使能位)和全局中断使能位都为 “1”,则该中断被响应。 ● EEPROM中断 •EEPROM中断是为AT90LS8535单片机内部的EEPROM写操作设置的, 当EEPROM准备好,且EERIE(EEPROM准备好中断使能)和全局 中断使能都为“1”,则该中断被响应。 ● 模拟比较器中断 模拟比较器中断发生在单片机的模拟比较器的输出发生变化时,这 种变化可以是一个上升沿,可以是一个下降沿,也可以是一个电平 变化,用户可以通过其控制寄存器和状态寄存器(ACSR)来设置。
文件头
函数框架 设置引脚PD2方向为输入 设置引脚PD3方向为输入 INT0、INT1中断使能
设置INT0为上升沿触发,INT1下 降沿触发 清INT0、INT1的中断标志位 开放全局中断使能
例2:编程实现:上电时LED不显示,INT0发生后, LED务程序
中断服务程序是对中断进行处理的一个子程序。
现场恢复
中断服务程序完成以后,为了使单片机返回到主程序中继续 执行,单片机必须将现场保护时保存下来的内容从堆栈中弹出 至相应的寄存器,也即现场恢复。
∫5.2 ATmega16的外部中断 5.2.1 外部中断源 5.2.2 外部中断源的控制
5.2.1 外部中断源 ATmega16有3个外部中断源,分别对应PD2、PD3 和PB2,如表5-2所示。
引脚 PD2 PD3 PB2
外部中断源 INT0(外部中断0输入) INT1(外部中断1输入) INT2(外部中断2输入)
ATmega16的外部中断用户是可编程的。与外部中断有关的 控制寄存器为:
● ● ● ● ●
状态寄存器(SREG) 通用中断控制寄存器(GICR) MCU控制寄存器(MCUCR) MCU控制和状态寄存器(MCUCSR) 通用中断标志寄存器(GIFR)
中断源
● 外部中断 AT90LS8535单片机的外部中断请求由外设发出。 外设可通过在PD2、PD3上施加低电平、下降沿脉冲或上升沿脉冲触发 该中断。 ● 定时/计时器中断 定时/计时器中断发生在单片机内部的3个定时/计时器上,当某个定时/ 计时器的计数值溢出、输出比较器匹配或输入捕获事件发生,且相应 的控制寄存器被设置为中断允许时,单片机响应中断。 ● 串行口中断 串行口中断是为串行数据的发送或接收设置的。每当串行口发送或接 收完一个串行数据帧时,其相应的状态位被置位。如果此时该类型的 中断为允许,则单片机响应该中断。
用中断法实现题目要求
void main(void) { DDRD.2=0; PORTD.2=1; 设置引脚PD2方向为输入 DDRD.3=0; 设置引脚PD3方向为输入 PORTD.3=1; DDRB=0xff; 设置PB口方向为输出 DDRD.0=1; 设置引脚PD0方向为输出 GICR=0xc0; INT0、INT1中断使能 MCUCR=0b00001010; 设置INT0、INT1均为下降沿触发 GIFR=0xc0; SREG=0x80; while(1) ; } 清INT0、INT1的中断标志位 开放全局中断使能
相关文档
最新文档