Y.柚 2023-06-13 20:57 采纳率: 16.7%
浏览 28

C51单片机,实现LED灯循环点亮的程序所出现的问题

为什么我增大对计数器的赋值,LED灯循环间隔反而减小,而我减小计数器赋值,LED循环间隔反而增大


     ORG  0000H
      LJMP MAIN
      ORG  0003H
      LJMP INTER
      ORG  0020H
MAIN: MOV  SP,#60H
      MOV  TMOD,#01H
      SETB EA
      CLR  IT0
      SETB IE0
      SETB EX0
      SETB TR0
      CLR  C
      MOV  A,#01H
      MOV  P1,A
      MOV  R0,#14H
TIM1: MOV  TH0,#0E8H
      MOV  TL0,#0ECH
      JNB  TF0,$
      CLR  TF0
      DJNZ R0,TIM1
      JNC  RL0
RR0:  RR A
      MOV  P1,A
      LJMP TIM1
RL0:  RL A
      MOV  P1,A
      LJMP TIM1
INTER:CPL C
      RETI
      END


  • 写回答

3条回答 默认 最新

  • 虫鸣@蝶舞 2023-06-13 21:35
    关注

    TMOD=1时是计数方式1:计数位数是16位,由TL0作为低8位、TH0作为高8位,组成了16位加1计数器
计数个数与计数初值的关系为:X=2^16-N
    通俗来讲,就是TH0和TL0设置了初值为10000,那么51芯片会从10000+1,也就是10001、10002这样累加,知道65535中断,所以TH0和TL0初值越大,累加值越小,才会有你跑马灯的效果。你可以看看C51计时器的教程(https://www.cnblogs.com/Poppings/p/14556300.html)

    评论

报告相同问题?

问题事件

  • 创建了问题 6月13日

悬赏问题

  • ¥15 三分类机器学习模型可视化分析
  • ¥15 本地测试网站127.0.0.1 已拒绝连接,如何解决?(标签-ubuntu)
  • ¥50 Qt在release捕获异常并跟踪堆栈(有Demo,跑一下环境再回答)
  • ¥30 python,LLM 文本提炼
  • ¥15 关于将inet引入的相关问题
  • ¥15 关于一个倒计时的操作和显示设计
  • ¥15 提问STK的问题,哪位航天领域的同学会啊
  • ¥15 苹果系统的mac m1芯片的笔记本使用ce修改器使用不了
  • ¥15 单相逆变的电压电流双闭环中进行低通滤波PID算法改进
  • ¥15 关于#java#的问题,请各位专家解答!