PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fehler bei programmieren des RP5 LCD



ostoff
19.06.2007, 20:19
Als ich auf meinem Lcd das Beispielprogramm öffnen wollte erschienen nur schwarze Balken. Als ich dann an P1 gedreht habe verschwanden da zwar die Balken aber eserschienen keine Ziffern.
Kann mir da jemand helfen?

Jon
19.06.2007, 20:25
Ein paar blöde Fragen:
Hast du das LCD richtig aufgesteckt?
Versorgungsspannung noch OK? ->nachmessen
Richtigen Treiber geladen? (ganz am Ende des Programms)

Mehr fällt mich nicht ein. Ich denke, dass das mit der zu niedrigen Versorgungsspannung am wahrscheinlichsten ist.

jon

Dirk
19.06.2007, 23:48
Hallo ostoff,

Fragen:
1. Welches Beispielprogramm?
2. Ich dachte, du hättest mit deinem "Hallo"-Programm schon Erfolg gehabt oder funktionierte das auch nicht?

Gruß Dirk

ostoff
20.06.2007, 14:15
nein ich hatte nur verstanden wie man es programmiert, als ich dann aber das Programm auf den Rp5 übertragen habe und das Programm gestartet habe erschienen nur die Schwarzen Balken.
ich bin so vorgegangen:
Kabel in die Buchse der Standartplatiene einstecken.
Proramm starten.
darauf erschienen nur schwarze Balken.
Habe an P1 gedreht, schwarze Balken verschwadenaber sonst passierte nichts.
Habe auch neu aufgeladene Batterien eingesetezt.
Christoph

ostoff
20.06.2007, 14:29
das war das Programm:


'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIII
'IIIIIIIIII MOBILE ROBOT EVALUATION PROGRAM IIIIIIIIIIII
'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIII
' ANSTEUERUNG DES LCD AUF DER BASIS-ERWEITERUNG
'
'Dieses Beispiel stellt Ihnen zusätzlich einen Treiber für das LCD
'zur Verfügung
'Folgende Unterprogramme sind für Sie von Bedeutung:

' gosub lcd_init II Initialisierung des LCD
' gosub lcd_cls II Löschen der Anzeige
' lcd_param = 1 : gosub lcd_gotoline II Cursor auf Zeile 1, Position 1
' lcd_param = 2 : gosub lcd_gotoline II Cursor auf Zeile 2, Position 1
' lcd_param = xx : gosub lcd_writechar II den Character mit dem ASCII-Code xx ausgeben.
' value=xx:gosub convert II den Inhalt der Variablen VALUE ausgeben

' ---------------------------------------------------------------------
' FUNKTION DES PROGRAMMS
'----------------------------------------------------------------------
' Nach der Einschaltmeldung wird IRCOMM abgefragt und evt. empfangene Date
' am LCD angezeigt.
' Wenn Sie am LCD keinerlei Anzeige erkennen, so versuchen Sie den Kontrast
' mit dem Poti P1 auf der Basiserweiterung einzustellen.
'
'-----------------------------------------------------------------------
'RESOURCEN:
'Sie finden in allen Beispielen sämtliche Systemroutinen die zum Betrieb des
'Roboters notwendig sind.
'----------------------------------------------------------------------------

