最近试着做超声波测距的时候,用T/C0进行计时,我是这样设计程序的,该部分的几句程序如下:
void timer0(void)
{
TCNT0=0X00;
TCCR0=0X00; //定时器初始化
}
//****主程序******
void main()
{
...........
fasong(); //调用发送程序
...........
}
//****发送程序******
void fasong(void)
{
...........
TCCR0=0X01; //在发送程序中发送完40khz脉冲
//后定时器启动
...........
}
//*******中断程序****
#pragma vector=INT1_OVF_vect
__interrupt int1_ovf_isr()
{
...........
value=TCNT0; //接收到超声波时进入中断,在中断中读取计数器值
TCCR0=0X00; //关闭定时器
............ //下面有计算距离的程序
}
程序如上,但老感觉别扭,请各位帮忙看下行不? |