怎样用keil编写单片机的计数程序

来源:百度知道 编辑:UC知道 时间:2024/05/22 19:46:07
单片机型号是STC 89C52RC ,怎么样用keil编写单片机的计数程序?我用的是红外线在通过圆形的光栅传感器获得红外脉冲信号来技术,希望高手指点,最好有编好的程序加注释,兄弟在这先谢了!

如果你的计数过程不是非常快的话,可以不用外部中断。
include <reg51.h>
void xianshi(long unsigned int i) //显示子函数,用来显示数字。
{
}
void delay() //延迟函数
{
int x,y;
for(x=0;x<100;x++) //修改数值,可改变延迟时间
for(y=0;y<10;y++); //修改数值,可改变延迟时间
}
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函数中的值,以适合实际测量。
没有写显示函数,这取决于你要用的显示方式。

外部中断