void main(void) { unsigned int kl=0; //延时计数 unsigned int Distance[]={0,0,0,0}; //存放距离数组,格式(距离:0.00M) WDTCTL = WDTPW + WDTHOLD; BCSplus_Init();//时钟16MHZ OLED_Init(); //OLED初始化 P1DIR |= BIT7; // P1.7设置为输出模式 P1OUT |= BIT7; HC_SR04Init(); //初始化超声模块HC_SR04 TimeGetInit(); //初始化计数捕获引脚,模式等 _EINT(); while(1) { if(kl++>10) { HC_SR04Start();//开启发送 Distance[3]=DIS%10;//0.1cm Distance[2]=(DIS/10)%10;//1cm Distance[1]=(DIS/100)%10;//1dm Distance[0]=(DIS/1000)%10;//1m kl=0; if(DIS < 100) // 如果距离小于30cm则蜂鸣器响 { P1OUT ^= BIT7; // P1.7翻转电平 delay_ms(500); // 延时500ms P1OUT ^= BIT7; // P1.7翻转电平 } } OLED_Text();//符号部分 OLED_P8x16Str(48,3,Distance[0]); OLED_P8x16Str(56,3,Distance[1]); OLED_P8x16Str(64,3,Distance[2]); OLED_P8x16Str(80,3,Distance[3]);//距离 delay_ms(10);//10*10ms>60ms:防回波干扰 } }时钟频率的设置什么意思
时间: 2023-12-26 22:05:56 浏览: 66
8051Proteus仿真c源码INT0及INT1中断计数
这段代码是在 MSP430 单片机上编写的,主要功能是控制超声波模块 HC-SR04 进行测距,并将测量结果显示在 OLED 屏幕上。其中,时钟频率的设置是通过 BCSplus_Init() 函数进行的,将系统时钟配置为 16MHz。这样可以提高程序的执行效率和精度。同时,程序中还使用了延时函数 delay_ms() 来控制超声波发送与接收的时间间隔,避免回波干扰。
阅读全文