网站大量收购独家精品文档,联系QQ:2885784924

第8章定时器资源及其应用.ppt

  1. 1、本文档共122页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章定时器资源及其应用概要

* T1工作模式-普通模式 WGM1[3:1]=0 T1工作在普通模式下 普通模式与T0相似,只是TCNT1是16位 TCNT1最大值是0xFFFF * T1工作模式-CTC模式 WGM1[3:0]=4、12 OCR1A、ICR1用于调节分辨率 WGM1[3:0]=4时,TCNT1与OCR1A匹配可引发OCF1A中断并可影响OC1A输出 WGM1[3:0]=12时,TCNT1与ICR1匹配可引发ICF1中断,能否影响输出呢?主要应用在何种情况?? * T1工作模式-快速PWM模式 WGM1[3:0]=5、6、7、14、15 与T0相比TOP值可调,T0的TOP为0xFF,T1的TOP可为 0x00FF(8bit)—— WGM1[3:0]=5 0x01FF(9bit)—— WGM1[3:0]=6 0x03FF(10bit)——WGM1[3:0]=7 OCR1A —— WGM1[3:0]=15 ICR1 —— WGM1[3:0]=14 频率可调 可以在OC1A和OC1B输出波形 * T1工作模式-快速PWM模式 TOP值固定时,计数溢出置位TOV1,TOP值是OCR1A、ICR1时,计数溢出置位TOV1,同时置OCF1A或ICF1 精度(频率)可调,最大16位PWM,最小2位PWM 可以在OC1A和OC1B输出波形 * T1工作模式-相位可调PWM模式 WGM1[3:0]=1、2、3、10、11 与T0相比TOP值可调,T0的TOP为0xFF,T1的TOP可为 0x00FF(8bit)—— WGM1[3:0]=1 0x01FF(9bit)—— WGM1[3:0]=2 0x03FF(10bit)——WGM1[3:0]=3 OCR1A —— WGM1[3:0]=11 ICR1 —— WGM1[3:0]=10 * T1工作模式-相位可调PWM模式 TOP值是OCR1A、ICR1时,计数至TOP置位OCF1A或ICF1 计数至0x0000时,置位TOV1 精度(频率)可调,最大16位PWM,最小2位PWM 可以在OC1A和OC1B输出波形 * T1工作模式-相频可调PWM模式 WGM1[3:0]=8、9 工作过程与WGM1[3:0]=10、11基本相同 唯一的区别是当修改TOP值时,相位可调模式会产生不对称PWM,而相频调整模式不会产生不对称PWM * T1应用实例 数字表 4位7段LED显示时间,一位dp显示秒 7段LED需要2ms定时刷新 7.3728M外部时钟提高定时精度 使用T1定时1s溢出中断 使用T1比较匹配中断2ms定时刷新 * 数字表硬件电路 * T1应用实例 T1初始化 256分频,工作在普通模式0 1s溢出 TCNT1=0xFFFF-0x7080+1=0x8F80 2ms比较匹配 OCR1A-TCNT1=0x39 * T1应用实例 T1初始化 //TIMER1 initialize - prescale:256 // WGM: 0) Normal, TOP=0xFFFF // desired value: 1Sec // actual value: 1Sec (0.0%) void timer1_init(void) { TCCR1B = 0x00; //stop TCNT1H = 0x8F; //setup TCNT1L = 0x80; OCR1AH = 0x00; OCR1AL = 0x39; //desired value:2ms TCCR1A = 0x00; TCCR1B = 0x03; //start Timer TIMSK = 0x14; //timer interrupt sources SEI(); //re-enable interrupts } * T1应用实例 T1溢出中断 #pragma interrupt_handler timer1_ovf_isr:iv_TIMER1_OVF void timer1_ovf_isr(void) { TCNT1H = 0x8F; //reload counter high value TCNT1L = 0x80; //reload counter low value //处理用户计时程序 } * T1应用实例 #pragma interrupt_handler timer1_compa_isr:iv_TIMER1_COMPA void timer1_compa_isr(void) { //compare occured TCNT1=OCR1A OCR1A+=0x0039; //更新LED } * T1应用实例 #pragma interr

文档评论(0)

wyjy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档