弘毅 发表于 2014-4-25 16:18:03

OCROBOT入门教程021--显示程序运行了多久

本帖最后由 弘毅 于 2014-5-28 12:05 编辑

这节课我们介绍一下两个函数millis()与micros(),这两个函数用于显示OCROBOT控制板从开始运行到当前的时间。
硬件部分没有外围电路,我们只需要USB连接好电脑就可以。

millis()
描述
返回OCROBOT开发板从运行当前程序开始的毫秒数。这个数字将在约50天后溢出(归零)。
参数

返回
返回从运行当前程序开始的毫秒数(无符号长整数)。
提示
注意,参数 millis 是一个无符号长整数,试图和其他数据类型(如整型数)做数学运算可能会产生错误。
当中断函数发生时,millis()的数值将不会继续变化。

我们把下面的代码下载进入控制板。

unsigned long time;

void setup(){
   Serial.begin(9600);
}
void loop(){
Serial.print("Time:");
time = millis();
//打印从程序开始到现在的时间
Serial.println(time);
//等待一秒钟,以免发送大量的数据
   delay(1000);
}




micros()
描述
返回 OCROBOT 开发板从运行当前程序开始的微秒数。这个数字将在约70分钟后溢出(归零)。在 16MHz 的 OCROBOT 开发板上(比如 MANGO 和 Nano),这个函数的分辨率为四微秒(即返回值总是四的倍数)。在 8MHz 的 OCROBOT产品上(比如 EASY),这个函数的分辨率为八微秒。
注意:每毫秒是1,000微秒,每秒是1,000,000微秒。
参数

返回
返回从运行当前程序开始的微秒数(无符号长整数)。
unsigned long time;

void setup(){
   Serial.begin(9600);
}
void loop(){
Serial.print("Time:");
time = micros();
//打印从程序开始的时间
Serial.println(time);
//等待一秒钟,以免发送大量的数据
   delay(1000);
}


gthrtg 发表于 2015-12-8 13:46:43

返回OCROBOT开发板从运行当前程序开始的毫秒数。这个数字将在约50天后溢出(归零)。

那我要设置几分钟后归零 该怎么改

弘毅 发表于 2015-12-9 20:58:32

gthrtg 发表于 2015-12-8 13:46 static/image/common/back.gif
返回OCROBOT开发板从运行当前程序开始的毫秒数。这个数字将在约50天后溢出(归零)。

那我要设置几分钟后 ...

自己定义一个变量,变量不停计数,数字到了清零。通过控制变量阀值来控制几分钟。

弘毅 发表于 2015-12-9 20:58:35

gthrtg 发表于 2015-12-8 13:46 static/image/common/back.gif
返回OCROBOT开发板从运行当前程序开始的毫秒数。这个数字将在约50天后溢出(归零)。

那我要设置几分钟后 ...

自己定义一个变量,变量不停计数,数字到了清零。通过控制变量阀值来控制几分钟。

gthrtg 发表于 2015-12-9 21:16:43

弘毅 发表于 2015-12-9 20:58 static/image/common/back.gif
自己定义一个变量,变量不停计数,数字到了清零。通过控制变量阀值来控制几分钟。

意思明白 怎么写却找不到头绪 求给个例子。

qwer1111 发表于 2015-12-18 15:59:31

本帖最后由 迷你强 于 2015-12-19 10:07 编辑

gthrtg 发表于 2015-12-9 21:16 static/image/common/back.gif
意思明白 怎么写却找不到头绪 求给个例子。

#define KEY A0
long randNumber;
int KEY_NUM = 0;
int i=0;
int x=1;
unsigned long time;
int interval = 1000;

void setup(){
Serial.begin(9600);
randomSeed(analogRead(A0));
pinMode(KEY,INPUT_PULLUP);
}

void loop()
{
   if(digitalRead(A0)==0){
   i=1;}
if(i == 1){
unsigned long startMillis = millis();
for(time = millis();startMillis + interval > time;)
{time=millis();}
Serial.println(x);
x++;
randNumber = random(600);
Serial.println(randNumber);

if(x==11){
    i=0;}
if(x>10){
    x=1;}

}
}

页: [1]
查看完整版本: OCROBOT入门教程021--显示程序运行了多久