void T0_1S(void) interrupt 1 //T0_1S中断子程序开始
{ float tt=0;
TH0=H_0; //设置T0计数的高8位
TL0=L_0; //设置T0计数的低8位
if(++
times==20) //若达到1S
{
times=0; //重新计数
status_F=1; //完成测量
TR1=0; //关闭T1
TR0=0; //关闭T0
DPL=TL1; //计数值的低8位
DPH=TH1; //计数值的高8位
//freq=DPTR; //计数值放入freq
uu=TH1*256+TL1+inte*65536; //计算总计数值
inte=0; //清累计溢出计数
tt=uu/(12*1000000.0/12.0); //求振荡周期
ff=(unsigned long int)(1.0/tt); //频率值 求震荡频率
}
}
void measure(void)
{
//float tt=0;
SCANP=0xff; //关闭显示器
IE=0x8a; //1000 1010,启用T0、T1中断
TMOD=0x51; //0101 0001,T1为计数器,T0为定时器,都采用Mode1
TH0=H_0; //设置T0计数器的高8位
TL0=L_0; //设置T0计数器的低8位
TH1=0;
TL1=0; //设置T1归0
TR0=1; //启动T0 //测得引脚P3^5为高电平
TR1=1;
}
哦,计数,然后定时,然后,做一个差,最后除以时间,求频率?
好吧。
uu=TH1*256+TL1+inte*65536;
TH1是什么类型,TH1*256的后果你考虑了吗?
其他没看!
一周热门 更多>