怎样用keil编写单片机的计数程序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样用keil编写单片机的计数程序相关的知识,希望对你有一定的参考价值。
单片机型号是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函数中的值,以适合实际测量。
没有写显示函数,这取决于你要用的显示方式。 参考技术A 如果你的计数过程不是非常快的话,可以不用外部中断。
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函数中的值,以适合实际测量。
没有写显示函数,这取决于你要用的显示方式。 参考技术B 外部中断
每次用keil下载程序时,第一次正常,第二次就出现这个~~为啥呢?已经安装了很多遍.
参考技术A 兼容性有问题,可能是驱动导致的。追问可以怎么解决呢,让他不再出现这个问题。谢谢
追答当然是换驱动了,找其它版本的驱动试试。有时候跟系统有关系,系统不好使,导致驱动安装后不正常工作。
追问我是win8的系统,要怎么改?不要说换win7~~~~给个解决性方案吧
追答换烧写器的驱动嘛。或者换其他IDE。
本回答被提问者采纳 参考技术B 重新再下一遍这个软件,以管理员权限运行追问没有用~设置了~
参考技术C 下载器盗版被发现,将下载器的编号修改就可以以上是关于怎样用keil编写单片机的计数程序的主要内容,如果未能解决你的问题,请参考以下文章