freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計(jì)-基于spce061a單片機(jī)的自主移動(dòng)機(jī)器人小車(chē)設(shè)計(jì)-資料下載頁(yè)

2025-06-05 02:08本頁(yè)面
  

【正文】 define LOW_SEND_TIMER2 1000 //短距測(cè) 距的補(bǔ)充測(cè)距時(shí)的 40KHz信號(hào)發(fā)射時(shí)長(zhǎng) define LOW_WAIT_DELAY 180 //短距測(cè)距的防余波干擾延時(shí)時(shí)長(zhǎng) define LOW_WAIT_DELAY2 400 //短距測(cè)距的補(bǔ)充測(cè)距時(shí)的防余波干擾延時(shí)時(shí)長(zhǎng) define LOW_RES_ADD 0x0034 //短距測(cè)距的結(jié)果補(bǔ)償值 define LOW_RES_ADD2 0x00B0 //短距測(cè)距的補(bǔ)充測(cè)距時(shí)的結(jié)果補(bǔ)償值 unsigned int Counter_buf。 //超聲波 測(cè)距當(dāng) 中,用 于保 存TimerB 計(jì)數(shù)的變量,相當(dāng)于時(shí)長(zhǎng) 自主移動(dòng)機(jī)器人小 車(chē)設(shè)計(jì) 30 unsigned int EXT1_IRQ_flag=0。 //外部中斷標(biāo)志變量,用于 EXT1 的IRQ 中斷程序和測(cè)距程序同步 void Delay_ult(unsigned int timers) { unsigned int i。 for(i=0。itimers。i++) { __asm(nop)。 } } unsigned int Resoult_ult(unsigned int Counter) //計(jì)算距離 { unsigned int uiTemp。 unsigned long ulTemp。 ulTemp = (unsigned long)Counter*33500。 //*以聲音的速度,以厘米為單位 ulTemp = ulTemp/196608。 ulTemp = ulTemp1。 //除二 uiTemp = (unsigned int)ulTemp。 return uiTemp。 } unsigned int measure2_ult(unsigned int type)。 unsigned int measure_ult(unsigned int type) // 超聲波測(cè)距模組的測(cè)距程序,完成一次測(cè)距 { unsigned int Exit_flag = 1。 unsigned int uiTemp。 unsigned int uiResoult。 unsigned int uiSend_Timer,uiWait_Timer,uiRes_Add。 unsigned int uiSystem_Clock。 uiSystem_Clock = *P_SystemClock。 //將當(dāng)前的系統(tǒng)時(shí)鐘設(shè)置暫時(shí)保存起來(lái) *P_SystemClock = 0x0088。 //將系統(tǒng)時(shí)鐘設(shè)置為 49MHz,分頻比為 1,強(qiáng)振模式 if(type) //根據(jù) type 即測(cè)距類(lèi)型,選擇不同的測(cè)距參數(shù) { uiSend_Timer = LONG_SEND_TIMER。 uiWait_Timer = LONG_WAIT_DELAY。 uiRes_Add = LONG_RES_ADD。 } else { uiSend_Timer = LOW_SEND_TIMER。 自主移動(dòng)機(jī)器人小 車(chē)設(shè)計(jì) 31 uiWait_Timer = LOW_WAIT_DELAY。 uiRes_Add = LOW_RES_ADD。 } *P_TimerB_Data = 0xfed2。 *P_TimerB_Ctrl = 0x03c0。 //發(fā) 40KHz 的信號(hào)觸發(fā)超聲波傳感器 Delay_ult(uiSend_Timer)。 //等待發(fā)送 *P_TimerB_Ctrl = 0x0006。 //關(guān)定時(shí)器 B *P_TimerB_Data = 0x0000。 *P_TimerB_Ctrl = 0x0001。 //TrB 工作在 192KHz 頻率 while(*P_TimerB_DatauiWait_Timer) //等待一定時(shí)間后再打開(kāi) TimerA 的計(jì)數(shù)(來(lái)源于 EXT1) { //以避開(kāi)余波的干擾 *P_Watchdog_Clear = 0x0001。 } *P_INT_Clear = 0x0100。 //開(kāi)中斷前先清中斷 *P_INT_Ctrl = *P_INT_Ctrl_New|0x0100。 *P_INT_Clear = 0xffff。 //清除中斷發(fā)生標(biāo)志 __asm(IRQ ON)。 //打開(kāi)總中斷使能 EXT1_IRQ_flag = 0。 //TimerA 的溢出中斷的標(biāo)志變量置0 while(Exit_flag) { if(EXT1_IRQ_flag==1) //當(dāng)該變量在 timerA的 FIQ中斷中被置1 時(shí)表示接收到了回波 { Exit_flag = 0。 //退出標(biāo)示 Counter_buf = Counter_buf+uiRes_Add。//計(jì)數(shù)值加上一定的調(diào)整數(shù)據(jù) uiResoult = Resoult_ult(Counter_buf)。//對(duì)計(jì)數(shù)值進(jìn)行處理,得出距離值 } if(*P_TimerB_Data10000) //如計(jì)數(shù)值大于 10000,表示超時(shí) { Exit_flag = 0。 uiResoult = measure2_ult(type)。//再進(jìn)行一次補(bǔ)充的測(cè)距,將會(huì)加長(zhǎng) 40KHz 信號(hào)發(fā)射的量 *P_TimerB_Ctrl = 0x0006。 //停止定時(shí)器 B } uiTemp = *P_TimerB_Data。 *P_Watchdog_Clear = 0x0001。 } *P_INT_Ctrl = *P_INT_Ctrl_Newamp。(~0x0100)。 //關(guān)掉外部中斷 __asm(IRQ OFF)。 //關(guān)掉總中斷 自主移動(dòng)機(jī)器人小 車(chē)設(shè)計(jì) 32 *P_SystemClock = uiSystem_Clock。 //恢復(fù)系統(tǒng)時(shí)鐘的設(shè)置 return uiResoult。 } void EXT1_IRQ_ult(void) //超聲波測(cè)距模組的測(cè)距程序的EXT1 中斷服 務(wù)程序 { Counter_buf = *P_TimerB_Data。 *P_TimerB_Ctrl = 0x0006。 *P_INT_Ctrl = *P_INT_Ctrl_Newamp。(~0x0100)。 //關(guān)掉外部中斷 *P_INT_Clear = 0xffff。 //清除中斷發(fā)生標(biāo)志 EXT1_IRQ_flag = 1。 //通知測(cè)距程序,外部中斷已發(fā)生 } unsigned int measure2_ult(unsigned int type) //補(bǔ)充進(jìn)行一次遠(yuǎn)距的測(cè)量,以保證能夠獲取測(cè)量結(jié)果 { unsigned int Exit_flag = 1。 unsigned int uiResoult。 unsigned int uiSend_Timer,uiWait_Timer,uiRes_Add。 *P_TimerB_Ctrl = 0x0006。 *P_INT_Ctrl = *P_INT_Ctrl_Newamp。(~0x0100)。 //關(guān)掉外部中斷 __asm(IRQ OFF)。 //關(guān)掉總中斷 *P_INT_Clear = 0xffff。 //清除掉中斷發(fā)生標(biāo)志 if(type) //根據(jù) type 即測(cè)距類(lèi)型,選擇不同的測(cè)距參數(shù) { uiSend_Timer = LONG_SEND_TIMER2。 uiWait_Timer = LONG_WAIT_DELAY2。 uiRes_Add = LONG_RES_ADD2。 } else { uiSend_Timer = LOW_SEND_TIMER2。 uiWait_Timer = LOW_WAIT_DELAY2。 uiRes_Add = LOW_RES_ADD2。 } *P_TimerB_Data = 0xfed2。 *P_TimerB_Ctrl = 0x03c0。 Delay_ult(uiSend_Timer)。 *P_TimerB_Ctrl = 0x0006。 *P_TimerB_Data = 0x0000。 *P_TimerB_Ctrl = 0x0001。 while(*P_TimerB_DatauiWait_Timer) //等待一定時(shí)間,以避開(kāi)余波的干擾 自主移動(dòng)機(jī)器人小 車(chē)設(shè)計(jì) 33 { *P_Watchdog_Clear = 0x0001。 } *P_INT_Ctrl = *P_INT_Ctrl_New|0x0100。//打開(kāi)外部中斷 *P_INT_Clear = 0xffff。 //清除中斷發(fā)生標(biāo)志 __asm(IRQ ON)。 //打開(kāi)總中斷使能 EXT1_IRQ_flag = 0。 //TimerA 的溢出中斷的標(biāo)志變量置0 while(Exit_flag) { if(EXT1_IRQ_flag==1) //當(dāng)該變量在 timerA的 FIQ中斷中被置1 時(shí)表示接收到了回波 { Exit_flag = 0。 //exit Counter_buf = Counter_buf+uiRes_Add。//計(jì)數(shù)值加上一定的調(diào)整數(shù)據(jù) uiResoult = Resoult_ult(Counter_buf)。//對(duì)計(jì)數(shù)值進(jìn)行處理,得出距離值 } if(*P_TimerB_Data10000) //如計(jì)數(shù)值大于 10000,表示超時(shí) { Exit_flag = 0。 uiResoult = 0。 *P_TimerB_Ctrl = 0x0006。 } } return uiResoult。 } unsigned int measure_Times(unsigned int type) //組合進(jìn)行共 6 次的測(cè)距程序,包括對(duì) 6次測(cè)量結(jié)果的取平均值處理 { unsigned int uiResoult=0,uiMeasure_Index=0,i。 unsigned int uiTemp_buf[6],uiTemp。 unsigned int uiSystem_Clock。 for(。uiMeasure_Index6。uiMeasure_Index++) { //循環(huán)進(jìn)行四次測(cè)量 uiTemp = measure_ult(type)。 //進(jìn)行一次測(cè)量,測(cè)量類(lèi)型由 type 決定 if(uiMeasure_Index==0) //如果為本次測(cè)量的第一次測(cè)距,則直接保存在緩沖區(qū)第一個(gè)單元 uiTemp_buf[0] = uiTemp。 自主移動(dòng)機(jī)器人小 車(chē)設(shè)計(jì) 34 else { //否,則對(duì)結(jié)果進(jìn)行比較,進(jìn)行排序,從大到小排 i = uiMeasure_Index。 while(i) //以下為排序的代碼 { if(uiTempuiTemp_buf[i1]) { uiTemp_buf[i] = uiTemp_buf[i1]。 uiTemp_buf[i1] = uiTemp。 } else { uiTemp_buf[i] = uiTemp。 break。 //退出排序 } i。 } } //兩次測(cè)量之間的延時(shí)等待,利用以下代碼軟仿真時(shí)的 cycles 數(shù)結(jié)合設(shè)置的 CPUCLK 進(jìn)行計(jì)算,大概 72ms uiSystem_Clock = *P_SystemClock。 //將之前的系統(tǒng)時(shí)鐘的設(shè)置用變量保存 *P_SystemClock = 0x000b。 //設(shè)置為 分頻比為8 for(i=0。i5。i++) { Delay_ult(1000)。 //調(diào)用延時(shí)程序 *P_Watchdog_Clear = 0x0001。 } *P_SystemClock = uiSystem_Clock。 //恢復(fù)系統(tǒng)時(shí)鐘設(shè)置 //此處延時(shí)結(jié)束 } //對(duì) 6 次測(cè)距的結(jié)果進(jìn)行處理 if(uiTemp_buf[5]==0) { //如果緩沖區(qū)中的最小的測(cè)距值為 0,則采用中間 4個(gè)數(shù)據(jù)進(jìn)行平均 uiResoult = uiTemp_buf[1]+uiTem
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1