你好!欢迎来到深圳市颖特新科技有限公司!
语言
当前位置:首页 >> 技术中心 >> 单片机入门 >> AVR单片机中断

AVR单片机中断

关键字:AVR 单片机 中断 作者: 来源: 发布时间:2019-07-31  浏览:1

关于AVR中断:

系统在正常运行主程序时,如果突然有一个重要的任务要马上处理,那么系统就要保存现在的工作,然后再去处理这个任务,执行这个重要任务完毕以后再返回原来的主程序继续运行,这就是中断。

主程序一旦进入中断服务程序,那么AVR芯片将自动的关闭全局中断,在这个期间不再执行其它的中断请求,直到中断程序结束以后芯片才自动的重新开放全局中断。(注意,在这个期间某些中断请求可能会被丢弃,某些请求会留下中断请求标致,一旦当前的中断执行完毕,这个有中断标致的请求就有可能马上得到响应,如INT0的下降沿触发就会留下中断请求标致,而低电平触发就不会流下中断请求标致)。如果你想在执行中断服务程序时响应另外一个更重要的中断,那么就要在中断服务程序中加入一条打开全局中断的语句。

使用ICC快速建立中断服务程序 程序文件

使用ICCAVR Application Builder进行如下图所示的设置。 可以设置是否使用中断,上升延,下降延,低电平,任意的逻辑电平变化。

1.jpg

将生成的程序进行修改,DDRA = 0x01;PORTD = 0x0C; ,添加MAIN函数,如下

//ICC-AVR application builder : 2006-12-8 17:04:44

// Target : M16

// Crystal: 7.3728Mhz

#include

#include

unsigned int i=0;

void port_init(void)

{

PORTA = 0x00;

DDRA = 0x01;

PORTB = 0x00;

DDRB = 0x00;

PORTC = 0x00; //m103 output only

DDRC = 0x00;

PORTD = 0x0C; //使INT0,INT1对应口上拉电阻有效

DDRD = 0x00; //必须设置INT0,INT1对应口为输入

}

#pragma interrupt_handler int0_isr:2

void int0_isr(void)

{

//external interupt on INT0

i++; //在中断里进行操作

}

#pragma interrupt_handler int1_isr:3

void int1_isr(void)

{

//external interupt on INT1

PORTA = 0x01; //在中断里进行操作

}

//call this routine to initialize all peripherals

void init_devices(void)

{

//stop errant interrupts until set up

CLI(); //disable all interrupts

port_init();

MCUCR = 0x08; //INT1 的下降沿产生异步中断请求,INT0上升延

GICR = 0xC0; //INT0和INT1使能

TIMSK = 0x00; //timer interrupt sources

SEI(); //re-enable interrupts

//all peripherals are now initialized

}

void main(void)

{

init_devices();

while(1) //死循环等待中断

;

}

相关解释

#pragma interrupt_handler int0_isr:2

中断的约定表示方法:int0_isr有一个与之对应的应用程序void int0_isr(void),2为中断向量,值越小,优先级越高,INT0的优先级仅次于复位。

MCU 控制寄存器- MCUCR MCU 控制寄存器包含中断触发控制位与通用MCU 功能

通用中断控制寄存器- GICR 使能或禁用外部中断请求

使用过程中:为了降低干扰,中断引脚请加上一个4.7K的上拉电阻,还可以根据实际需要,加上电容滤波,防抖动。

【更多资源】

编辑:admin  最后修改时间:2019-07-31

联系方式

0755-82591179

传真:0755-82591176

邮箱:vicky@yingtexin.net

地址:深圳市龙华区民治街道民治大道973万众润丰创业园A栋2楼A08

Copyright © 2014-2023 颖特新科技有限公司 All Rights Reserved.  粤ICP备14043402号-4