'--------------------------
'------ I/O PORTS ---------
'--------------------------
'- INTERFACE LCD/EXTPORT --
define sdio port[1]
define sclio port[3]
define strobe port[4]
define LSTROBE port[7]
'-- INTERFACE COM/NAV -----
define DATALINE port[1]
define CLOCKLINE port[2]
'-- CC2 INTERFACE -------
define CC2POWER port[8]
'------ LCD INTERFACE ------
define lcd_port byteport[2]
define lcd_rs port[14]
define lcd_rw port[13]
define lcd_e port[15]
'--------------------------
'------ SENSORS ---------
'--------------------------
define LIGHT_L ad[7]
define LIGHT_R ad[6]
define SYS_VOLTS ad[3]
define CHRG_CURRENT ad[2]
define SYS_CURRENT ad[1]
define MIC ad[4]
define TOUCH ad[5]
'---------------------------
'------ DRIVE -------------
'---------------------------
define SPEED_L da[1]
define SPEED_R da[2]
define REV_L port[6]
define REV_R port[5]
'--------------------------
'---- SYSTEM MEMORY -------
'--------------------------
'--- INTERFACE BUFFER ----
define LBYTE byte[1]
define HBYTE byte[2]
define SUBCMD byte[3]
'---- OPERATION DATA ------
define EXTPORT byte[4]
define LED1_F bit[29]
define LED2_F bit[30]
define LED3_F bit[31]
define LED4_F bit[32]
define SYSTEM_STATUS byte[5]
define LEDPORT byte[6]
define L1_F bit[41]
define L2_F bit[42]
define L3_F bit[43]
define L4_F bit[44]
define L5_F bit[45]
define L6_F bit[46]
define L7_F bit[47]
define L8_F bit[48]
'---- LCD DRIVER -------------
define lcd_buf byte[7]
define lcd_param byte[8]
'--------------------------
'---- USER MEMORY -------
'--------------------------
'--- BIN-DEZIMAL-CONVERTER ---
define hunderter byte [10]
define zehner byte[11]
define einer byte[12]
define value byte[13]
define value16 word [12]
'--- SYSTEMROUTINEN -----------
define PLM_SLOW &H01C2
define SYSTEM &H01C7
define LED_DRIVE &H01CA
define COMNAV &H0144
'- ERWEITERTE SYSTEM ROUTINEN -
define REVR &H0101 'ANTRIEB RECHTS RÜCKWÄRTS
define REVL &H0106 'ANTRIEB LINKS RÜCKWÄRTS
define FWDR &H010B 'ANTRIEG RECHTS VORWÄRTS
define FWDL &H0110 'ANTRIEB LINKS VORWÄRTS
define ROTR &H0115 'RECHTS DREHEN
define ROTL &H0119 'LINKS DREHEN
define REV &H011D 'RÜCKWÄRTS
define FWD &H0121 'VORWÄRTS
define COMNAV_STATUS &H0125 'UPDATED ALLE FLAGS IM STATUS-REGISTER
define ACS_LO &H01E0 'ACS POWER LO
define ACS_HI &H01E8 '
define ACS_MAX &H01F0 '
define SEND_TLM &H013A 'SENDET TELEMETRIE (CH=HBYTE,DATEN=LBYTE)
define SEND_SYSSTAT &H0134 'SENDET TLM KANAL 0,SYSTEM STATUS
'(FLAGS für ACS,FWD/REV, ACS_LO/HI/MAX)
'---------- INIT---------------
LSTROBE=off:CC2POWER=on
gosub SUBSYS_PWR_ON:REV_L=off:REV_R=off
gosub lcd_init:gosub message1
beep 368,10,0:pause 50

'--------------------------------------------
'- DEMO IR CODES AM LCD ANZEIGWEN --
'--------------------------------------------
'---------------- GET IR DATA ------------
#continue_pgm
gosub GET_IRDATA
if LBYTE and HBYTE = &HFF then gosub shownodata else gosub showirdata
pause 10
goto continue_pgm


'IIIIIIIIIIIIII SHOW NO DATA IIIIIIIIIIIIIIIII
#shownodata
gosub lcd_cls
lcd_param = 1 : gosub lcd_gotoline
lcd_param = &H20 : gosub lcd_writechar '
lcd_param = &H20 : gosub lcd_writechar '
lcd_param = &H20 : gosub lcd_writechar '
lcd_param = &H20 : gosub lcd_writechar '
lcd_param = &H20 : gosub lcd_writechar '
lcd_param = &H4E : gosub lcd_writechar 'N
lcd_param = &H4F : gosub lcd_writechar 'O
lcd_param = &H20 : gosub lcd_writechar '
lcd_param = &H44 : gosub lcd_writechar 'D
lcd_param = &H41 : gosub lcd_writechar 'A
lcd_param = &H54 : gosub lcd_writechar 'T
lcd_param = &H41 : gosub lcd_writechar 'A
return
'IIIIIIIIIIIIII SHOW RECEICED DATA IIIIIIIIIIIII
#showirdata
gosub lcd_cls
lcd_param = 1 : gosub lcd_gotoline
lcd_param = &H41 : gosub lcd_writechar 'A
lcd_param = &H44 : gosub lcd_writechar 'D
lcd_param = &H52 : gosub lcd_writechar 'R
lcd_param = &H3D : gosub lcd_writechar '=

