include <reg51.h>
void xianshi(long unsigned int i) //显示子函数,用来显示数字。
{
}
void delay() //延迟函数
{
int x,y
for(x=0x<100x++) //修改卜举数值,可改变延迟时间
for(y=0y<10y++) //修改数值,可改变延迟时间
}
main()
{
long unsigned int a=0//定义无符号长整型 a
while(1) //大循环
{
if(P1_0==0) //判断脉冲信号,如果为低,进入计数,如果为高,则继续判断。
{
delay(); //等待一下猛晌,消抖,防止线路干扰等情况。
if(P1_0==0) //第二次判断
{ a++//计数加1
xianshi(a)//执行显示函数,现实数字。
while(P1_0==0)//脱离计数检测,即“松手检测”,当被测物体一直在时,防止重复计数。
}
}
}
}
说明:自己现写的程序,呵呵,不知道有没有错误。
P1.0口接脉冲输入,可以自己定义其它接口。
当输入电平为低时,a就会自增一次,一般情况下可以计数到6万多或者几十亿。
可以根据实际情况,如被测物体速度、晶振频率等,修改delay函数中的值,以适合实际测量。
没有写显示函数,这取决于你要用的显示方式。
使用定时器,设拍配塌置定时的时间为50ms,采用中断袭圆方式,每中断一次,计数一次,中断20次,就是1秒,再计秒,60秒为1分,再计分,计到10分就行。其实,就是电子时钟的程序吗,要计秒,分,小时,这都卖大可以实现的,何况你是10分。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)