12C508 Ultrasonic Range Finder Program
;Internal Oscillator, WDT enabled
Include
Loop equ 10h
dlyCTR equ 11h
Tone_cnt equ 12h; reflection period count
Period equ 13h; TMR0 overflow time
Org 0
MOVwf OSCCAL
MOVlw '10001001'
Option; 1: 2WDTON
MOVlw '00001101'
tris GPIO
MOVwf 0
bcf GPIO, 1; output pulse
;============================================
Main clrwdt
btfss GPIO, 0; wait for the trigger signal
goto Main
M2 clrwdt
btfsc GPIO, 0
goto M2
Call burst
bsf GPIO, 1; start output timing pulse
m1 btfsc GPIO, 2
goto m1
bcf GPIO, 1; end output timing pulse
goto Main
;============================================
Burst clr loop
MOVlw 8
MOVwf loop
burst1 MOVlw '00010000'
MOVwf GPIO
MOVlw 3
MOVwf dlyctr
Burst2 decfsz dlyctr, f
goto Burst2; 12uS
MOVlw '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 clr 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
Capacitor For Power Transmission And Transformation
Capacitor for power transmission and transformation
New Parallel Capacitor 100Kvar,Capacitor Banks,High Voltage Capacitor Banks,Parallel Capacitor 200kar
YANGZHOU POSITIONING TECH CO., LTD. , https://www.yzpst.com