value=HBYTE
gosub convert
lcd_param = &H20 : gosub lcd_writechar '
lcd_param = &H20 : gosub lcd_writechar '
lcd_param = &H43 : gosub lcd_writechar 'C
lcd_param = &H4D : gosub lcd_writechar 'M
lcd_param = &H44 : gosub lcd_writechar 'D
lcd_param = &H3D : gosub lcd_writechar '=
Value=LBYTE
gosub convert:pause 20
return


'-------------------------------------------
'IIIIIII MESSAGE 1 IIIIIIIIIII
#message1
gosub lcd_cls
lcd_param = 1 : gosub lcd_gotoline
lcd_param = &H20 : gosub lcd_writechar '
lcd_param = &H20 : gosub lcd_writechar '
lcd_param = &H20 : gosub lcd_writechar '
lcd_param = &H20 : gosub lcd_writechar '
lcd_param = &H43 : gosub lcd_writechar 'C
lcd_param = &H2D : gosub lcd_writechar '-
lcd_param = &H43 : gosub lcd_writechar 'C
lcd_param = &H4F : gosub lcd_writechar 'O
lcd_param = &H4E : gosub lcd_writechar 'N
lcd_param = &H54 : gosub lcd_writechar 'T
lcd_param = &H52 : gosub lcd_writechar 'R
lcd_param = &H4F : gosub lcd_writechar 'O
lcd_param = &H4C : gosub lcd_writechar 'L
lcd_param = 2 : gosub lcd_gotoline
lcd_param = &H20 : gosub lcd_writechar '
lcd_param = &H20 : gosub lcd_writechar '
lcd_param = &H20 : gosub lcd_writechar '
lcd_param = &H20 : gosub lcd_writechar '
lcd_param = &H20 : gosub lcd_writechar '
lcd_param = &H20 : gosub lcd_writechar '
lcd_param = &H52 : gosub lcd_writechar 'R
lcd_param = &H4F : gosub lcd_writechar 'O
lcd_param = &H42 : gosub lcd_writechar 'B
lcd_param = &H4F : gosub lcd_writechar 'O
lcd_param = &H54 : gosub lcd_writechar 'T
lcd_param = &H20 : gosub lcd_writechar '
lcd_param = &H20 : gosub lcd_writechar '
return
'++++++++++++ CONVERT BINARY TO DECIMAL +++++++++++++++
#convert
hunderter=value/100
if hunderter>0 then lcd_param=hunderter+&H30 else lcd_param=&H20
gosub lcd_writechar
'zehner abfragen
zehner=(value-(hunderter*100))/10
lcd_param=zehner+&H30
gosub lcd_writechar
'einer abfragen
einer=value-(hunderter*100)-(zehner*10)
lcd_param=einer+&H30
gosub lcd_writechar
return
'IIIIIIIIIII LED DRIVER IIIIIIIIIIIIIIIII
#LED1ON
LED1_F=on:goto EXTPORT_WRITE
#LED1OFF
LED1_F=off :goto EXTPORT_WRITE
#LED2ON
LED2_F=on:goto EXTPORT_WRITE
#LED2OFF
LED2_F=off:goto EXTPORT_WRITE
#LED3ON
LED3_F=on:goto EXTPORT_WRITE
#LED3OFF
LED3_F=off:goto EXTPORT_WRITE
#LED4ON
LED4_F=on:goto EXTPORT_WRITE
#LED4OFF
LED4_F=off:goto EXTPORT_WRITE
#LEDSOFF
EXTPORT=EXTPORT and &H0F
#EXTPORT_WRITE
SYS SYSTEM:pulse STROBE:RETURN
'--- LEDS AUF DER BASIS ERWEITERUNG ------
#L1ON
L1_F=on:goto LEDPORT_WRITE
#L1OFF
L1_F=off :goto LEDPORT_WRITE
#L2ON
L2_F=on:goto LEDPORT_WRITE
#L2OFF
L2_F=off :goto LEDPORT_WRITE
#L3ON
L3_F=on:goto LEDPORT_WRITE
#L3OFF
L3_F=off :goto LEDPORT_WRITE
#L4ON
L4_F=on:goto LEDPORT_WRITE
#L4OFF
L4_F=off :goto LEDPORT_WRITE
#L5ON
L5_F=on:goto LEDPORT_WRITE
#L5OFF
L5_F=off :goto LEDPORT_WRITE
#L6ON
L6_F=on:goto LEDPORT_WRITE
#L6OFF
L6_F=off :goto LEDPORT_WRITE
#L7ON
L7_F=on:goto LEDPORT_WRITE
#L7OFF
L7_F=off :goto LEDPORT_WRITE
#L8ON
L8_F=on:goto LEDPORT_WRITE
#L8OFF
L8_F=off :goto LEDPORT_WRITE
#LOFF
LEDPORT=0
#LEDPORT_WRITE
SYS LED_DRIVE:pulse LSTROBE:RETURN
'---------------------------------------
'------------- LCD ROUTINES -------------
'----------------------------------------
#LCD_INIT
' alle ports 0
lcd_port = OFF

