⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 avr外部中断范例 interrupt.htm

📁 avr硬件软件开发的一些总结 用AVR单片机模拟的串口程序 AVR基本硬件线路设计与分析 等等
💻 HTM
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!-- saved from url=(0048)http://www.avrvi.com/avr_examples/interrupt.html -->
<HTML 
xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>AVR外部中断范例 interrupt</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="AVR 新手入门 单片机 AVR与虚拟仪器网站提供" name=description>
<META content="古欣 guxin[at]mail.sdu.edu.cn" name=author>
<META content="AVR 单片机 新手入门 手把手教程 avr程序 avr范例" name=keywords>
<STYLE title=css_design_by_guxin type=text/css media=all>@import url( ../inc/article.css );
</STYLE>
<LINK media=all href="AVR外部中断范例 interrupt.files/article.css" type=text/css 
rel=stylesheet>
<META content="MSHTML 6.00.2900.3199" name=GENERATOR></HEAD>
<BODY>
<DIV class=m>
<H1 class=c>AVR与虚拟仪器 www.avrvi.com</H1></DIV>
<DIV class=m>
<DIV id=head>
<P class=c>AVR与虚拟仪器致力于提供最优质的AVR和labview技术服务,最全的技术资料,最好的开发板方案。</P>
<P class=c>我们将以AVR DB-CORE Ver2.3 Atmega16开发板为平台,一步一步,教会大家AVR单片机编程。</P>
<P class=c>本站所有范例都采用ICC编写,ICC编译器加AVR Studio下载调试,下载器为JTAG&amp;ISP下载编程器。 
</P></DIV></DIV>
<DIV class=m>
<DIV id=now>你现在的位置:<A href="http://www.avrvi.com/">AVR与虚拟仪器</A>&gt;&gt;<A 
href="http://www.avrvi.com/index_avr_examples.html">AVR使用范例</A>&gt;&gt;AVR外部中断范例<SPAN><A 
title=AVR与虚拟仪器论坛 href="http://bbs.avrvi.com/">论坛</A></SPAN></DIV></DIV>
<DIV class=m>
<H3>AVR使用范例--AVR外部中断范例</H3>
<DIV class=pad10>
<P>本页关键词: 单片机外部中断 外部中断的应用 AVR外部中断 INTERUPTS </P>
<P class=title>关于AVR中断:</P>
<P>系统在正常运行主程序时,如果突然有一个重要的任务要马上处理,那么系统就要保存现在的工作,然后再去处理这个任务,执行这个重要任务完毕以后再返回原来的主程序继续运行,这就是中断。</P>
<P><SPAN 
class=red>主程序一旦进入中断服务程序,那么AVR芯片将自动的关闭全局中断,在这个期间不再执行其它的中断请求,直到中断程序结束以后芯片才自动的重新开放全局中断。</SPAN>(注意,在这个期间某些中断请求可能会被丢弃,某些请求会留下中断请求标致,一旦当前的中断执行完毕,这个有中断标致的请求就有可能马上得到响应,如INT0的下降沿触发就会留下中断请求标致,而低电平触发就不会流下中断请求标致)。如果你想在执行中断服务程序时响应另外一个更重要的中断,那么就要在中断服务程序中加入一条打开全局中断的语句。</P>
<P class=title>使用ICC快速建立中断服务程序 <A title=打开ICC生成的程序文件 
href="http://www.avrvi.com/avr_examples/icc_interupts.txt">程序文件</A>[txt]</P>
<P>使用ICCAVR Application Builder进行如下图所示的设置。 可以设置是否使用中断,上升延,下降延,低电平,任意的逻辑电平变化。</P>
<P><IMG height=488 alt=设置外部中断可用 src="AVR外部中断范例 interrupt.files/interrupt_1.gif" 
width=520></P>
<P>将生成的程序进行修改,DDRA = 0x01;PORTD = 0x0C; ,添加MAIN函数,如下 </P>
<UL>
  <LI><PRE>//ICC-AVR application builder : 2006-12-8 17:04:44
// Target : M16
// Crystal: 7.3728Mhz

#include &lt;iom16v.h&gt;
#include &lt;macros.h&gt;

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对应口为<SPAN class=red>输入</SPAN>
}

#pragma interrupt_handler int0_isr:2
void int0_isr(void)
{
 //external interupt on INT0
 i++;  <SPAN class=gray>//在中断里进行操作</SPAN>
}

#pragma interrupt_handler int1_isr:3
void int1_isr(void)
{
 //external interupt on INT1
 PORTA = 0x01;<SPAN class=gray>     //在中断里进行操作</SPAN>
}

//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)   //死循环等待中断
 ;
}</PRE></LI></UL>
<P class=title>相关解释</P>
<OL>
  <LI>#pragma interrupt_handler int0_isr:2 
  <LI>中断的约定表示方法:<SPAN class=red>int0_isr</SPAN>有一个与之对应的应用程序void 
  int0_isr(void),<SPAN class=red>2</SPAN>为中断向量,值越小,优先级越高,INT0的优先级仅次于复位。 
  <LI>MCU 控制寄存器- MCUCR MCU 控制寄存器包含中断触发控制位与通用MCU 功能 
  <LI>通用中断控制寄存器- GICR 使能或禁用外部中断请求 </LI></OL>
<P>使用过程中:为了降低干扰,中断引脚请加上一个4.7K的上拉电阻,还可以根据实际需要,加上电容滤波,防抖动。</P>
<P>更详细的内容,AVR外部中断,时钟中断,串行通信,IIC综合实例 <A title=文本文档,中断示例程序 
href="http://www.avrvi.com/avr_examples/interupts.txt">一个中断示例程序</A>[txt]</P></DIV></DIV>
<DIV class=m>
<H4 id=link><A href="http://www.avrvi.com/">AVR 与虚拟仪器</A>欢迎交换链接,请与小古联系 
avrvi【at】163.com </H4>
<SCRIPT src="AVR外部中断范例 interrupt.files/links.js" type=text/javascript></SCRIPT>

<SCRIPT src="AVR外部中断范例 interrupt.files/footer.js" type=text/javascript></SCRIPT>
</DIV></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -