找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4584|回复: 12
收起左侧

89c51怎么获取从开始运行到现在的时间?

[复制链接]
ID:308979 发表于 2018-5-19 14:13 | 显示全部楼层 |阅读模式
200黑币
目的是获得程序运转的时间,因为要对电机进行测速,外置了一个传感器;
现在已经能够从传感器得到了电机运转的圈数 count ,需要把count除以从通电开始到现在的时间才能得到速度。
请问这个时间要怎么做才能得到?


已有定时器程序如下: 捕获.PNG

最佳答案

查看完整内容

用一个定时器,50毫秒跳一次,二十次加一,主函数初始化完就开中断,就能计时了。随便设个整数变量。
回复

使用道具 举报

ID:308979 发表于 2018-5-23 14:36 | 显示全部楼层
优雅的刺猬 发表于 2018-5-19 14:13
用一个定时器,50毫秒跳一次,二十次加一,主函数初始化完就开中断,就能计时了。随便设个整数变量。

时间time能得到了,计数count也有了,可是显示不出来啊

我用的是四位共阳数码管,buf[]数组的0~3分别是四个位。显示其他数据的时候例如:buf[1] = 1;display();这样就能正常显示,但是速度count/time没法显示出来,不知道是不是数据类型的问题?

while(!s5) { //TODO  显示rs??
        rs = count/time;
        buf[3] = rs/1000 ;
        buf[2] = rs%1000/100;
        buf[1] = rs%100/10 ;
        buf[0] = rs%10;
        display();
}
回复

使用道具 举报

ID:308979 发表于 2018-5-23 13:59 | 显示全部楼层
优雅的刺猬 发表于 2018-5-22 23:43
用一个定时器,50毫秒跳一次,二十次加一,主函数初始化完就开中断,就能计时了。随便设个整数变量。

按回复结合另一个分享的帖子弄好了
回复

使用道具 举报

ID:335307 发表于 2018-5-23 00:01 来自手机 | 显示全部楼层
你可以设置一个中断,非常好用
回复

使用道具 举报

ID:137653 发表于 2018-5-22 11:58 | 显示全部楼层
弄一个标志位,开始的时候标志位等于0,然后再进入main函数初始化的时候标志位置1,然后到定时器判断标志位为1了就开始计时,就好了
回复

使用道具 举报

ID:295783 发表于 2018-5-22 08:27 | 显示全部楼层
设置开始到结束两个标志位 然后计算时间
不过我个人感觉不用算从开始的时间 没有什么必要
希望对你有帮助
回复

使用道具 举报

ID:334622 发表于 2018-5-21 09:35 | 显示全部楼层
用DS1302;也只能这样了……你想,单片机里面就定时器而已
回复

使用道具 举报

ID:334565 发表于 2018-5-21 00:53 | 显示全部楼层
需要计时的话,直接对单片机内部脉冲计数不就好了么,用一个整数的晶振,然后输出转换成时间不就是单片机开始到结束的时间了么
回复

使用道具 举报

ID:313895 发表于 2018-5-20 23:05 | 显示全部楼层
电机开始 设置一个标志位  定时器定时  关闭标志位 。之后计算
回复

使用道具 举报

ID:334309 发表于 2018-5-20 17:09 | 显示全部楼层
在10ms的中断服务程序中,增加一个计数器,就可以得到时间。那么电机打开的时候,记下这个起始的时间,用当前时间减去起始时间就可以得到运行时间
回复

使用道具 举报

ID:302650 发表于 2018-5-20 15:36 | 显示全部楼层
不用从运行开始算时间,你可以计算比如一秒时间内的圈数,开启计数器,同时开启计圈传感器,1秒后定时器溢出,引发中断,再关闭定时器,关闭计圈传感器。不就解决了。
回复

使用道具 举报

ID:302650 发表于 2018-5-20 15:30 | 显示全部楼层
为什么要从开始算哪?
回复

使用道具 举报

ID:336165 发表于 2018-5-19 14:13 | 显示全部楼层
用一个定时器,50毫秒跳一次,二十次加一,主函数初始化完就开中断,就能计时了。随便设个整数变量。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表