怎样用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编写单片机的计数程序的主要内容,如果未能解决你的问题,请参考以下文章

keil怎样把C语言转换成单片机汇编语言

用Keil C51编写单片机程序,怎么看程序多少行

在keil软件里边怎么编写对数函数

keil软件中怎样添加STC系列单片机

keil软件中怎样添加STC系列单片机

单片机编程。 keil中数组指针怎么用才规范呢?一直提示C182警告