新手上路
- 积分
- 41
- 金钱
- 41
- 注册时间
- 2018-10-10
- 在线时间
- 4 小时
|
1金钱
这是我写的频率计代码,我用LCD屏幕显示就只显示了一个1就没有了,下图是我的光敏二极管模块
#include "speed.h"
uint dat=0,r=0,time,pulse;
bit flag=0;
void INT0_ISR() interrupt 2 //检测到一个低电平,一个低电平代表闪烁一次
{
dat++;//测得的脉冲数
if(flag)//定时到了一秒
{
pulse=dat;
dat=0;
}
EX1=1; //允许外部中断1
}
void timer1_ISR() interrupt 3
{
TR1=0;
TH1=0x3C;
TL1=0xAF;
time++;
if(time>=19)//定时到了1秒
{
flag=1;
time=0;
}
TR1=1;
}
int countspeed()
{
r=pulse;
return pulse;
}
void speedinit()
{
EA=0;
TMOD=0x10;//T1做定时器 16位
TH1=0X3C;
TL1=0XAF; //初值15535 定时50 000us
TR1=1;//启动T1计数
IT1=0;//外部中断电平触发
EX1=1;//允许外部中断
ET1=1;//开放T1中断请求
EA=1;//开总中断
}
|
|