如何用51单片机汇编语言优化该程序?

img

求解析谢谢 其程序我放在图片里了 如果优化和改进措施 应该改彩色字体就可以了

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/747716
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:蓝桥杯51单片机之数码管从点亮到动态时钟的实现【单片机开发初学者必掌握】
  • 除此之外, 这篇博客: 【51单片机 】定时器的初始值计算 详解中的 补充内容:关于定时器为什么进入中断后需要再次赋初始值? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 首先, 8051的定时器只有方式二为自动重载,意思进中断后出去会自动重新开始计数,如果你使用的是方式二,那么就不用重新赋值。(虽然方便,但定时器的每次最大定时时间变短了,计数器到达255us就会溢出)。
    其次,如果你采用的是其它方式,如:方式三的16位模式。在开始时,定时器减去初始装载值然后刚好达到需要的时间便溢出(这时候已经从65535跳为0了)进入中断。那么进入中断后TH0和TL0已经不是你在外面赋的初值了,出去会重新从0开始计算,这样会大大影响精度,所以需要在中断里重新赋初始值,保证出去后从上次的地方开始计数,这样就保证了精度。

    举个例子:你有一个计数器,从0-100s的,只有归0后才会响。但是你想设置10s就响一次,那么你并不需要等待0~100s这么长的时间,这个时候就需要给它一个初值了,设置从90s开始计数,达到100s后刚刚好为10s,这个时候计数器会响一次,但是响完后它已经是0了,想要重新响需要100s后才能响,所以,最好的办法就是响铃后自动给它重新定一个从90s开始的计数,这样就能实现每10s响一次了。

    定时器的原理便是如此。

  • 您还可以看一下 2017CCTC大会老师的【微服务专场】实施微服务架构的关键技术课程中的 实施微服务架构的关键技术小节, 巩固相关知识点