有关蓝桥杯的超声波代码 实测测距能达到两米多 以下是代码 void chao_init() { uchar i; for(i=0;i<8;i++) { na1=1; //连续发送8个频率为40Khz的超声波信号 Delay12us(); na1=0; Delay12us(); } } ////////////////////////////////////////////////// 接下来是计算函数的定时器初始化 定时器初始化可以直接用软件生成,但需要把TH0和TL0的值清零 void Timer0_Init(void) //10微秒@12.000MHz { AUXR |= 0x40; //定时器时钟12T模式 TMOD &= 0xF0; //设置定时器模式 TL0 = 0x00; //设置定时初始值 TH0 = 0x00; //设置定时初始值 } ////////////////////////////////////////////////// 计算函数 uint get_chao() { uint time=0; //计算变量,通过return返回出去 TMOD &= 0xf0; //设置定时器模式 TL0 = 0x00; //设置定时初值 TH0 = 0x00; //设置定时初值 chao_init(); //发送八个40k的方波 TR0=1; //迅速开启定时器 while(nb1&&TF0==0); //当NB1等于0时或者TF标志位中断时推出while循环 TR0=0; //关闭定时器 if(TF0==0) //如果未溢出则判定值有效 { time=TH0<<8|TL0; //将定时器值高八位和低八位赋值给time return time*0.017; //测试发现无论定时器以1t还是12t的频率下都是乘与0.017 } else { TF0=0; //如果中断标志位超出,则清空中断标志位 time=0; return time; } }
标签:定时器,0x00,TH0,蓝桥,备忘录,TL0,设置,time,超声波 From: https://www.cnblogs.com/linjiawei/p/18200044