首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让timer0在16位模式下使用1:64的预分频器?

如何让timer0在16位模式下使用1:64的预分频器?
EN

Stack Overflow用户
提问于 2013-07-12 01:51:47
回答 1查看 3.7K关注 0票数 2

我真的不太了解计时器,但我正在尝试更改timer0,使其在16位模式下使用1:64的预分频器?我从Microchip得到了定时器代码,它使用的是8位模式,没有预分频器。Download Files

这是代码的一部分,我怀疑它必须处理预分频器。

代码语言:javascript
复制
TMR_CON = 0b00000000 | CLOCK_DIVIDER_SETTING;
TMR_IP = 1;
TMR_IF = 0;
TMR_IE = 1;
TMR_ON = 1;

这是来自PIC18F87J11 DATASHEET的一些关于预分频器的信息

代码语言:javascript
复制
T0PS2:T0PS0: Timer0 Prescaler Select bits   
111 = 1:256 Prescale value
110 = 1:128 Prescale value
101 = 1:64   Prescale value
100 = 1:32   Prescale value
011 = 1:16   Prescale value
010 = 1:8     Prescale value
001 = 1:4     Prescale value
000 = 1:2     Prescale value

我假设要使用1:64预标量,必须将代码更改为以下代码,对吗?

代码语言:javascript
复制
TMR_CON = 0b00000101 | CLOCK_DIVIDER_SETTING;
TMR_IP = 1;
TMR_IF = 0;
TMR_IE = 1;
TMR_ON = 1;

现在,请告诉我如何将其从8位模式更改为16位模式?就像我说的,我是初学者,所以请向我的理解水平解释一下。

我提前感谢你了!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-12 16:47:03

摘自Microchip数据表:

代码语言:javascript
复制
T0CON: TIMER0 CONTROL REGISTER   

bit 7 TMR0ON: Timer0 On/Off Control bit
  1 = Enables Timer0
  0 = Stops Timer0
bit 6 T08BIT: Timer0 8-Bit/16-Bit Control bit
  1 = Timer0 is configured as an 8-bit timer/counter
  0 = Timer0 is configured as a 16-bit timer/counter
bit 5 T0CS: Timer0 Clock Source Select bit
  1 = Transition on T0CKI pin input edge
  0 = Internal clock (FOSC/4)
bit 4 T0SE: Timer0 Source Edge Select bit
  1 = Increments on high-to-low transition on T0CKI pin
  0 = Increments on low-to-high transition on T0CKI pin
bit 3 PSA: Timer0 Prescaler Assignment bit
  1 = TImer0 prescaler is not assigned; Timer0 clock input bypasses prescaler
  0 = Timer0 prescaler is assigned; Timer0 clock input comes from prescaler output
bit 2-0 T0PS<2:0>: Timer0 Prescaler Select bits
  111 = 1:256 Prescale value
  110 = 1:128 Prescale value
  101 = 1:64 Prescale value
  100 = 1:32 Prescale value
  011 = 1:16 Prescale value
  010 = 1:8 Prescale value
  001 = 1:4 Prescale value
  000 = 1:2 Prescale value

  1. 清除T08BIT位以选择16位模式。如果您不想将内部时钟(

/4)作为定时器0/预分频器输入,则

  1. 清除T0CS位。
  2. 清除PSA位以选择预分频器。
  3. 设置T0PS<2:0>以选择预分频器速率。
  4. 将TMR0ON设置为1 ro启用timer0。

这是相等的:

代码语言:javascript
复制
T0CON =b'10000nnn' //where nnn is Prescaler value

如果需要中断Timer0溢出,请同时启用Timer0中断位(GIE/GIEH、PEIE/GIEL、TMR0IE、TMR0IF)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17600157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档