Code:
	Port1Data .EQU 1 ;Adresse Byteport 1 (Daten) 
Port2Data .EQU 2 ;Adresse Byteport 2 (Daten) 
Port1Dir .EQU 5 ;Adresse Byteport 1 (Richtung) 
Port2Dir .EQU 6 ;Adresse Byteport 2 (Richtung) 
SCL .EQU 0 ;Port 1 - I2C-Bus 
SDA .EQU 1 ;Port 2 - I2C-Bus 
Trigger .EQU 2 ;Port 3 - Ultraschall-Sonar 
Echo .EQU 3 ;Port 4 - Ultraschall-Sonar 
DistanzL .EQU $A5 ;Byte[5] 
DistanzH .EQU $A6 ;Byte[6] 
Param0 .EQU $91 ;Übergabeparameter 0 (intern) 
Param1 .EQU $92 ;Übergabeparameter 1 an Routine 
D0 .EQU 0 ;Bit 0 
D7 .EQU 7 ;Bit 7 
CCB_Get .EQU $0CB5 ;CCBASIC Get 
CCB_PuWoSt .EQU $17B1 ;BeSy: Push Port auf Rechenstack 
;---------------------------------------------------------------------------------------------- 
.ORG $0101 
;---------------------------------------------------------------------------------------------- 
;-----------------------+---------------------------------------------------------------------- 
; Information zum Sonar | => @4MHz CPU-Takt : 1 Cycle = 0,5us 
;-----------------------+ => eine Einheit : 18 Cycles = 9,0us 
; => rechnerische Genauigkeit: 00,15cm = 1,5mm 
; 
; Distanz[Word] * 1716 
; Formel: Entfernung[cm] = -------------------- 
; 2889 * fCPU[MHz] 
; 
; Distanz(cm) | Echo(ms) | Distanz(Word) | Kommentar: 
; ------------+----------+---------------+------------------------------- 
; 577,5 cm | 35,00 ms | 3889 | Kein Objekt erkannt 
; 429,0 cm | 26,00 ms | 2889 | Maximale Entfernung (unsicher) 
; 400,0 cm | 24,24 ms | 2694 | Im Messbereich (unsicher) 
; 350,0 cm | 21,21 ms | 2357 | Im Messbereich (unsicher) 
; 300,0 cm | 18,18 ms | 2020 | Maximale Entfernung (sicher) 
; 250,0 cm | 15,15 ms | 1683 | Im Messbereich (sicher) 
; 200,0 cm | 12,12 ms | 1349 | Im Messbereich (sicher) 
; 165,0 cm | 10,00 ms | 1111 | Im Messbereich (sicher) 
; 150,0 cm | 9,09 ms | 1010 | Im Messbereich (sicher) 
; 100,0 cm | 6,06 ms | 673 | Im Messbereich (sicher) 
; 50,0 cm | 3,03 ms | 337 | Im Messbereich (sicher) 
; 16,5 cm | 1,00 ms | 111 | Im Messbereich (sicher) 
; 10,0 cm | 0,61 ms | 67 | Im Messbereich (sicher) 
; 3,0 cm | 0,18 ms | 20 | Im Messbereich (sicher) 
; 1,6 cm | 0,10 ms | 11 | Im Messbereich (unsicher) 
; 1,0 cm | 0,06 ms | 7 | Im Messbereich (unsicher) 
; 0,1 cm | 0,01 ms | 1 | Minimale Entfernung (unsicher) 
; 
; Eventuell muß noch eine Konstante zum Messergebniss addiert oder subtrahiert werden um die 
; Distanz abzugleichen. Dies erfolgt wiederum in 1,5mm-Schritten. Diese Daten sind Idealfall 
; 
;---------------------------------------------------------------------------------------------- 
Sonar: ; *** Auf eintreffendes Echo warten und messen *** 
JSR GoPosMotoren ;GoSub GoPosMotoren 
MesseEcho1: BRCLR Echo, Port1Data, MesseEcho1 ;If Not Echo Then GoTo Sonar 
MesseEcho2: LDA #1 ;Distanz = Distanz + 1 
ADD DistanzL 
BCS MesseEcho3 
NOP ;Zeitkorrektur um 1us 
BRA MesseEcho4 
MesseEcho3: INC DistanzH 
MesseEcho4: BRCLR Echo, Port1Data, MesseEcho2 ;If Echo Then GoTo MesseEcho2 
SonarEnde: RTS ;Zurück nach BASIC
 
						
Lesezeichen