' 8-Bit-Modus aktivieren
lcd_param=&H38 : gosub LCD_WRITECMD

' mit 8-Bit-Command in 4-Bit-Modus umschalten
lcd_port=&B00000010
tog lcd_e
tog lcd_e

' ab jetzt 4-Bit-Modus
lcd_param = &H28 : gosub LCD_WRITECMD
lcd_param = &H0C : gosub LCD_WRITECMD

' Display loeschen
#LCD_CLS
lcd_param = &H02 : gosub LCD_WRITECMD
lcd_param = &H01 : gosub LCD_WRITECMD
return
' Zeilenwechsel
#LCD_GOTOLINE
if lcd_param = 1 then lcd_param = &H80
if lcd_param = 2 then lcd_param = &HC0
goto LCD_WRITECMD

' LCD-Kommando
#LCD_WRITECMD
lcd_buf = OFF
goto LCD_WRITE

' Zeichenausgabe
#LCD_WRITECHAR
lcd_buf = &B00100000

' Kommando oder Zeichen an Display senden
#LCD_WRITE
lcd_port = lcd_buf or (lcd_param shr 4) ' Hi-Nibble
tog lcd_e
tog lcd_e
lcd_port = lcd_buf or (lcd_param and &H0F) ' Lo-Nibble
tog lcd_e
tog lcd_e
return
'IIIIII SYSTEMROUTINEN COMM/NAV SYSTEM IIIII
#GET_IRDATA
SUBCMD=1:sys COMNAV:return
#SEND_IRDATA
SUBCMD=0:sys COMNAV:return
#RC5
SUBCMD=4:sys COMNAV:LBYTE= HBYTE and &HFC
HBYTE=00:SUBCMD=2:sys COMNAV:return
#RC5_INT
SUBCMD=4:sys COMNAV:LBYTE= (HBYTE and &HFE)or 2
HBYTE=00:SUBCMD=2:sys COMNAV:return
#REC80
SUBCMD=4:sys COMNAV:LBYTE= (HBYTE or &H01)and&HFD
HBYTE=00:SUBCMD=2:sys COMNAV:return
#REC80_INT
SUBCMD=4:sys COMNAV:LBYTE= (HBYTE or &H03)
HBYTE=00:SUBCMD=2:sys COMNAV:return
'IIIIII SYSTEMROUTINEN SYSTEM IIIIIIIIIIII
#NO_ACS_INT
SUBCMD=4:sys COMNAV:LBYTE= HBYTE and &HFB
HBYTE=00:SUBCMD=2:sys COMNAV:return
#ACS_INT_200
SUBCMD=4:sys COMNAV:LBYTE= HBYTE or &H04
HBYTE=50:SUBCMD=2:sys COMNAV:return
#SUBSYS_PWR_ON
sdio=on:sclio=on:strobe=off:EXTPORT=(EXTPORT and &HFE)or 8
sys SYSTEM:return
#SUBSYS_PWR_OFF
EXTPORT=(EXTPORT and &HF7)or 1:sys SYSTEM
deact sdio:deact sclio:return


#CLR_DISTANCE
SUBCMD=3:sys COMNAV:return
#L_DISTANCE
SUBCMD=6:sys COMNAV:return
#R_DISTANCE
SUBCMD=7:sys COMNAV:return
'---------COM/NAV GERÄTEREIBER -------------
'syscode "p5driv12.s19"


