特意写一个多文件程序的超声波
/*sonic.h相关程序*/ #ifndef __ULTRASONIC_H #define __ULTRASONIC_H #include"system.h" #define somenop {_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();} sbit TX=P1^0; sbit RX=P1^1; void Timer1Init(void); void send_wave(); void ultrasonic(); #endif /*sonic.c相关程序*/ #include"Ultrasonic.h" u16 t=0,distance=0; bit itr_flag=0; void Timer1Init(void) //100微秒@11.0592MHz { AUXR |= 0x40; //定时器时钟1T模式 TMOD &= 0x0F; //设置定时器模式 } void send_wave() { u8 i=8; do { TX=0; somenop;somenop;somenop;somenop;somenop;somenop;somenop;somenop;somenop;somenop; TX=1; somenop;somenop;somenop;somenop;somenop;somenop;somenop;somenop;somenop;somenop; } while(i--); } void ultrasonic() { if(itr_flag==1) { itr_flag=0; send_wave(); TR1=1; while(RX==1 && TF1==0); TR1=0; if(TF1==1) { TF1=0; distance=99; } else { t=TH1; t<<=8; t|=TL1; distance=(u16)(t*0.017); distance=distance/12; } TH1=0; TL1=0; } }
