<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 超聲波測距電路+匯編程序

          超聲波測距電路+匯編程序

          作者: 時間:2016-11-30 來源:網(wǎng)絡(luò) 收藏

          ;
          ;********************************************
          ;* 主 程 序 *
          ;********************************************
          ;
          START: MOV SP,#4FH
          MOV SCON,#50H ;串口方式1工作,8位數(shù)據(jù)位,1位停止位,無奇偶校驗,允許接收
          MOV T2MOD,#00H ;DCEN = 0,向上計數(shù)
          MOV RCAP2H,#0FEH ;定時器T2置重裝數(shù),波特率:1200. (12MHz)
          MOV RCAP2L,#0C8H
          MOV TH2,#0FEH ;定時器T2置初值
          MOV TL2,#0C8H
          MOV T2CON,#34H ;T2工作方式:波特率發(fā)生器,同時啟動Time2定時器
          CLR TI
          CLR 30H

          MOV TMOD,#11H ;T1、T0為16位定時器
          MOV TH0,#00H ;65毫秒初值
          MOV TL0,#00H
          MOV TH1,#00H
          MOV TL1,#00H
          MOV P0,#0FFH
          MOV P1,#0FFH
          MOV P2,#0FFH
          MOV P3,#0FFH
          MOV R4,#04H ;超聲波脈沖個數(shù)控制(為賦值的一半,即2個超聲波)
          SETB PX0
          CLR IE0 ;外部中斷0中斷請求標(biāo)志位。當(dāng)主機響應(yīng)中斷轉(zhuǎn)向該中斷服務(wù)程序執(zhí)行時,由內(nèi)部硬件自動將IE0位清0
          SETB IT0 ;當(dāng)IT0 = 1時,則外部中斷0(INT0 )端口由“1 ”→“0 ”下降沿跳變,激活中斷請求標(biāo)志位IE0,向主機請求中斷處理
          SETB ET1 ;允許T1中斷
          SETB EA
          SETB TR1 ;開啟測距定時器
          ;main主循環(huán)開始
          start1:
          JNB 30H,$ ;收到反射信號時標(biāo)志位為1

          CLR EA ;不讓T1中斷
          MOV R2,#64H ;測量間隔控制(約5*100=500MS). 64H = 100
          LOOP: LCALL DL1MS
          LCALL DL1MS
          LCALL DL1MS
          LCALL DL1MS
          LCALL DL1MS
          DJNZ R2,LOOP

          CLR 30H ;清除反射信號標(biāo)志位
          CLR ET0 ;關(guān)閉T0中斷
          MOV TH0,00H
          MOV TL0,00H
          SETB TR1 ;重新開啟測距定時器
          SETB EA
          SJMP start1
          ;main主循環(huán)結(jié)束

          ;****************************************************
          ;* 中斷程序 *
          ;****************************************************

          ;T1中斷,發(fā)超聲波用 ;T1中斷,65毫秒中斷一次
          INTT1: CLR EA
          CLR TR0
          CLR EX0
          MOV TH0,#00H
          MOV TL0,#00H
          MOV TH1,#00H
          MOV TL1,#00H
          SETB ET0 ;外部中斷0中斷請求標(biāo)志位。當(dāng)主機響應(yīng)中斷轉(zhuǎn)向該中斷服務(wù)程序執(zhí)行時,由內(nèi)部硬件自動將IE0位清0
          SETB EA
          SETB TR0 ;啟動計數(shù)器T0,用以計算超聲波傳播時間
          intt11:
          CPL VOUT ;發(fā)射40KHZ超聲波.晶振:12MHz,1us
          nop
          nop
          nop
          nop
          nop
          nop
          nop
          nop
          nop
          DJNZ R4,intt11 ;2us
          ;超聲波發(fā)送完畢
          CLR IE0
          MOV R4,#04H
          LCALL DL1MS ;延時2ms,避開發(fā)射的直達聲波信號,消除余震
          LCALL DL1MS
          SETB EX0 ;開啟接收回波中斷

          RETIOUT: RETI

          本文引用地址:http://www.ex-cimer.com/article/201611/324009.htm

          ;外中斷0,收到回波時進入
          PINT0: nop
          jb P3.2,pint0_exit
          CLR TR0 ;關(guān)閉T0
          CLR EA
          CLR EX0

          MOV SBUF,TH0
          JNB TI,$
          CLR TI

          MOV SBUF,TL0
          JNB TI,$
          CLR TI

          MOV TH0,#00H
          MOV TL0,#00H
          JNB p3.2,$
          SETB 30H ;接收成功標(biāo)志
          pint0_exit:
          RETI
          ;

          ;****************************************************
          ;* 延時程序 *
          ;****************************************************
          ;
          DL1MS:
          push 06H
          push 07H

          MOV R6,#14H ;14H = 20
          DL1: MOV R7,#19H ;19H = 25
          DL2: DJNZ R7,DL2 ;2us * 25 = 50
          DJNZ R6,DL1 ;50us * 20 = 1000us
          pop 07H
          pop 06H
          RET
          ;

          ;
          DL100US:
          push 06H

          MOV R6,#32H ;32H = 50
          DL3: DJNZ R7,DL3 ;2us * 50 = 100us
          pop 07H
          pop 06H
          RET
          ;

          END


          上一頁 1 2 下一頁

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();