Das Lcd muss doch in die Buchse mit der Aufschrift Lcd 1 eingesteckt werden. Und die kleine Erhöhung des Steckers muss in die entgegengesetzte Fahrtrichtung zeigen

Dirk
20.06.2007, 18:15
Hallo ostoff,

wenn du zum ersten Mal ein Prog für die Erweiterungsplatine (wie diese LCD-Demo) aufspielst, muss der neue Treiber p5driv12.s19 EINMAL geladen werden.
Dazu must du in der letzten Zeile des Progs das ' vor syscode "p5driv12.s19" wegnehmen. Dadurch ist diese Zeile kein Kommentar mehr, sondern der Treiber wird in die CC1 geladen. Dann überträgst du das Prog in den RP5.

Danach kannst du das ' da wieder vor setzen, weil der neue Treiber immer in der CC1 bleibt. Auch wenn du dann neue Programme ausprobierst, must du in der Regel den Treiber nicht mehr laden.

Gruß Dirk

Jon
20.06.2007, 18:28
Den Treiber hat er mit meinem Beispiel mit dem Wort "Hallo" geladen. Ich hatte da die Zeile auskommentiert.
Manchmal war es bei mir auch so, dass nichts ging. Dann musste ich den Treiber neu laden und es ging wieder alles.
Also versuche nochmal den Treiber neu zu laden.

@Dirk,
hast du dich auch für einen Test-RP6 beworben?

jon

P.S.:
@ostoff,
wenn du wieder ein Programm postest, dann setze das bitte zw. [*code][*/code] ohne die *.
Wird dann etwas übersichtlicher und der Post ist nicht so lang.

Dirk
20.06.2007, 18:34
@Jon:
Wo kann man sich denn für den Test-RP6 bewerben???

Gruß Dirk

ostoff
20.06.2007, 18:53
ja aber das Programm für die 8 Leds funktioniert.

Dirk
20.06.2007, 18:59
Hallo ostoff,


das Programm für die 8 Leds funktioniert.

Das ist ein gutes Zeichen, denn der richtige Treiber ist geladen.

Das LCD-Prog müßte auch funktionieren,- hast du eine IR-RC5-Fernbedienung, mit der du das testen kannst?

Gruß Dirk

P.S.: Wenn nicht, probier erst 'mal das "Hallo"-Prog von Jon.

ostoff
20.06.2007, 19:06
nein habe keine vernbedinung.
Bei dem Programm "Hallo" wollte ich asuprobieren doch da gab es zwei probleme. erstens konnte kein Treber geladen werden und zweitens war ein nichtbekannter Befehl

Jon
20.06.2007, 19:33
der Treiber muss in dem Ordner sein, in dem auch die Programmdatei ist. wie die Datei heißt steht ja im Programm.
Wo ist der unbekannte Befehl?

@Dirk:
hier steht alles dazu: https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=31680

jon

ostoff
21.06.2007, 16:57
Fehler:

undefiniertes Label MESSAGE1


Gruß Christoph

Jon
21.06.2007, 17:14
Stimmt. Habe ich übersehen.
So sollte es stimmen:

'Zeigt an der Position 1,1 das Wort "Hallo" an.
'by jon

