slide1
Download
Skip this Video
Download Presentation
AVR 单片机软硬件设计教程 - 入门篇 —— 学单片机就要学 AVR !

Loading in 2 Seconds...

play fullscreen
1 / 9

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


  • 187 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

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


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

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

主 讲: 尹延辉

策 划:张 勇

学习板:LT-Mini-M16

力天电子版权所有

技术交流QQ群:31646346

www.lt430.com

2008年9月

slide2
第六讲中断与定时器
  • 本讲内容:
  • 中断的概念
  • M16的外部中断
  • 定时器的概念
  • M16的定时器
  • 中断方式使用定时器
slide3
中断的概念
  • 在程序运行期间,发生非预期的紧急事件
  • 通常是为了避免查询方式的程序设计
  • 用得最多的是外部中断与定时器中断
  • 外部中断:按键程序
  • 定时器中断:定时与循环扫描等应用场合
  • 中断服务程序
  • 中断发生时,主程序暂停,跳转到中断服务程序,称为“响应中断”
  • 执行完毕后返回主程序继续运行
slide4
M16的外部中断
  • M16具有3个外部中断
  • INT0、INT1:
  • 支持4种触发模式,同步触发
  • INT2
  • 支持2种触发模式,异步触发
  • 中断相关库函数的头文件
  • avr/interrupt.h
  • 中断服务程序

SIGNAL(SIG_INTERRUPT0)

{

//此处添加中断服务代码

}

  • 中断有关的寄存器
  • MCUCR
  • MCUCSR
  • GICR
slide5
外部中断使用步骤
  • 第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){}
slide6
定时器的概念
  • 8位定时/计数器的模型
  • 1个8位长度计数寄存器,可以对其进行读写
  • 1个时钟输入端口,计数寄存器对时钟输入端口的时钟脉冲个数进行加1计数,即每来一个时钟脉冲,寄存器的数值自加1
  • 如何实现精确定时?
  • 给计数寄存器设定初值n0
  • 给时钟输入端口输入一个频率精确的方波方波周期为t0
  • 计数器计数到256时定时器溢出,时间间隔为:

△T = (256 – n0) ×t0

  • 定时器溢出时可以产生中断
slide7
定时器溢出方式的应用
  • M16的定时器0
  • 8位定时器
  • 具有PWM功能
  • 定时器0相关寄存器
  • T/C 控制寄存器- TCCR0
  • 设置时钟源频率
  • T/C 寄存器- TCNT0
  • 计数寄存器
  • T/C 中断屏蔽寄存器- TIMSK
  • 需要使用溢出中断时
  • T/C 中断标志寄存器- TIFR
  • 查询是否溢出
slide8
定时器0溢出方式查询模式使用步骤
  • 第1步:设置TC寄存器初值
  • TCNT0 = 55;
  • 第2步:开启时钟,同时TC0启动
  • TCCR0 |= (1 << CS01);
  • 第3步:查询TIFR寄存器的TOV0位
  • while(!(TIFR & TOV0));
slide9
定时器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();
ad