首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >奇怪的是,如何预置Timer0的价值?

奇怪的是,如何预置Timer0的价值?
EN

Stack Overflow用户
提问于 2022-04-13 12:02:27
回答 1查看 54关注 0票数 0

我可以问一下,当设置Timer0值时,为什么在某些情况下人们必须使用减法来表示预设的Timer0,而不是直接使用它的结果(在这种情况下,是175 )?在这种情况下,UL后缀的目的是什么?

可检验:

X=255 Ul-80;

无效中断ISR(无效)

{

(T0IF)

{

中转站、中转站;

中转站、中转站;

(B).=

}

}

..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-17 05:15:07

微芯片文档描述了TIMER0模块的工作方式。

它没有很好地描述如何使用这个计数器/定时器模块的方法。

与当今任何现代嵌入式控制器相比,TIMER0模块的基本架构是非常原始的。还不清楚为什么微芯片坚持在新的8位PIC控制器中包括这个计数器/定时器模块。要明白,35年前,最大限度地利用最少数量的晶体管实现功能最大化是一项挑战,以便每个控制器芯片尽可能小,并且每个晶片产生最多的芯片。

TIMER0的工作方式是up计数器。当第一次实现时,控制器根本不支持中断。参见基线控制器(如PIC12F508 )。中程控制器(如PIC16F877 )增加了对中断的支持,TIMER0获得了当8位计数寄存器从0xFF转到0x00时请求中断的功能。当TIMER0计数寄存器从0x00开始时,TIMER0需要256个计数才能断言中断请求。当需要在一定数量的计数之后断言中断时,将计数寄存器设置为256-(Specific_Number_Of_Counts)值,然后清除TIMER0中断请求。

开发人员使用此特性使TIMER0中断请求在特定数量的计数后断言。

在你的问题中的例子中有一个“一对一”的错误:

X=255 Ul-80;

由于TIMER0计数寄存器的值在80次计数后将为0xFF,而TIMER0中断请求将在81次计数后设置。

问题中的示例代码“暗示”您希望在TIMER0被计时80次之后调用"abc()“函数。在TIMER0被计时81次之后,这个函数实际上将被调用。

还要注意的是,TIMER0的仿真模型没有循环精确的实现,因此不能准确地模拟实际情况。这种模拟缺陷存在于8位PIC控制器的所有MPLABX版本中.请注意,模拟器不会提供与现实世界硬件相匹配的周期计数。

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

https://stackoverflow.com/questions/71857194

复制
相关文章

相似问题

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