'--------------------------
'------ I/O PORTS ---------
'--------------------------
'- INTERFACE LCD/EXTPORT --
Define Sdio Port[1]
Define Sclio Port[3]
Define Strobe Port[4]
Define Lstrobe Port[7]
'-- INTERFACE COM/NAV -----
Define Dataline Port[1]
Define Clockline Port[2]
'-- CC2 INTERFACE -------
Define Cc2power Port[8]
'------ LCD INTERFACE ------
Define Lcd_port Byteport[2]
Define Lcd_rs Port[14]
Define Lcd_rw Port[13]
Define Lcd_e Port[15]
'--------------------------
'------ SENSORS ---------
'--------------------------
Define Light_l Ad[7]
Define Light_r Ad[6]
Define Sys_volts Ad[3]
Define Chrg_current Ad[2]
Define Sys_current Ad[1]
Define Mic Ad[4]
Define Touch Ad[5]
'---------------------------
'------ DRIVE -------------
'---------------------------
Define Speed_l Da[1]
Define Speed_r Da[2]
Define Rev_l Port[6]
Define Rev_r Port[5]
'--------------------------
'---- SYSTEM MEMORY -------
'--------------------------
'--- INTERFACE BUFFER ----
Define Lbyte Byte[1]
Define Hbyte Byte[2]
Define Subcmd Byte[3]
'---- OPERATION DATA ------
Define Extport Byte[4]
Define Led1_f Bit[29]
Define Led2_f Bit[30]
Define Led3_f Bit[31]
Define Led4_f Bit[32]
Define System_status Byte[5]
Define Ledport Byte[6]
Define L1_f Bit[41]
Define L2_f Bit[42]
Define L3_f Bit[43]
Define L4_f Bit[44]
Define L5_f Bit[45]
Define L6_f Bit[46]
Define L7_f Bit[47]
Define L8_f Bit[48]
'---- LCD DRIVER -------------
Define Lcd_buf Byte[7]
Define Lcd_param Byte[8]
'--------------------------
'---- USER MEMORY -------
'--------------------------
'--- BIN-DEZIMAL-CONVERTER ---
Define Hunderter Byte [10]
Define Zehner Byte[11]
Define Einer Byte[12]
Define Value Byte[13]
Define Value16 Word [12]
'--- SYSTEMROUTINEN -----------
Define Plm_slow &H01C2
Define System &H01C7
Define Led_drive &H01CA
Define Comnav &H0144
'- ERWEITERTE SYSTEM ROUTINEN -
Define Revr &H0101 'ANTRIEB RECHTS RÜCKWÄRTS
Define Revl &H0106 'ANTRIEB LINKS RÜCKWÄRTS
Define Fwdr &H010B 'ANTRIEG RECHTS VORWÄRTS
Define Fwdl &H0110 'ANTRIEB LINKS VORWÄRTS
Define Rotr &H0115 'RECHTS DREHEN
Define Rotl &H0119 'LINKS DREHEN
Define Rev &H011D 'RÜCKWÄRTS
Define Fwd &H0121 'VORWÄRTS
Define Comnav_status &H0125 'UPDATED ALLE FLAGS IM STATUS-REGISTER
Define Acs_lo &H01E0 'ACS POWER LO
Define Acs_hi &H01E8 '
Define Acs_max &H01F0 '
Define Send_tlm &H013A 'SENDET TELEMETRIE (CH=HBYTE,DATEN=LBYTE)
Define Send_sysstat &H0134 'SENDET TLM KANAL 0,SYSTEM STATUS
'(FLAGS für ACS,FWD/REV, ACS_LO/HI/MAX)
'---------- INIT---------------
Lstrobe = Off : Cc2power = On
Gosub Subsys_pwr_on : Rev_l = Off : Rev_r = Off
Gosub Lcd_init
Beep 368 , 10 , 0 : Pause 50

#Anfang
Gosub Lcd_cls
Lcd_param = 1 : Gosub Lcd_gotoline
Lcd_param = &H48 : Gosub Lcd_writechar 'H
Lcd_param = &H41 : Gosub Lcd_writechar 'A
Lcd_param = &H4C : Gosub Lcd_writechar 'L
Lcd_param = &H4C : Gosub Lcd_writechar 'L
Lcd_param = &H4F : Gosub Lcd_writechar 'O
Goto Anfang

'IIIIIIIIIII LED DRIVER IIIIIIIIIIIIIIIII
#led1on
Led1_f = On : Goto Extport_write
#led1off
Led1_f = Off : Goto Extport_write
#led2on
Led2_f = On : Goto Extport_write
#led2off
Led2_f = Off : Goto Extport_write
#led3on
Led3_f = On : Goto Extport_write
#led3off
Led3_f = Off : Goto Extport_write
#led4on
Led4_f = On : Goto Extport_write
#led4off
Led4_f = Off : Goto Extport_write
#ledsoff
Extport = Extport And &H0F
#extport_write
Sys System : Pulse Strobe : Return
'--- LEDS AUF DER BASIS ERWEITERUNG ------
#l1on
L1_f = On : Goto Ledport_write
#l1off
L1_f = Off : Goto Ledport_write
#l2on
L2_f = On : Goto Ledport_write
#l2off
L2_f = Off : Goto Ledport_write
#l3on
L3_f = On : Goto Ledport_write
#l3off
L3_f = Off : Goto Ledport_write
#l4on
L4_f = On : Goto Ledport_write
#l4off
L4_f = Off : Goto Ledport_write
#l5on
L5_f = On : Goto Ledport_write
#l5off
L5_f = Off : Goto Ledport_write
#l6on
L6_f = On : Goto Ledport_write
#l6off
L6_f = Off : Goto Ledport_write
#l7on
L7_f = On : Goto Ledport_write
#l7off
L7_f = Off : Goto Ledport_write
#l8on
L8_f = On : Goto Ledport_write
#l8off
L8_f = Off : Goto Ledport_write
#loff
Ledport = 0
#ledport_write
Sys Led_drive : Pulse Lstrobe : Return
'---------------------------------------
'------------- LCD ROUTINES -------------
'----------------------------------------
#lcd_init
' alle ports 0
Lcd_port = Off

