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

AVR教程(12):ATmega16?简介(六) 作者:微雪电子 文章来源: 点击数: 89 更新时间:2008-4-1 23:45:28 ATmega16 控制和状态寄存器MCUCSR AVR 控制和状态寄存器提供了有关引起AVR复位的复位源的信息。 ? Bit 4 – JTRF: JTAG 复位标志 通过JTAG 指令AVR_RESET 可以使JTAG 复位寄存器置位,并引发MCU 复位,并使JTRF 置位。上电复位将使其清零,也可以通过写”0” 来清除。 ? Bit 3 – WDRF: 看门狗复位标志 看门狗复位发生时置位。上电复位将使其清零,也可以通过写”0” 来清除。 ? Bit 2 – BORF: 掉电检测复位标志 掉电检测复位发生时置位。上电复位将使其清零,也可以通过写”0” 来清除。 ? Bit 1 – EXTRF: 外部复位标志 外部复位发生时置位。上电复位将使其清零,也可以通过写”0” 来清除。 ? Bit 0 – PORF: 上电复位标志 上电复位发生时置位。只能通过写”0” 来清除。为了使用这些复位标志来识别复位条件,用户应该尽早读取此寄存器的数据,然后将其复位。如果在其他复位发生之前将此寄存器复位,则后续复位源可以通过检查复位标志来了解。 ATmega16 基准电压使能信号和启动时间 ATmega16 具有片内能隙基准源,用于掉电检测,或者是作为模拟比较器或ADC的输入。ADC 的2.56V 基准电压由此片内能隙基准源产生。 电压基准的启动时间可能影响其工作方式。启动时间列于Table 16。为了降低功耗,可以控制基准源仅在如下情况打开: 1. BOD 使能 ( 熔丝位BODEN 被编程) 2. 能隙基准源连接到模拟比较器(ACSR 寄存器的ACBG 置位) 3. ADC 使能 因此,当BOD 被禁止时,置位ACBG 或使能ADC 后要启动基准源。为了降低掉电模式的功耗,用户可以禁止上述三种条件,并在进入掉电模式之前关闭基准源。? ATmega16 看门狗定时器 看门狗定时器由独立的1 Mhz 片内振荡器驱动。这是VCC = 5V 时的典型值。请参见特性数据以了解其他VCC 电平下的典型值。通过设置看门狗定时器的预分频器可以调节看门狗复位的时间间隔,如P41Table 17 所示。看门狗复位指令WDR 用来复位看门狗定时器。此外,禁止看门狗定时器或发生复位时定时器也被复位。复位时间有8 个选项。如果没有及时复位定时器,一旦时间超过复位周期, ATmega16 就复位,并执行复位向量指向的程序。具体的看门狗复位时序在P39 有说明。 为了防止无意之间禁止看门狗定时器,在看门狗禁用后必须跟一个特定的修改序列。详见看门狗定时器控制寄存器。 看门狗定时器控制寄存器-WDTCR ? Bits 7..5 – Res: 保留位 ATmega16 保留位,读操作返回值为零。 ? Bit 4 – WDTOE: 看门狗修改使能 清零WDE 时必须置位WDTOE,否则不能禁止看门狗。一旦置位,硬件将在紧接的4 个时钟周期之后将其清零。请参考有关WDE 的说明来禁止看门狗。 ? Bit 3 – WDE: 使能看门狗 WDE为1“ 时,看门狗使能,否则看门狗将被禁止。只有在WDTOE为1“ 时WDE 才能清零。以下为关闭看门狗的步骤: 1. 在同一个指令内对WDTOE 和WDE 写1“,即使WDE 已经为1“ 2. 在紧接的4 个时钟周期之内对WDE 写0” ? Bits 2..0 – WDP2, WDP1, WDP0: 看门狗定时器预分频器2, 1 和 0 WDP2、WDP1 和WDP0 决定看门狗定时器的预分频器,如Table 17 所示。 下面的例子分别用汇编和C 语言实现了关闭WDT 的操作。在此假定中断处于用户控制之下 ( 比如禁止全局中断) ,因而在执行下面程序时中断不会发生。 汇编代码例程 WDT_off: ; WDT 复位 WDR ; 置位 WDTOE 和 WDE in r16, WDTCR ori r16, (1WDTOE)|(1WDE) out WDTCR, r16 ; 关闭WDT ldi r16, (0WDE) out WDTCR, r16 ret C 代码例程 void WDT_off(void) { /* WDT 复位*/ _WDR(); /* 置位 WDTOE 和 WDE*/ WDTCR |= (1WDTOE) | (1WDE); /* 关闭WDT */ WDTCR = 0x00; }? ATmega16 本节描述ATmega16的中断处理。 Table 19给出了不同的BOOTRST/IVSEL设置下的复位和中断向量的位置。如果程序永远不使能中断,中断向量就没有意义。用户可

文档评论(0)

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

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

1亿VIP精品文档

相关文档