两个吃奶一个添下面视频_人妻第一页香蕉网_欧美xxxx少妇_妺妺窝人体色www婷婷

1.題目要求

我們在第九章第3講的例程基礎(chǔ)上,實(shí)現(xiàn)用超聲波模塊模擬倒車?yán)走_(dá)報(bào)警的功能,當(dāng)障礙物距離超聲波模塊小于等于10cm左右我們就用蜂鳴器鳴叫產(chǎn)生報(bào)警,大于10cm就不報(bào)警。代碼上添加的程序量比較少,我們只是把定時(shí)時(shí)間改為200微秒好使蜂鳴器鳴叫的比較尖銳。

2.main.c測試代碼

#include <reg52.h> 
#include <function.h> //詳見第六章第8講
#include <timer.h>    //詳見第八章第11講
#include <intrins.h>

sbit TRIG = P2^0; 
sbit ECHO = P2^1; 
u8 FLAG=0,BEEP_FLAG=0;
void delay_20us() 
{
    _nop_();_nop_();_nop_();_nop_();_nop_(); 
    _nop_();_nop_();_nop_();_nop_();_nop_();
    _nop_();_nop_();_nop_();_nop_();_nop_();
    _nop_();_nop_();_nop_();_nop_();_nop_();
}
  
void main()
{  
    u16 time_data,CM_data;
    TRIG = 0; 
    ECHO = 0;
  
    LED_Init();        //初始化LED硬件模塊
    EA = 1;            //閉合總中斷開關(guān)
    TIM1_Init(100,34); //定時(shí)100us,這是為了使蜂鳴器鳴叫的比較尖銳,34是微調(diào)使定時(shí)精度更高,每次微調(diào)都由中斷函數(shù)里的內(nèi)容而決定
  
    TMOD &= 0xF0;
    TMOD |= 0x01; 
    ET0  = 1;
    while(1)
    {   
        TH0  = 0; 
        TL0  = 0; 
        FLAG = 0;      //上次如果是超出測量范圍,F(xiàn)LAG被置1,這次再測就要清0
   
        //啟動(dòng)發(fā)射聲波
        TRIG = 1;    
        delay_20us();
        TRIG = 0;
   
        while(!ECHO);  //聲波開始發(fā)射,ECHO引腳拉高退出這個(gè)循環(huán)
        TR0 = 1;       //打開定時(shí)器進(jìn)行計(jì)數(shù) 
        while(ECHO);   //收到聲波返回來的信號引腳就拉低,退出這個(gè)循環(huán),如果定時(shí)器溢出,就會(huì)進(jìn)入中斷函數(shù)執(zhí)行“FLAG=1;”也就是距離太遠(yuǎn),一直沒有收到反射回來的信號
        TR0 = 0;       //關(guān)閉定時(shí)器結(jié)束計(jì)數(shù)
   
        time_data =TH0;
        time_data=(time_data<<8)|TL0;                //把兩個(gè)八位的寄存器里的值組成一個(gè)16位變量的值,也就是定時(shí)器計(jì)數(shù)值
        CM_data = time_data/54;                      //得到厘米的表達(dá)式
   
        if(FLAG==1){ShowNumber(999); delay_ms(20);}  //超出測量范圍顯示999,延時(shí)為的是不讓數(shù)碼管頻繁在兩個(gè)數(shù)的偏差之間變化太頻繁   
        else {ShowNumber(CM_data); delay_ms(20);}
   
        if(CM_data<=10)BEEP_FLAG=1;                  //測距小于等于10CM蜂鳴器鳴叫
        else BEEP_FLAG=0;
    }
}
 
void TIM1_IRQHandler() interrupt 3
{
    static u8 i=0;
    TH1 = T1RH;                //重新加載重載值
    TL1 = T1RL;
  
    i++;
    if(i>=5){i=0; SEG_Scan();} //間隔1ms刷新數(shù)碼管
  
    if(BEEP_FLAG==1)BEEP=!BEEP;
}
  
void TIM0_IRQHandler()  interrupt 1   
{
    FLAG=1; 
}
點(diǎn)贊(0)

C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:

一點(diǎn)編程也不會(huì)寫的:零基礎(chǔ)C語言學(xué)練課程

解決困擾你多年的C語言疑難雜癥特性的C語言進(jìn)階課程

從零到寫出一個(gè)爬蟲的Python編程課程

只會(huì)語法寫不出代碼?手把手帶你寫100個(gè)編程真題的編程百練課程

信息學(xué)奧賽或C++選手的 必學(xué)C++課程

藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競賽課入門課程

手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程

Dotcpp在線編譯      (登錄可減少運(yùn)行等待時(shí)間)