' 8-Bit-Modus aktivieren
Lcd_param = &H38 : Gosub Lcd_writecmd

' mit 8-Bit-Command in 4-Bit-Modus umschalten
Lcd_port = &B00000010
Tog Lcd_e
Tog Lcd_e

' ab jetzt 4-Bit-Modus
Lcd_param = &H28 : Gosub Lcd_writecmd
Lcd_param = &H0C : Gosub Lcd_writecmd

' Display loeschen
#lcd_cls
Lcd_param = &H02 : Gosub Lcd_writecmd
Lcd_param = &H01 : Gosub Lcd_writecmd
Return
' Zeilenwechsel
#lcd_gotoline
If Lcd_param = 1 Then Lcd_param = &H80
If Lcd_param = 2 Then Lcd_param = &HC0
Goto Lcd_writecmd

' LCD-Kommando
#lcd_writecmd
Lcd_buf = Off
Goto Lcd_write

' Zeichenausgabe
#lcd_writechar
Lcd_buf = &B00100000

' Kommando oder Zeichen an Display senden
#lcd_write
Lcd_port = Lcd_buf Or(lcd_param Shr 4) ' Hi-Nibble
Tog Lcd_e
Tog Lcd_e
Lcd_port = Lcd_buf Or(lcd_param And &H0F) ' Lo-Nibble
Tog Lcd_e
Tog Lcd_e
Return
'IIIIII SYSTEMROUTINEN COMM/NAV SYSTEM IIIII
#get_irdata
Subcmd = 1 : Sys Comnav : Return
#send_irdata
Subcmd = 0 : Sys Comnav : Return
#rc5
Subcmd = 4 : Sys Comnav : Lbyte = Hbyte And &HFC
Hbyte = 00 : Subcmd = 2 : Sys Comnav : Return
#rc5_int
Subcmd = 4 : Sys Comnav : Lbyte =(hbyte And &HFE)OR 2
Hbyte = 00 : Subcmd = 2 : Sys Comnav : Return
#rec80
Subcmd = 4 : Sys Comnav : Lbyte =(hbyte Or &H01)AND&HFD
Hbyte = 00 : Subcmd = 2 : Sys Comnav : Return
#rec80_int
Subcmd = 4 : Sys Comnav : Lbyte =(hbyte Or &H03)
Hbyte = 00 : Subcmd = 2 : Sys Comnav : Return
'IIIIII SYSTEMROUTINEN SYSTEM IIIIIIIIIIII
#no_acs_int
Subcmd = 4 : Sys Comnav : Lbyte = Hbyte And &HFB
Hbyte = 00 : Subcmd = 2 : Sys Comnav : Return
#acs_int_200
Subcmd = 4 : Sys Comnav : Lbyte = Hbyte Or &H04
Hbyte = 50 : Subcmd = 2 : Sys Comnav : Return
#subsys_pwr_on
Sdio = On : Sclio = On : Strobe = Off : Extport =(extport And &HFE)OR 8
Sys System : Return
#subsys_pwr_off
Extport =(extport And &HF7)OR 1 : Sys System
Deact Sdio : Deact Sclio : Return


#clr_distance
Subcmd = 3 : Sys Comnav : Return
#l_distance
Subcmd = 6 : Sys Comnav : Return
#r_distance
Subcmd = 7 : Sys Comnav : Return
'---------COM/NAV GERÄTEREIBER -------------
syscode "p5driv12.s19"

jon