
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
> Hallo, > Du benutzt ein Programm von meiner homepage. > Die Antworten habe ich eingefügt. > MfG ManfredW > > ERSTMAL EIN BERICHT VOM ALTEN PROGRAMM DANACH EINE WEITERE KLEINE FRAGE ZU DER NEUEN PROGRAMMVERSION. ICH GEBE NUN SEIT TAGEN DIE VERSCHIEDENEN VERSUCHE IN DIE C-CONTROL EIN SIND NICHT WENIGE ABER ICH HOFFE MIT DEINER HILFE MANFRED WIRDS SCHON WERDEN (ENDSCHULDIGE DAS ICH DEN MÜLL ZWISCHEN DEN ZEILEN NOCH NICHT AUSSORTIERT HABE) DANKE NOCHMALS > > > > > > define LINE byte[1] > > define CHAR byte[1] > > define POS byte[1] > > define BARS byte[1] > > define BIN byte[1] > > define DEZ byte[1] > > 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 > > define wiled1 port[1] > > define waled2 port[2] > > define schrled3 port[3] > > define schlled4 port[4] > > define ventled5 port[5] > > define pumpled6 port[6] > > define vschalter7 port[7] > > define wschalter8 port[8] > > define key_val ad[8] > > define ProgNr byte[2] > > define Wartezeit byte[3] ' > > define Schritt byte[4] > > define x byte[5] > > define Bytefrei6 byte[6] > > define wert1 byte[7] > > define wert2 byte[8] > > define wert12 word[4] > > define wert3 byte[9] > > define key byte[10] > > define Bit81_88 byte[11] > > define Zaehler1 byte[12] > > define Zaehler2 byte[13] > > define Zykluszeit byte[14] > > define TimerAlt word[8] > > define wert1Bit0 Bit [49] > > define wert1Bit1 Bit [50] > > define wert1Bit2 Bit [51] > > define wert1Bit3 Bit [52] > > define wert1Bit4 Bit [53] > > define wert1Bit5 Bit [54] > > define wert1Bit6 Bit [55] > > define wert1Bit7 Bit [56] > > define FlankeZeitpuls Bit[81] > > define TastaturFlanke Bit[82] > > define AufrufbitKey7 Bit[83]' > > define AufrufbitKey9 Bit[84]' > > define BitFrei5 Bit[85]' > > define BitFrei6 Bit[86] > > define SekPuls Bit[87]' > > define LoeschLCD Bit[88] > > sys lcd_init > > sys lcd_clr > > Zaehler1 = 127 > > Zaehler2 = 65 > > #Anfang > > if ProgNr < 1 then goto ende12 > > SekPuls = OFF > > wert1 = second > > if wert1Bit0 = FlankeZeitpuls then goto ende1 > > FlankeZeitpuls = wert1Bit0 > > SekPuls = ON > > AufrufbitKey7 = OFF > > AufrufbitKey9 = OFF > > #ende1 > > Hier kannst Du schrittunabhängiges Programm einfügen, z.B Vibration HABE ICH VERSUCHT FUNZT NICHT RICHTIG RELAIS FALLEN ALLE DAUERHAFT AB > > if (Wartezeit = 0) then goto Schritt > > if (sekpuls = OFF) then goto Ende12 > > Wartezeit = Wartezeit -1 ' > > goto Ende12 > > #Schritt > > if (Schritt = 1) then goto Schritt1 ' > > if (Schritt = 2) then goto Schritt2 ' > > if (Schritt = 3) then goto Schritt3 ' > > if (Schritt = 4) then goto Schritt4 ' > > if (Schritt = 5) then goto Schritt5 ' > > if (Schritt = 6) then goto Schritt6 ' > > if (Schritt = 7) then goto Schritt7 ' > > if (Schritt = 8) then goto Schritt8 ' > > > 'WIE SAEGE ICH DEM PROGRAMM DAS vschalter7 und Key = 7 DAS SELBE AUSLÖSEN > > 'if vschalter7 then key = 7 'funzt nicht > Du kannst den Eingang Tastatur nicht einschalten sondern nur abfragen. > Das byte Key kannst Du zwar mit 7 setzen, doch im Keydecoder wird es sofort wieder rückgesetzt, weil dort geprüft wird, ob Taste 7 gedrückt wurde. > Wenn Du Dich daran halten würdest, was ich Dir früher schon geantwortet habe, wertest Du AufrufbitKey7 aus. Dann kannst vschalter7 oder Taste7 drücken und dieselbe Funktion auslösen. AufrufbitKey7HABE ICH AUCH SCHON VORHER VERSUCHT FUNZT IMMER NOCHNICHT > > > Schritt = 1 > > goto Ende12 > > #Schritt1 > > ventled5 = OFF ' > > Wartezeit = 10 ' > > Goto Schrittweiter > > #Schritt2 ' > > 'if AufrufbitKey7 then goto SCHRITTWEITER FUNKTIONIETRT HIER NICHT DESHALB DAS #VIBRATIONSABSCHALTUNG > Wo ist hier das Unterprogramm #Vibrationsabschaltung? > Während der Wartezeit wird der Schritt nicht durchlaufen und AufrufbitKey7 wird im Tasturbaustein rückgesetzt, denn es ist nur ein Zyklus eingeschaltet.GEHT ABER FÜR MEINE GESCHICHTE PRIMA SO > > > pumpled6 = OFF : wiled1 = ON : schrled3 = ON ' > > Wartezeit = 10' > > Goto Schrittweiter > > #Schritt3 ' > > schrled3 = OFF : wiled1 = OFF : waled2 = ON' > > Wartezeit = 10'x > > Goto Schrittweiter > > #Schritt4 ' > > waled2 = OFF :wiled1 = ON : schlled4 = ON :' > > Wartezeit = 10' > > Goto Schrittweiter > > #Schritt5 > > schlled4 = OFF : wiled1 = OFF :waled2 = ON > > Wartezeit = 10' > > Goto Schrittweiter > > #Schritt6 > > waled2 = OFF :ventled5 = ON > > Wartezeit = 5' > > Goto Schrittweiter > > #Schritt7 > > pumpled6 = ON > > Wartezeit = 5' > > goto Schrittweiter > > #Schritt8 > > Wartezeit = 5' > > if wschalter8 = OFF then goto Anfang > Hier springst Du zum Anfang ohne andere Funktionen LCD, Tastatur usw, zu bearbeiten. > Es muss goto Ende12 sein. STIMMT JA FUNZT MUSSTE ABER RELAIS 2 MAL IN SCHRITT NOCHMALS ABSCHALTEN WEIL ZUERSTWEISSDERTEUFELWARUMAUCHNICHTRICHTIG > > #Schrittweiter > > Schritt = Schritt + 1 > > #Ende12 > > Zykluszeit = (Timer - TimerAlt)' > > TimerAlt = Timer > > gosub Tastatur > > Goto LCD' > > #Tastatur > > gosub key_decode > > if key < 199 then goto Taste > > TastaturFlanke = OFF > > x = 1 > > Return > > #Taste > > if key =3 then goto plusvar > > if key =6 then goto MinusZaehler2 > > if ProgNr >< 1 then goto TastaturFlanke' > > #TastaturFlanke' > > if TastaturFlanke = ON then Return ' > > TastaturFlanke = ON > > if key =1 then goto ProgNrPlus > > if ProgNr >< 1 then return ' > Ab hier arbeitet nur Programm 1 > > if Key = 7 then AufrufbitKey7 = ON > Die folgende Zeile soll nicht im Tastaturbaustein stehen, sondern im zuständigen Schritt. HABE ICH VERSUCHT KEIN FUNZT NICHT > Wenn die Funktion dauerhaft gebraucht wird, soll sie vor dem Schrittregister FUNZT NICHT /RICHTIGstehen und die Vibrationsabschaltung wird einmalig durchlaufen, weil nach meiner früheren Antwort vor der Tastatur steht AufrufbitKey7 = OFF. > goto ist zulässig, return des Unterprogramms wird benutzt. > > if AufrufbitKey7 then goto Vibrationabschaltung > > if Key = 9 then AufrufbitKey9 = ON > sinngemäß wie vor > > if AufrufbitKey9 then goto Runterfahren > > return > > #key_decode > > Hier wird Dein Key = 7 überschrieben > > key=255 > > #nochmal > > wert3 = key_val > > if wert3 > 240 then return > > Key = key -1 > > if wert3 = key_val then goto TasteAusgeben > > if Key > 240 then goto nochmal > > return > > #TasteAusgeben > > if wert3>=0 then key=10 > > if wert3>14 then key=7 > > if wert3>36 then key=4 > > if wert3>57 then key=1 > > if wert3>70 then key=0 > > if wert3>100 then key=8 > > if wert3>122 then key=5 > > if wert3>142 then key=2 > > if wert3>163 then key=11 > > if wert3>183 then key=9 > > if wert3>204 then key=6 > > if wert3>225 then key=3 > > return > > #LCD > > if LoeschLCD = OFF then goto Anzeige > > LoeschLCD = OFF :sys LCD_CLR > > #Anzeige > > if ProgNr =1 then goto LCDprg1 > > if ProgNr =2 then goto LCDprg2 > > SYS LCD_LINE1:sys LCD_PRINT:print" WEIL NICHT ALLES IN EINE ZEILE PASST": > > for wert1=1 to 22 > > SYS LCD_SCRL:pause 10 > > sys LCD_LINE1 ' > > wert1 = ProgNr :gosub Zahl1' > > sys LCD_PRINT:print" dr": gosub ue : sys LCD_PRINT:print"cke Taste 1" > > sys LCD_LINE2 ' > > sys LCD_PRINT:print"f":gosub ue:sys LCD_PRINT:print"r Prog 1 bis 7" > > goto Anfang ' > > #LCDprg1 > > sys LCD_LINE1 > > DEZ = ProgNr : SYS LCD_DEZ > > sys LCD_PRINT:print" warte " > > DEZ = Wartezeit : SYS LCD_DEZ : sys LCD_PRINT:print" sec" > > goto LCD67' > > #LCDprg2 > > sys LCD_LINE1 ' > > DEZ = ProgNr : SYS LCD_DEZ > > sys LCD_PRINT:print" warte " > > DEZ = Wartezeit : SYS LCD_DEZ : sys LCD_PRINT:print" sec" > > goto LCD67 > > #LCD67 > > sys LCD_LINE2 ' > > sys LCD_PRINT:print"Schritt " > > DEZ = Schritt : SYS LCD_DEZ > > goto Anfang > > #ProgNrPlus > > ProgNr = ProgNr + 1 > > LoeschLCD = ON ' > > if ProgNr > 8 then ProgNr = 1 > > return > > #Vibrationabschaltung > > schrled3 = OFF : schlled4 = OFF :wiled1 = OFF : waled2 = ON : return > > 'SCHRITTWETITER STATT SCHRLED3 U.S.W FUNKTIONIETRT HIER NUR EINMAL > Das liegt in Deiner Macht, je nachdem was Du programmierst. > > > #Runterfahren > > 'WAS MUSS HIER STEHEN DAS ICH WIEDER IN DAS ERSTE PROGRAMM (DRÜCKE 1-7)KOMME? > ProgNr = 1 ProgNr = 0 FUNZT GUT > return, bzw. goto .. > > > #PlusZaehler1 ' > > Zaehler1 = Zaehler1 +1 :return > > #MinusZaehler1 ' > > Zaehler1 = Zaehler1 -1 :return > > #PlusZaehler2 ' > > Zaehler2 = Zaehler2 +1 :return > > #MinusZaehler2 ' > > Zaehler2 = Zaehler2 -1 :return > > #PlusVar ' > > Zaehler2 = Zaehler2 + x > > x = x + 1 > > return > > #Zahl5 > > if wert12 <0 then gosub Minus else gosub space > > wert12 = abs (wert12) > > if wert12 >= 10000 then CHAR = wert12 /10000 +&H30 else CHAR = &H20 > > SYS LCD_WRT > > #Zahl4 ' > > if wert12 >= 1000 then CHAR = wert12 MOD 10000 /1000 +&H30 else CHAR = &H20 > > SYS LCD_WRT > > #Zahl3Word ' > > if wert12 >= 100 then CHAR = wert12 MOD 1000 /100 +&H30 else CHAR = &H20 > > SYS LCD_WRT > > if wert12 >= 10 then CHAR = wert12 MOD 100 /10 +&H30 else CHAR = &H20 > > SYS LCD_WRT > > CHAR = wert12 MOD 10 +&H30 > > SYS LCD_WRT > > Return > > #Zahl3 > > if wert1 >= 100 then CHAR = wert1/100 +&H30 else CHAR = &H20 > > SYS LCD_WRT > > #Zahl2 ' > > if wert1 >= 10 then CHAR = wert1 MOD 100 /10 +&H30 else CHAR = &H20 > > SYS LCD_WRT > > #Zahl1 > > CHAR = wert1 mod 10 +&H30 > > SYS LCD_WRT : Return > > #Space CHAR = &H20 :SYS LCD_WRT :Return > > #Plus CHAR = &H2B :SYS LCD_WRT :Return > > #Minus CHAR = &H2D :SYS LCD_WRT :Return > > #ae CHAR = &HE1 :SYS LCD_WRT :Return > > #oe CHAR = &HEF :SYS LCD_WRT :Return > > #ue CHAR = &HF5 :SYS LCD_WRT :Return > > goto Anfang > > > > > sys-Prog fehlt hier > > > Brauchst Du denn mehrere Programme (ProgNr) ? JA EIN 2TES ZUM ABSCHALTEN /RUNTERFAHREN DESHALB NUN MEINE NEUE FRAGE : WAS HABE ICH BEI SCHRITT6 FALSCH GEMACHT UND VSCHALTER7 HAB ICH AUCHNOCHNICHT ,WOHIN GENAU MIT DEM 'if vschalter7 then AufrufbitKey7 > > > 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 '-------------------------- '------ I/O PORTS --------- '-------------------------- 'define lcd_port byteport[2] 'define lcd_rs port[14] 'define lcd_rw port[13] 'define lcd_e port[15] define leds byteport[1] define wiled1 port[1] define waled2 port[2] define schrled3 port[3] define schlled4 port[4] define ventled5 port[5] define pumpled6 port[6] define vschalter7 port[7] define wschalter8 port[8] define key_val ad[8] '-------------------------- '---- Variable ------- '-------------------------- define ProgNr byte[2] define Wartezeit byte[3] ' define Schritt byte[4] define x byte[5] define Bytefrei6 byte[6] define wert1 byte[7]'Schmierbyte define wert2 byte[8]'Schmierbyte define wert12 word[4]'Schmierword = byte 7,8 define wert3 byte[9] 'Schmierbyte define key byte[10]'------- KEY DECODER --------- define Bit81_88 byte[11]'11 (statische Bits)<<(bit 81 bis 88)<<<<<< define Zaehler1 byte[12] define Zaehler2 byte[13] define Zykluszeit byte[14]'Timer-Differenz define TimerAlt word[8]'= Byte 15,16 (Altwert) define wert1Bit0 Bit [49]'für bit-Handling des byte wert1 define wert1Bit1 Bit [50] define wert1Bit2 Bit [51] define wert1Bit3 Bit [52] define wert1Bit4 Bit [53] define wert1Bit5 Bit [54] define wert1Bit6 Bit [55] define wert1Bit7 Bit [56] 'bits zu Byte 11 define FlankeZeitpuls Bit[81]'Flankenbit define TastaturFlanke Bit[82]'Flankenbit define AufrufbitKey7 Bit[83]' define AufrufbitKey0 Bit[84]' define BitFrei5 Bit[85]' define BitFrei6 Bit[86] define SekPuls Bit[87]' define LoeschLCD Bit[88] 'Aufruf LCD löschen sys lcd_init sys lcd_clr 'Vorbesetzung Zaehler1 = 127 Zaehler2 = 65 '######################################################## #Anfang ' Hauptprogramm if ProgNr < 1 then goto ende12 ' 3.1 Zeittakt SekPuls = OFF wert1 = second if wert1Bit0 = FlankeZeitpuls then goto ende1 FlankeZeitpuls = wert1Bit0 SekPuls = ON AufrufbitKey7 = OFF AufrufbitKey0 = OFF #ende1 ' 3.2 Steuerprogramm ' *** Schrittsteuerung mit Wartezeiten *** 'In jedem Schritt kann eine Wartezeit gesetzt werden, die rückwärts gegen Null läuft. 'Nach Ablauf der Wartezeit wird der eingeschaltete Schritt bearbeitet. if (Wartezeit = 0) then goto Schritt 'Wartezeit abgelaufen? ja ---> geh zu Schritt if (sekpuls = OFF) then goto Ende12 Wartezeit = Wartezeit -1 'Wartezeit minus 1 sek (Zeittakt siehe oben) goto Ende12 #Schritt ' Schrittregister bei Wartezeit NULL if (Schritt = 1) then goto Schritt1 ' if (Schritt = 2) then goto Schritt2 ' if (Schritt = 3) then goto Schritt3 ' if (Schritt = 4) then goto Schritt4 ' if (Schritt = 5) then goto Schritt5 ' if (Schritt = 6) then goto Schritt6 ' if (Schritt = 7) then goto Schritt7 ' if (Schritt = 8) then goto Schritt8 ' if (Schritt = 9) then goto Schritt9 ' if (Schritt = 10) then goto Schritt10 ' if (Schritt = 11) then goto Schritt11 ' Schritt = 1 goto Ende12 #Schritt1 ventled5 = OFF ' Wartezeit = 10 'x 1 sec Wartezeit setzen Goto Schrittweiter #Schritt2 ' pumpled6 = OFF : wiled1 = ON : schrled3 = ON ' Wartezeit = 10'x1 sec Wartezeit setzen Goto Schrittweiter #Schritt3 ' schrled3 = OFF : wiled1 = OFF : waled2 = ON' Wartezeit = 10'x1 sec Wartezeit setzen Goto Schrittweiter #Schritt4 ' waled2 = OFF :wiled1 = ON : schlled4 = ON :' Wartezeit = 10'x1 sec Wartezeit setzen Goto Schrittweiter #Schritt5 schlled4 = OFF : wiled1 = OFF :waled2 = ON Wartezeit = 10'x1 sec Wartezeit setzen Goto Schrittweiter #Schritt6 if ProgNr =2 then goto Schrittweiter if ProgNr =1 then goto Schritt8 #Schritt7 deact leds: ventled5 = OFF ProgNr = 0 return #Schritt8 Goto Schrittweiter #Schritt9 waled2 = OFF :ventled5 = ON Wartezeit = 5'x1 sec Wartezeit setzen Goto Schrittweiter #Schritt10 pumpled6 = ON Wartezeit = 5'x1 sec Wartezeit setzen goto Schrittweiter #Schritt11 Wartezeit = 5'x1 sec Wartezeit setzen if wschalter8 = OFF then goto Ende12 if ProgNr =2 then goto Ende12 #Schrittweiter Schritt = Schritt + 1 ' Schritt-Nummer um 1 erhöhen #Ende12 'Messung der Zykluszeit des Programms 'Das Messprogramm bildet Differenz des aktuellen Timer-Werts zum vorherigen gespeicherten Altwert. Zykluszeit = (Timer - TimerAlt)' * 20 ' Anzeige *20 in Millisekunden TimerAlt = Timer ' Bildung des Altwerts gosub Tastatur ' Abfrage Tastatur Goto LCD' Anzeigen (LCD endet mit goto Anfang) '######################################################## ' *** Unterprogramme *** #Tastatur gosub key_decode 'Abfrage Taste gedrückt, sichere Version <<<<<<<<<<<<<<<<<< if key < 199 then goto Taste ' >199=keine Taste, 0 bis 9=Ziffer, 10=* 11=# TastaturFlanke = OFF x = 1 Return #Taste 'Auswertung und Befehlsgabe der Tastatur if key =3 then goto plusvar'PlusZaehler2 'Zähler stellen (Takten) if key =6 then goto MinusZaehler2 'Zähler stellen (Takten) if ProgNr < 1 then goto TastaturFlanke' 'if key =2 then goto PlusZaehler1 'Zähler stellen (Takten) ' if key =5 then goto MinusZaehler1 'Zähler stellen (Takten) #TastaturFlanke' if TastaturFlanke = ON then Return ' Einzelschritt TastaturFlanke = ON 'nachfolgende Tasten lösen Einzelschritt aus if key =1 then goto ProgNrPlus 'Programm Nr stellen (Einzelschritt) 'if key =2 then goto PlusZaehler2 'Zähler stellen (Einzelschritt) 'if key =5 then goto MinusZaehler2 'Zähler stellen (Einzelschritt) if ProgNr < 1 then return ' Relais schalten ' Relais EIN 'if key = 8 then schrled3 = OFF : schlled4 = OFF ' Relais AUS 'if key = 7 then schrled3 = OFF : schlled4 = OFF :wiled1 = OFF : waled2 = ON if Key = 7 then AufrufbitKey7 = ON if AufrufbitKey7 then goto Vibrationabschaltung if Key = 0 then AufrufbitKey0 = ON if AufrufbitKey0 then ProgNr =2 'if key = 7 then vschalter7 = not vschalter7 'Relais EIN-AUS 'if key >< 8 then return 'alternativ aufwändiger 'if vschalter7 = OFF then vschalter7 = ON else vschalter7 = OFF 'Relais EIN-AUS return #key_decode 'Umsetzungstabelle auf Tastencode Applikationboard (Version Wilzeck) key=255 ' Vorbesetzung Anfang: (keine Taste gedrückt 240 bis 255) #nochmal wert3 = key_val if wert3 > 240 then return ' keine Taste gedrückt Key = key -1 '(Schleifenzähler) if wert3 = key_val then goto TasteAusgeben 'Wert stabil? if Key > 240 then goto nochmal ' max. 15-mal prüfen return ' dann Abbruch #TasteAusgeben if wert3>=0 then key=10 ' KEY * if wert3>14 then key=7 ' KEY if wert3>36 then key=4 ' KEY if wert3>57 then key=1 ' KEY if wert3>70 then key=0 ' KEY if wert3>100 then key=8 ' KEY if wert3>122 then key=5 ' KEY if wert3>142 then key=2 ' KEY if wert3>163 then key=11 ' KEY # if wert3>183 then key=9 ' KEY if wert3>204 then key=6 ' KEY if wert3>225 then key=3 ' KEY return #LCD if LoeschLCD = OFF then goto Anzeige ' Aufruf LCD löschen (bei PrgPlus) LoeschLCD = OFF :sys LCD_CLR #Anzeige if ProgNr =1 then goto LCDprg1 if ProgNr =2 then goto LCDprg2 'u.s.w. SYS LCD_LINE1:sys LCD_PRINT:print" WEIL NICHT ALLES IN EINE ZEILE PASST": for wert1=1 to 22 SYS LCD_SCRL:pause 10 sys LCD_LINE1 ' Start Zeile 1 wert1 = ProgNr :gosub Zahl1' 'Spalte 1 sys LCD_PRINT:print" dr": gosub ue : sys LCD_PRINT:print"cke Taste 1" sys LCD_LINE2 ' Start Zeile 2 sys LCD_PRINT:print"f":gosub ue:sys LCD_PRINT:print"r Prog 1 bis 7" goto Anfang ' Ende Hauptprogramm #LCDprg1 sys LCD_LINE1 ' Start Zeile 1 DEZ = ProgNr : SYS LCD_DEZ 'Spalte 1 sys LCD_PRINT:print" warte " DEZ = Wartezeit : SYS LCD_DEZ : sys LCD_PRINT:print" sec" goto LCD67' Ende Hauptprogramm #LCDprg2 sys LCD_LINE1 ' Start Zeile 1 DEZ = ProgNr : SYS LCD_DEZ 'Spalte 1 sys LCD_PRINT:print" warte " DEZ = Wartezeit : SYS LCD_DEZ : sys LCD_PRINT:print" sec" goto LCD67 #LCD67 sys LCD_LINE2 ' Start Zeile 2 sys LCD_PRINT:print"Schritt " DEZ = Schritt : SYS LCD_DEZ goto Anfang ' Ende Hauptprogramm #ProgNrPlus ProgNr = ProgNr + 1 LoeschLCD = ON ' Aufruf LCD löschen (jeweils bei ProgNrPlus) if ProgNr > 1 then ProgNr = 1 return #Vibrationabschaltung schrled3 = OFF : schlled4 = OFF :wiled1 = OFF : waled2 = ON : return #PlusZaehler1 ' Zaehler1 = Zaehler1 +1 :return #MinusZaehler1 ' Zaehler1 = Zaehler1 -1 :return #PlusZaehler2 ' Zaehler2 = Zaehler2 +1 :return #MinusZaehler2 ' Zaehler2 = Zaehler2 -1 :return #PlusVar ' Zaehler2 = Zaehler2 + x x = x + 1 return 'Ausgabe von Zahlen im word #Zahl5 ' 5-stellige Zahl ausgeben if wert12 <0 then gosub Minus else gosub space wert12 = abs (wert12) if wert12 >= 10000 then CHAR = wert12 /10000 +&H30 else CHAR = &H20 SYS LCD_WRT #Zahl4 ' 4-stellige Zahl ausgeben if wert12 >= 1000 then CHAR = wert12 MOD 10000 /1000 +&H30 else CHAR = &H20 SYS LCD_WRT #Zahl3Word ' 3-stellige Zahl ausgeben (wert größer 255) if wert12 >= 100 then CHAR = wert12 MOD 1000 /100 +&H30 else CHAR = &H20 SYS LCD_WRT if wert12 >= 10 then CHAR = wert12 MOD 100 /10 +&H30 else CHAR = &H20 SYS LCD_WRT CHAR = wert12 MOD 10 +&H30 SYS LCD_WRT Return 'Ausgabe von Zahlen im Byte, führende Null wird Space #Zahl3 ' 3-stellige Zahl ausgeben (Byte max 255) if wert1 >= 100 then CHAR = wert1/100 +&H30 else CHAR = &H20 'Space SYS LCD_WRT #Zahl2 ' 2-stellige Zahl ausgeben if wert1 >= 10 then CHAR = wert1 MOD 100 /10 +&H30 else CHAR = &H20 SYS LCD_WRT #Zahl1 ' 1-stellige Zahl ausgeben CHAR = wert1 mod 10 +&H30 SYS LCD_WRT : Return 'Ausgabe von Zahlen im Byte als HEX-Zahl '#Hex '2-stellig ' CHAR = wert1 /16 'linkes Nibble ' if CHAR < 10 then CHAR = CHAR +&H30 else CHAR = (CHAR -10)+&H41 ' SYS LCD_WRT ' CHAR = wert1 MOD 16 'rechtes Nibble ' if CHAR < 10 then CHAR = CHAR +&H30 else CHAR = (CHAR -10)+&H41 ' SYS LCD_WRT : Return #Space CHAR = &H20 :SYS LCD_WRT :Return #Plus CHAR = &H2B :SYS LCD_WRT :Return #Minus CHAR = &H2D :SYS LCD_WRT :Return #ae CHAR = &HE1 :SYS LCD_WRT :Return #oe CHAR = &HEF :SYS LCD_WRT :Return #ue CHAR = &HF5 :SYS LCD_WRT :Return goto Anfang '--------------- DISPLAY TREIBER ---------------------- 'syscode "lcddrv11.s19" |
| Antwort schreiben |