#define STAYTIME 781//定时200ms 其他时间可以自己算
int tcount,p_count
double speed
void t0_init(void)
{
TH0=0x00
TL0=0x00
TMOD|=0x02
ET0=1
TR0=1
IT0=1//外部中断下降沿触发
EX0=1
}
void pulse_int(void) interrupt 0
{
p_count++
}
void t0_int(void) interrupt 1
{
tcount++
if(tcount>STAYTIME){
tcount=0
EX0=0//关输入脉冲的中老歼断
ET0=0
speed=p_count/20/胡猛/侍做冲单位就是 转/秒
//下面重新开始
p_count=0
ET0=1
EX0=1
}
}
}
void main()
{
t0_init()
EA=1
while(1)
}
一般测量频明慧率有2中方法:\1,你用T1定时1S(只用T1是无法达到定尘肢时1s的目的的,因为时间太长,你还可以借助别的单元+1,+1的形式),然后用T0记数在这1s内通过的方波个数,这个方法不是很精确
2,用外部中断,选择下降沿触发,程序响应中断激兄答后马上开启定时器,在下个下降沿来临的时候关掉定时器就可以了(记得定时器先清零)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)