Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Probleme if ... then Kategorie: Programmierung Basic (von setup_exe - 24.09.2004 18:32)
Hallo Forum,
ich habe ein Problem mit folgenden Code (die if ... then Abfrage im "aktiven Display"
funzt nicht und ich komme da einfach nicht weiter (Display ständig "C" und nicht auf "U").
Umgebung:
A_byte = 0 nach Einschalten (Reset)
port[4] = A_PORT -> Taster -> L-aktiv
Zustand des Tasters soll "zwischengespeichert" sein -> also A_byte = 0 -> Taster auf L ->
A_byte = 1 -> Taster auf L -> A_byte = 0 usw.
Zusätzlich wird der Zustand im Display angezeigt: 0 = "C" -> 1 = "U".
Vielen Dank für einen Tip!
Cu Dominique

Codeausschnitt:

'******************************
'*     PS-MC1-Steuerung       *
'*     V 1.1 -> 24.09.2004    *
'*     Test: 1                *
'******************************
'------ I/O PORTS ---------
define RL_PORT  port[1] 'Port Rechts-/Linkslauf
define H2O_PORT port[2] 'Port Wasserkühlung
define A_PORT   port[4] 'Port Antriebsauswahl (Controller or Unit)
define AD7      AD[7]   'AD-Eingang Poti -> Leistung -> wird später DA[1]
'---- LCD PARMAMETERS -----
define  LINE     byte[1]
define  CHAR     byte[1]
define  POS      byte[1]
define  BARS     byte[1]
define  BIN      byte[1]
define  DEZ      byte[1]
'-- LCD SYSTEM ADDR -----
define LCD_INIT   &H101
define LCD_CLR    &H11D
define LCD_LINE1  &H125
define LCD_LINE2  &H12A
define LCD_POSL1  &H12F
define LCD_POSL2  &H133
define LCD_SCRL   &H13B
define LCD_SCRR   &H140
define LCD_BAR    &H145
define LCD_BIN    &H154
define LCD_DEZ    &H1C3
define LCD_WRT    &H1A4
define LCD_PRINT  &H179
'----- Variablen -----
define NULL      &H30 'Hex für 0
define A_byte    byte 'Byte Antrieb zur Zwischenspeicherung
define P         byte 'P = Leistung
'----- PROGRAMM -----
A_byte = 0
'----- INIT LCD -----
SYS &H101
'------ START-TEXT mit Display 4 x 16 ------
POS=1:SYS LCD_POSL1:sys LCD_PRINT:print"LEISTUNG:"
POS=1:SYS LCD_POSL2:sys LCD_PRINT:print"ANTRIEB :"
POS=17:SYS LCD_POSL1:sys LCD_PRINT:print"SPRAY   :"
POS=17:SYS LCD_POSL2:sys LCD_PRINT:print"R/L-LAUF:"
POS=16:SYS LCD_POSL1:sys LCD_PRINT:print"%"
POS=16:SYS LCD_POSL2:sys LCD_PRINT:print"C"
POS=30:SYS LCD_POSL1:sys LCD_PRINT:print"OFF"
POS=30:SYS LCD_POSL2:sys LCD_PRINT:print"OFF"
pause 100
'------ aktives DISPLAY --------
#LOOP
P = AD7 * 100 / 255 'Umrechnung AD7 -> 0 - 100 %
POS=13:SYS LCD_POSL1:CHAR=NULL+P/100:SYS LCD_WRT 'Anzeige 100-er
POS=14:SYS LCD_POSL1:CHAR=NULL+P MOD 100/10:SYS LCD_WRT 'Anzeige 10-er
POS=15:SYS LCD_POSL1:CHAR=NULL+P MOD 10:SYS LCD_WRT 'Anzeige 1-er
if (not A_PORT) and (A_byte=0) then gosub A_TEXT_1 'Abfrage ob Port=L und A_byte=0
if (not A_PORT) and (A_byte=1) then gosub A_TEXT_0 'Abfrage ob Port=L und A_byte=1
goto LOOP
end
'***************************************************************************************
'------ HIER IST DAS PROBLEM -> das Display will nicht umschalten!!!!!!!!!!!!!! --------
'***************************************************************************************
'------ Umschaltung Anzeige "C" und A_byte=0 ------
#A_TEXT_0
A_byte = 0
POS=16:SYS LCD_POSL2:sys LCD_PRINT:print"C"
return
'------ Umschaltung Anzeige "U" und A_byte=1 ------
#A_TEXT_1
A_byte = 1
POS=16:SYS LCD_POSL2:sys LCD_PRINT:print"U"
return
'--------------- DISPLAY TREIBER ----------------------
syscode "lcddrv11.s19"

 Antwort schreiben

Bisherige Antworten:

Re: Probleme if ... then (von ManfredW - 24.09.2004 19:52)
    Re: Probleme if ... then (von setup_exe - 25.09.2004 10:45)
        Re: Probleme if ... then (von ManfredW - 25.09.2004 11:26)
            Re: Probleme if ... then (von setup_exe - 25.09.2004 13:00)
                Re: Probleme if ... then (von ManfredW - 25.09.2004 19:52)
Re: Probleme if ... then (von setup_exe - 24.09.2004 19:09)