找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2135|回复: 4
打印 上一主题 下一主题
收起左侧

新人求教51单片机中的一个C函数。

[复制链接]
跳转到指定楼层
楼主
ID:163873 发表于 2017-2-10 14:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
PC上,有一个函数是GetTickCount(),获取当前系统运行后的毫秒数。
我想问问,51里有没有这个函数???

我想要实现的功能是,计算2次外部中断之间所经过的时间,或者是系统计数器减少了多少值。外部中断可以使一个霍尔、或者是一个红外光耦,或者是一个按键。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:123289 发表于 2017-2-12 07:31 | 只看该作者
假设是可以的:请问,系统运行后的毫秒数放在何处,由“谁”生成这个计时的东东呢?
看来楼主对PC机上的GetTickCount()是如何产生的,也一无所知。
回复

使用道具 举报

板凳
ID:123289 发表于 2017-2-12 07:47 | 只看该作者
如何计算2次外部中断之间所经过的时间?
1、增加一个计时器如:JS,JS由另一个时间中断程序进行控制,要求时间中断级别高于外部中断。
2、在外部中断程序中:先停止JS,再统计JS的时间(就是你需要的),再复位起动JS为下次统计做准备。
这样:只有第一次外部中断后,得到的JS时间是错误的,以后每次得到的时间就是需要的了。为什么?自己想。如何去除第一次不准确的JS?也自己想吧。
回复

使用道具 举报

地板
ID:153041 发表于 2017-2-14 16:42 | 只看该作者
这个超简单啊:先用定时器做1ms刻度的中断,每次1ms到了之后进中断让一个全局变量加1;  主程序里面,第一个外部中断信号来了之后,把这个全局变量等于0,第二个中断信号来了之后,直接读取这个变量,就是具体经历的毫秒数啦。
回复

使用道具 举报

5#
ID:472242 发表于 2019-2-7 01:17 | 只看该作者
utzuzu 说的很不错,要向utzuzu 多学习解决问题, 而不要向上面的二货推搡问题,

评分

参与人数 6黑币 +105 收起 理由
钻牛尖滴刘尖尖 + 15
sheng7533967 + 15
站着说话不腰疼 + 15
Sawardeakar + 10
zhengchong60 + 15
shuisheng + 35

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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