时间函数millis( )


应用millis函数可获取机器运行的时间长度,单位ms。系统最长的记录时间为9小时22分,如果超出时间将从0开始。函数返回值为unsigned long型,无参数。函数原型如下:

unsigned long millis()
{
      unsigned long m;
      uint8_t oldSREG = SREG;

      cli();
      m = timer0_millis;
      SREG = oldSREG;

      return m;
}

注意:函数返回值为unsigned long型,如果用int型保存时间将得到错误结果。

可以在开发环境的下列实例程序中找到millis函数的应用:

BlinkWithoutDelay.pde、Calibration.pde、Debounce.pde


注:

CLI()是关中断SEI()是开中断

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Arduino 编程中,millis() 函数用于返回自程序启动以来的毫秒数。它是一个无符号长整型数,可以存储大约 50 天左右的时间,然后溢出重新开始计数。通常情况下,我们使用 millis() 函数来实现计时、延迟等等功能。例如,要实现一个每隔一秒钟闪烁一次 LED 的程序,可以使用以下代码: ``` void setup() { pinMode(LED_BUILTIN, OUTPUT); } void loop() { digitalWrite(LED_BUILTIN, HIGH); // 点亮 LED delay(1000); // 延迟 1 秒 digitalWrite(LED_BUILTIN, LOW); // 熄灭 LED delay(1000); // 延迟 1 秒 } ``` 上述代码使用了 delay() 函数来进行延迟,但是这种方式会阻塞程序的执行,因此无法同时执行其他任务。我们可以改用 millis() 函数来实现非阻塞式的延迟,如下所示: ``` void setup() { pinMode(LED_BUILTIN, OUTPUT); } void loop() { static unsigned long lastTime = 0; // 上一次闪烁的时间 unsigned long currentTime = millis(); // 当前时间 if (currentTime - lastTime >= 1000) { // 如果已经过去了 1 秒钟 digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN)); // 反转 LED 状态 lastTime = currentTime; // 更新上一次闪烁的时间 } } ``` 上述代码使用了一个静态变量 lastTime 来保存上一次闪烁的时间,然后每次循环都计算当前时间与上一次时间的差值,如果差值大于等于 1000 毫秒(即已经过去了 1 秒钟),就反转 LED 的状态,并更新上一次闪烁的时间。这种方式可以实现非阻塞式的延迟,程序可以同时执行其他任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值