;超声波测距仪
; Internal Osc, WDT EnabLED
include
loop equ 10h
dlyCTR equ 11h
tone_cnt equ 12h ; 反射周期计数
period equ 13h ; tmr0溢出时间
org 0
MOVwf OSCCAL
MOVlw b’10001001’
option ;1:2 WDT ON
MOVlw b’00001101’
tris GPIO
MOVwf 0
bcf GPIO,1 ;输出脉冲
;===================================
main clrwdt
btfss GPIO,0 ; 等待触发信号
goto main
m2 clrwdt
btfsc GPIO,0
goto m2
call burst ; 发送超声波
bsf GPIO,1 ; 开始输出定时脉冲
m1 btfsc GPIO,2
goto m1
bcf GPIO,1 ; 结束输出定时脉冲
goto main
;===================================
burst clrf loop
MOVlw 8
MOVwf loop
burst1 MOVlw b’00010000’
MOVwf GPIO
MOVlw 3
MOVwf dlyctr
burst2 decfsz dlyctr,f
goto burst2 ; 12uS
MOVlw b’00010100’
MOVwf GPIO
MOVlw 2 ; (2 * 3inst * 1uS) -1uS = 5uS
MOVwf dlyctr ; 5uS + (8*1uS) = 13uS
burst3 decfsz dlyctr,f
goto burst3
nop
decfsz loop,f
goto burst1
MOVlw 0x00
MOVwf GPIO
retlw 0
;================================
tone clrf TMR0
t1 btfsc GPIO,2
goto t1
MOVfw TMR0
clrf TMR0
MOVwf period
MOVlw 21 ; if(period>22 && period<30)
subwf period,w
btfss STATUS,C
goto t2
MOVlw 30
subwf period,f
btfsc STATUS,C
goto t2
decfsz tone_cnt,f ; 25uS period OK, so
goto t1 ; if not yet 3 of them, keep looking
retlw 0 ; else - success - return
t2 MOVlw 3
MOVwf tone_cnt
goto t1
;=====================================
end
设计资源 培训 开发板 精华推荐
- 为英飞凌天猫旗舰店庆生|【浏览有礼】【下单100%有礼】
- 下载有好礼!罗姆带您学习电源设计应用小技巧(功率器件篇)
- 下载有礼:4种方法帮助您高效进行元器件表征,加速元器件检测
- 有奖直播|ADI 惯性MEMS应用那些事
- TE 《新趋势报告: 如何有效应对当下测试测量领域的挑战》下载最新趋势报告
- 关注有礼:炎炎夏日,泰克原厂探头清凉大促,及时帮您解决精准测试的大问题
- 4小时实战+剖析:TI工程师教你快速上手 各种无线产品开发 (限量$14售CC1352R1无线开发板,助你参与动手实验)
- Littelfuse第2期 | 符合AEC-Q200 车规的保险丝/熔断器
- 直播已结束【最新 TI C2000实时控制芯片 — F28003X】