• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

为什么进入单片机中断后,需要再给定时器赋值?

f034452e22d219a4 2020-07-06 浏览量:2085
为什么进入单片机中断后,需要再给定时器赋值?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  •   不是所有的单片机和其定时器对应的工作方式都需要赋初值,以51单片机为例,其在工作方式2时是自动重装初值的,不需要给TH0/TL0重新赋值;在其他工作方式下需要。定时器工作时其TH/TL的值是一直加,直到溢出得到中断。工作方式2是8位定时/计数器,其高8位被用来保存初值,来中断后就自动把保存在其中的初值付给定时计数器,而方式0是13位,方式1是16位的,2个寄存器都使用掉了,硬件不能保存初值,需要软件每次在中断中赋初值,而且能够赋初值,可以实现不同的定时时间,应用更加灵活。
    • 发布于 2020-07-07
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:10
  • 对于51单片机16位模式是需要重装的,不过如果可以用8位计数模式有自动重装功能
    • 发布于2020-07-07
    • 举报
    • 评论 0
    • 0
    • 0

  • 因为有些单片机没有16位重载模式。所以当定时器溢出之后,需要手动填初值,否则定时器下次计数会从0开始计数而不是从初值开始计数,那么你定时的时候就会出错。
    • 发布于2020-07-07
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个和单片机无关,这是定时器的种类,

    定时器有自动重装模式和手动装载模式。

    不管是单片机还是处理器,哪怕intel处理器里面的定时器,都是这样的

    • 发布于2020-07-07
    • 举报
    • 评论 0
    • 0
    • 0

  • 因为是定时器的溢出才会进入定时器中断,所以你需要在中断内重新给寄存器赋值,否则,定时器就会从0开始计时。
    • 发布于2020-07-07
    • 举报
    • 评论 0
    • 0
    • 0

  • 因为部分单片机没有重载模式!
    • 发布于2020-07-07
    • 举报
    • 评论 0
    • 0
    • 0

  • 只是对于51这样的不支持重装载的芯片才会这样的,STM32就不用,会自己进行重新配置的
    • 发布于2020-07-07
    • 举报
    • 评论 0
    • 0
    • 0

  • 只是对没有重加载功能的单片机才会在中断中重新赋值的,如51
    • 发布于2020-07-07
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个不是一概而论的,和单片机类型、型号和相应定时器之类的工作模式有关

    有些单片机 完全不支持定时器自动重置,则中断后均需要主动对定时器赋值

    有些单片机 其实是支持定时器自动重置的,但工作模式选择中,定时器是工作在手动重置模式下,所以需要手动赋值

    • 发布于2020-07-08
    • 举报
    • 评论 0
    • 0
    • 0

  • 如果是定时器中断,那自然要重新给定时器赋值,不然就一直进中断了
    • 发布于2020-07-22
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

为什么进入单片机中断后,需要再给定时器赋值?