【精品】第七讲AVR单片机定时器、计数器.ppt
文本预览下载声明
第七讲 AVR定时器/计数器 黄文恺 1.定时与计数原理 计数原理(溢出、比较匹配) 定时原理 事件捕获原理 PWM 原理(下节课内容) 计数原理(1) 计数原理(2) 定时原理 事件捕获原理 2.ATmega16定时/计数器资源 T/C的预分频器 8位定时/计数器T/C0、T/C2 T/C2的异步操作 PWM模式下的T/C0、T/C2(下节课内容) 16位定时/计数器T/C1 PWM模式下的T/C1(下节课内容) T/C1、0的预分频器 8位定时/计数器T/C0、T/C2(1) OC开头的功能引脚都具备定时器和计数器功能。 8位定时/计数器T/C0、T/C2(2) ATmega16的8位定时/计数器用户可以控制: T/C2的异步操作 16位定时/计数器T/C1 如同8位的定时/计数器,ATmega16的16位定时/计数器T/C1用户也是可以控制的: 3. 8位定时/计数器应用举例 T/C2用作实时时钟 T/C0作定时器 T/C2用作实时时钟 应用课题1:利用定时器T/C2的实时 时钟晶振,产生1s断, 并在PD7引脚输出0.5Hz 的方波。 T/C0作定时器 应用课题2:使用定时器T/C0的内部 时钟晶振,产生1ms中 断, 并扩展成1s定时信 号,每秒钟使PA.5的状 态改变1次。 课堂练习 请使用3.2768M晶振,使用定时器1的CTC模式来进行计数。分频数为1024,请设计OCR1A输出周期为0.5S的方波,和OCR1B输出周期为0.25s的方波.(接LED灯). 设计思想 定时器时间常数的计算: 系统时钟4.000MHz,64分频62.5kHz作为定时器计数脉冲频率。 定时计数器加1的时间为1/62.5=0.016ms, 定时1ms,需要计数1/0.016=62.5。使用定时器CTC工作方式,比较值应置为62即0x3E或63即0x63。1ms的定时有误差。 从1ms到1s: 1s=1000ms,在1ms的中断程序中设计一计数器jishu,当jishu=1000时,时间即为1s。 程序设计与分析 #include mega16.h #include macros.h int jishu=0;#pragma interrupt_handler Int_TCCR0: 20void Int_TCCR0(void){ jishu++; if(jishu==1000) {PORTA =PORTA^0 jishu=0; } } void main(void) { PORTA=0x00; DDRA=0xFF; TCCR0=0x0B; TCNT0=0x00; OCR0=0x3E; TIMSK=0x02; SEI(); while (1) { }; } //应该定义成 int,不能定义成 char //计数器jishu加1 //当jishu=1000,表明1s时间到 //按课题要求输出 //jishu清“0”,很重要 //定义PA口输出 //CTC模式,系统频率64分频,OC0引脚断开 //1ms定时的比较值 //T/C0比较匹配中断开放 //总中断开放 * * 0xF5 计数——对外部事件进行统计,外部事件以输入有效 脉冲来表示。 计数器 溢出标志TF 初 值 中断请求 外部脉冲 0xF5 0xF5 1 S1 S2 0xF6 0xF7 0xF8 0xF9 0xFA 0xFB 0xFC 0xFD 0xFE 0xFF 0 中断开放 中断响应后溢出标志清“0” 当检测到有有效脉冲输入时,计数寄存器加1 启动计数器工作 当计数器计数溢出时的标志 初值寄存器作为计数器回0时的初始值 单片机的计数器用户是可以控制的(可编程的),包括计数器的启动、计数脉冲的有效方式、计数器的初值、计数溢出中断请求开放或禁止等。 0xFD 0xFF 0xFE 计数器 0xFA 0xF8 0xF9 0xFB 0xFC 初 值 比值寄存器 比较器 S1 S2 溢出标志TF 外部脉冲 比较匹配标志 S3 0xF8 计数器输出 OC触发 0xFC 0xF8 1 0xF9 1 0xFA 0xFB 中断请求2 中断请求1 0 定时——当计数器的计数脉冲频率恒定时,计数器所 记录的数值及代表了时间的概念。 定时功能是通过计数器的计数
显示全部