INFO - FAQ - CC2-Forum - CCPro-Forum |
Hallo, in dem Programm habe ich dort eingefügt, wo m.E. der Fehler liegt. Viel Erfolg wünscht Dir ManfredW > 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 Nach gosub steht A auf 1 und die Bedingung für den folgenden gosub ist auch erfüllt, dadurch wird immer Text C ausgegeben. > 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" > Meine Homepage: http://manfred.wilzeck.de |
Antwort schreiben |