1 / 9

AVR 单片机软硬件设计教程 - 入门篇 —— 学单片机就要学 AVR !

AVR 单片机软硬件设计教程 - 入门篇 —— 学单片机就要学 AVR !. 主 讲 : 尹延辉 策 划:张 勇 学习板: LT-Mini-M16 力天电子版权所有 技术交流 QQ 群: 31646346 www.lt430.com 2008年 9 月. 第六讲 中断与定时器. 本讲内容: 中断的概念 M16 的外部中断 定时器的概念 M16 的定时器 中断方式使用定时器. 中断的概念. 在程序运行期间,发生非预期的紧急事件 通常是为了避免查询方式的程序设计 用得最多的是外部中断与定时器中断 外部中断:按键程序

unity
Télécharger la présentation

AVR 单片机软硬件设计教程 - 入门篇 —— 学单片机就要学 AVR !

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. AVR单片机软硬件设计教程-入门篇——学单片机就要学AVR!AVR单片机软硬件设计教程-入门篇——学单片机就要学AVR! 主 讲: 尹延辉 策 划:张 勇 学习板:LT-Mini-M16 力天电子版权所有 技术交流QQ群:31646346 www.lt430.com 2008年9月

  2. 第六讲中断与定时器 • 本讲内容: • 中断的概念 • M16的外部中断 • 定时器的概念 • M16的定时器 • 中断方式使用定时器

  3. 中断的概念 • 在程序运行期间,发生非预期的紧急事件 • 通常是为了避免查询方式的程序设计 • 用得最多的是外部中断与定时器中断 • 外部中断:按键程序 • 定时器中断:定时与循环扫描等应用场合 • 中断服务程序 • 中断发生时,主程序暂停,跳转到中断服务程序,称为“响应中断” • 执行完毕后返回主程序继续运行

  4. M16的外部中断 • M16具有3个外部中断 • INT0、INT1: • 支持4种触发模式,同步触发 • INT2 • 支持2种触发模式,异步触发 • 中断相关库函数的头文件 • avr/interrupt.h • 中断服务程序 SIGNAL(SIG_INTERRUPT0) { //此处添加中断服务代码 } • 中断有关的寄存器 • MCUCR • MCUCSR • GICR

  5. 外部中断使用步骤 • 第1步:包含头文件 • #include <avr/interrupt.h> • 第2步:设置中断触发方式 • 任意逻辑电平变化: MCUCR |= (1 << ISC10); • 下降沿触发:MCUCR |= (1 << ISC10)|(1 << ISC11); • 上升沿触发:MCUCR |= (1 << ISC11); • 第3步:使能响应相应外部中断 • GICR |= (1 << INT0); • 第4步:使能全局中断 • sei(); • 第5步:编写中断服务程序 • SIGNAL(SIG_INTERRUPT0){}

  6. 定时器的概念 • 8位定时/计数器的模型 • 1个8位长度计数寄存器,可以对其进行读写 • 1个时钟输入端口,计数寄存器对时钟输入端口的时钟脉冲个数进行加1计数,即每来一个时钟脉冲,寄存器的数值自加1 • 如何实现精确定时? • 给计数寄存器设定初值n0 • 给时钟输入端口输入一个频率精确的方波方波周期为t0 • 计数器计数到256时定时器溢出,时间间隔为: △T = (256 – n0) ×t0 • 定时器溢出时可以产生中断

  7. 定时器溢出方式的应用 • M16的定时器0 • 8位定时器 • 具有PWM功能 • 定时器0相关寄存器 • T/C 控制寄存器- TCCR0 • 设置时钟源频率 • T/C 寄存器- TCNT0 • 计数寄存器 • T/C 中断屏蔽寄存器- TIMSK • 需要使用溢出中断时 • T/C 中断标志寄存器- TIFR • 查询是否溢出

  8. 定时器0溢出方式查询模式使用步骤 • 第1步:设置TC寄存器初值 • TCNT0 = 55; • 第2步:开启时钟,同时TC0启动 • TCCR0 |= (1 << CS01); • 第3步:查询TIFR寄存器的TOV0位 • while(!(TIFR & TOV0));

  9. 定时器0溢出方式中断模式使用步骤 • 第1步:包含中断函数头文件 • #include <avr/interrupt.h> • 第2步:设置TC寄存器初值 • TCNT0 = 55; • 第3步:使能TC0溢出中断 • TIMSK |= (1 << TOIE0); • 第4步:编写TC0溢出中断服务程序 SIGNAL(SIG_SIG_OVERFLOW0) {//此处添加中断服务程序代码} • 第5步:开启时钟,同时TC0启动 • TCCR0 |= (1 << CS01); • 第6步:使能全局中断 • sei();

More Related