AVR定时计数器0的寄存器配置.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
AVR定时计数器0的寄存器配置

T/C0是一个通用的单通道8位定时器/计数器模块。其主要的特点如下: 单通道计数 比较匹配时清零计数器(自动重装/加载) 无干扰脉冲,相位正确的PWM 频率发生器 外部事件计数器 10位的时钟预分频器 溢出和比较匹配中断源 (TOV0 和 OCF0) 与T/C0相关的寄存器 T/C0计数寄存器—TCNT0 通过T/C 寄存器可以直接对计数器的8 位数据进行读写访问。对 TCNT0寄存器的写访问将在下一个时钟阻止比较匹配。在计数器运行的过程中修改TCNT0的数值有可能丢失一次TCNT0和OCR0 的比较匹配。计数器每一次加一操作都会使TCNT0的数值加1。 输出比较寄存器—OCR0 输出比较寄存器包含一个8 位的数据,不间断地与计数器数值TCNT0进行比较。匹配事件可以用来产生输出比较中断,或者用来在OC0引脚上产生波形。 定时/计数中断屏蔽寄存器—TIMSK OCIE为比较匹配中断允许标志位,置1时表示允许。 TOIE为溢出中断允许标志位,置1时表示允许。 定时计数中断标志寄存器—TIFR OCF为比较输出的中断标志位,当比较匹配成功时,OCF被设为1,程序转入执行相应的中断函数,OCF由硬件自动清零,写入逻辑1可以清除该标志位。 TOV为溢出中断标志位,当产生溢出时,TOV被设为1,程序转入执行相应的中断函数,TOV同样由硬件自动清零,写入逻辑1可清除标志位。 T/C0控制寄存器—TCCR0 他用于选择计数器的计数源、工作模式、和比较输出等方式。 FOCO:强制输出比较 FOC0 仅在WGM00指明非PWM模式时才有效。但是,为了保证与未来器件的兼容性,在使用PWM 时,写TCCR0 要对其清零。对其写1 后,波形发生器将立即进行比较操作。比较匹配输出引脚 OC0 将按照COM01:0的设置输出相应的电平。要注意FOC0 类似一个锁存信号,真正对强制输出比较起作用的是COM01:0的设置。FOC0 不会引发任何中断,也不会在利用OCR0 作为TOP的CTC模式下对定时器进行清零的操作。读FOC0 的返回值永远为0。 WGM0:波形发生模式 这几位控制计数器的计数序列,计数器的最大值TOP,以及产生何种波形。模式选择见下表: COM0:比较匹配输出方式 这些位决定了比较匹配发生时输出引脚OC0的电平。如果COM01:0中的一位或全部都置位,OC0以比较匹配输出的方式进行工作。同时其方向控制位??设置为1 以使能输出驱动器。 比较输出模式,非PWM 模式(WGM为0和2模式) 比较输出模式,快速PWM 模式(WGM为3模式) 比较输出模式,相位修正PWM 模式(WGM为1模式) CS0:时钟选择 示例代码: 用T/C0控制PD端口外接led每秒闪烁一次 T=(2^8-计数初值)*晶振周期*分频数=(2^8-计数初值)/晶振频率*分频数 计数初值=2^8-T/晶振周期/分频数=2^8-T*晶振频率/分频数 #includemega16.h int i=0; interrupt [10] void timer1_ovf_isr(void) //定义T/C0溢出中断函数 { i++; if (i==500) //每中断500次就闪烁一次 { PORTD=~PORTD; i=0; }; }//1秒中断函数 void main(void) { DDRD=0XFF; //设定PD口为输出控灯。 TCCR0=0x02; //8分频 TCNT0=0x38; //置计数初始值,对应十进制为56,从计数开始到溢出一共要200us TIMSK=0x01; //合上T0中断分开关 SREG.7=0x80; //合上中断总开关 while (1); //循环程序(空) }

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档