利用定时器实现51单片机返回上电运行时间功能

我们知道在windows等操作系统里可以调用API函数获取系统运行的时间。在Arduino里也有两个函数millis()和micros(),可以分别获得Arduino程序从上电以来累计运行时间的毫秒数和微秒数。我们可以利用51单片机的定时器中断实现这个功能。

具体实现的思路是设置1个长整型的全局时间变量sysRunmillis保存单片机上电后的运行时间。让定时器每1毫秒产生1次中断,在中断响应函数里让全局变量sysRunmillis自加1。这个长整型的变量最大值是4294967295毫秒,换算下来就是49天17时2分47秒,然后从0开始继续计时。

这样我们可以在程序里随时读取当前时间,实现精确计时、软件延时等功能。比如要延时n毫秒,我们可以用下面的代码实现:

Void delaynmillis(unsigned int n)

{

Unsigned long t;

t=sysRunmillis;//先保存当前时间

While(sysRunmillis-t<n);循环等待直到n毫秒

  }

下面的程序实时显示51单片机上电运行的时间,其中大部分代码用来实现在动态数码管上显示时间。

/*
利用定时器中断实现51单片机输出系统上电累计运行时间
****李兰林,2020年12月6日,甘肃白银
*/
#include <reg51.h>
#in
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值