
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
Hallo DIE HARD, hier mein Programm, es fehlt nur die Routinen für den Programiermodus, Andi B. define warte11 byte define warte12 byte define warte13 byte define warte14 byte define warte21 byte define warte22 byte define warte23 byte define warte24 byte define p1 byte define p2 byte define Menge1 byte define Menge2 byte define M1 byte define M2 byte define schleife byte define schleife1 byte define Mengemuenz1 byte define Mengemuenz2 byte define wert1 word define output word define zeit word define zeit1 word define zeit2 word define zaehler11 word define zaehler12 word define zaehler13 word define zaehler14 word define zaehler21 word define zaehler22 word define zaehler23 word define zaehler24 word ' *** Definition Ports *** define relsaug1 port[1] ' Relais 1 define relsaug2 port[2]' Relais 2 define abschalt1 Port[3] ' Münzprüfer 1 aus/ein define abschalt2 port[4] ' Münzprüfer 2 aus/ein define muenz1W1 port[8] ' Wert4 Münzprüfer 2 define muenz1W2 port[7] ' Wert3 Münzprüfer 2 define muenz1W3 port[6] ' Wert2 Münzprüfer 2 define muenz1W4 port[5] ' Wert1 Münzprüfer 2 define muenz2W1 AD[8] ' Wert4 Münzprüfer 1 define muenz2W2 AD[7] ' Wert3 Münzprüfer 1 define muenz2W3 AD[6] ' Wert2 Münzprüfer 1 define muenz2W4 AD[5] ' Wert1 Münzprüfer 1 define LIGHT port[16] ' Display licht define taste_rt AD[1]' Test Relais 1 define taste_gn AD[2] ' Test Relais 2 define taste_sw AD[3]' Programmmodus ' --- Initialisierung --- #INIT LIGHT=off 'Licht an print"#ON_LCD#"; print"#INIT#"; deact muenz1w1 deact muenz1w2 deact muenz1w3 deact muenz1w4 Open# for read input# wert1 if eof then goto standard input# zaehler11 input# zaehler12 input# zaehler13 input# zaehler14 input# zaehler21 input# zaehler22 input# zaehler23 input# zaehler24 close# 'Slowmode off #Neustart 'an1=0 'an2=0 warte11=0 warte12=0 warte13=0 warte14=0 warte21=0 warte22=0 warte23=0 warte24=0 relsaug1 = off relsaug2 = off abschalt1 = off abschalt2 = off Menge1 = 0 Menge2 = 0 M1=0 M2=0 'wert1 =10 gosub anzeigesauger #start ' Muenzprüfer 1 abfragen if muenz1W1 = off and warte11 = 0 then gosub Zeit11 if muenz1W1 = off then warte11 = 1 else warte11 = 0 if muenz1W2 = off and warte12 = 0 then gosub Zeit12 if muenz1W2 = off then warte12 = 1 else warte12 = 0 if muenz1W3 = off and warte13 = 0 then gosub Zeit13 if muenz1W3 = off then warte13 = 1 else warte13 = 0 if muenz1W4 = off and warte14 = 0 then gosub Zeit14 if muenz1W4 = off then warte14 = 1 else warte14 = 0 ' Muenzprüfer 2 abfragen if muenz2W1 < 25 and warte21 = 0 then gosub Zeit21 if muenz2W1 < 25 then warte21 = 1 else warte21 = 0 if muenz2W2 < 25 and warte22 = 0 then gosub Zeit22 if muenz2W2 < 25 then warte22 = 1 else warte22 = 0 if muenz2W3 < 25 and warte23 = 0 then gosub Zeit23 if muenz2W3 < 25 then warte23 = 1 else warte23 = 0 if muenz2W4 < 25 and warte24 = 0 then gosub Zeit24 if muenz2W4 < 25 then warte24 = 1 else warte24 = 0 if M1=0 and M2=0 and relsaug1 = on then gosub zeitlaeuft if M1=0 and M2=0 and relsaug2 = on then gosub zeitlaeuft if M1=1 or M2=1 then zeit = hour*3600+minute*60 + second if Zeit1 = Zeit and relsaug1 = on and M1 = 1 then gosub Manuellausauto1 if Zeit2 = Zeit and relsaug2 = on and M2 = 1 then gosub Manuellausauto2 if Zeit1 = Zeit and relsaug1 = on and M1 = 0 then gosub Sauger1_aus if Zeit2 = Zeit and relsaug2 = on and M2 = 0 then gosub Sauger2_aus if Mengemuenz1 >9 and relsaug1 = on then abschalt1 = on else abschalt1 = off if Mengemuenz2 >9 and relsaug2 = on then abschalt2 = on else abschalt2 = off if taste_gn < 25 and M1 = 0 and relsaug1 = off then gosub Manuellein1 if taste_gn < 25 and M1 = 1 then gosub Manuellaus1 if taste_rt < 25 and M2 = 0 and relsaug2 = off then gosub Manuellein2 if taste_rt < 25 and M2 = 1 then gosub Manuellaus2 if taste_sw < 25 and relsaug1 = off and relsaug2 = off then gosub prog 'put taste_rt goto start #zeitlaeuft zeit = hour*3600+minute*60 + second if zeit => wert1 then gosub zeitaendern print"#L108#"; 'ZEILE 1, POSITION 1 print zeit; return #zeitaendern abschalt1 = on abschalt2 = on zeit = zeit - wert1 hour = 0 minute = 0 second =0 if relsaug1 = on then zeit1 = Zeit1 - wert1 if relsaug2 = on then zeit2 = Zeit2 - wert1 gosub anzeigesauger abschalt1 = off abschalt1 = off return #Zeit11 if Mengemuenz1 >9 then return 'if abschalt1 = on then return if relsaug1 = off and relsaug2 = off then hour = 0 if relsaug1 = off and relsaug2 = off then minute = 0 if relsaug1 = off and relsaug2 = off then second = 0 if Menge1 > 0 then Zeit1 = Zeit1 + wert1 else zeit1 = hour*3600+minute*60 + second + wert1 Relsaug1 = on Mengemuenz1=Mengemuenz1 + 1 Menge1 = Menge1 + 1 zaehler11 = zaehler11 + 1 gosub anzeigesauger return #Zeit12 if Mengemuenz1 >9 then return if relsaug1 = off and relsaug2 = off then hour = 0 if relsaug1 = off and relsaug2 = off then minute = 0 if relsaug1 = off and relsaug2 = off then second = 0 if Menge1 > 0 then Zeit1 = Zeit1 + (2 * wert1) else zeit1 = hour*3600+minute*60 + second + (2 * wert1) Relsaug1 = on Mengemuenz1=Mengemuenz1 + 2 Menge1 = Menge1 + 1 zaehler12 = zaehler12 + 1 gosub anzeigesauger return #Zeit13 if Mengemuenz1 >9 then return if relsaug1 = off and relsaug2 = off then hour = 0 if relsaug1 = off and relsaug2 = off then minute = 0 if relsaug1 = off and relsaug2 = off then second = 0 if Menge1 > 0 then Zeit1 = Zeit1 + (4 * wert1) else zeit1 = hour*3600+minute*60 + second + (4 * wert1) Relsaug1 = on Mengemuenz1=Mengemuenz1 + 4 Menge1 = Menge1 + 1 zaehler13 = zaehler13 + 1 gosub anzeigesauger return #Zeit14 if Mengemuenz1 >9 then return if relsaug1 = off and relsaug2 = off then hour = 0 if relsaug1 = off and relsaug2 = off then minute = 0 if relsaug1 = off and relsaug2 = off then second = 0 if Menge1 > 0 then Zeit1 = Zeit1 + (2 * wert1) else zeit1 = hour*3600+minute*60 + second + (2 * wert1) Relsaug1 = on Mengemuenz1=Mengemuenz1 + 2 Menge1 = Menge1 + 1 zaehler14 = zaehler14 + 1 gosub anzeigesauger return #Zeit21 if Mengemuenz2 >9 then return if relsaug1 = off and relsaug2 = off then hour = 0 if relsaug1 = off and relsaug2 = off then minute = 0 if relsaug1 = off and relsaug2 = off then second = 0 if Menge2 > 0 then Zeit2 = Zeit2 + wert1 else zeit2 = hour*3600+minute*60 + second + wert1 Relsaug2 = on Mengemuenz2=Mengemuenz2 + 1 Menge2 = Menge2 + 1 zaehler21 = zaehler21 + 1 gosub anzeigesauger return #Zeit22 if Mengemuenz2 >9 then return if relsaug1 = off and relsaug2 = off then hour = 0 if relsaug1 = off and relsaug2 = off then minute = 0 if relsaug1 = off and relsaug2 = off then second = 0 if Menge2 > 0 then Zeit2 = Zeit2 + (2 * wert1) else zeit2 = hour*3600 + minute*60 + second + (2 * wert1) Relsaug2 = on Mengemuenz2=Mengemuenz2 + 2 Menge2 = Menge2 + 1 zaehler22 = zaehler22 + 1 gosub anzeigesauger return #Zeit23 if Mengemuenz2 >9 then return if relsaug1 = off and relsaug2 = off then hour = 0 if relsaug1 = off and relsaug2 = off then minute = 0 if relsaug1 = off and relsaug2 = off then second = 0 if Menge2 > 0 then Zeit2 = Zeit2 + (4*wert1) else zeit2 = hour*3600 + minute*60 + second + (4*wert1) Relsaug2 = on Mengemuenz2=Mengemuenz2 + 4 Menge2 = Menge2 + 1 zaehler23 = zaehler23 + 1 gosub anzeigesauger return #Zeit24 if Mengemuenz2 >9 then return if relsaug1 = off and relsaug2 = off then hour = 0 if relsaug1 = off and relsaug2 = off then minute = 0 if relsaug1 = off and relsaug2 = off then second = 0 if Menge2 > 0 then Zeit2 = Zeit2 + (2 * wert1) else zeit2 = hour*3600 + minute*60 + second + (2 * wert1) Relsaug2 = on Mengemuenz2=Mengemuenz2 + 2 Menge2 = Menge2 + 1 zaehler24 = zaehler24 + 1 gosub anzeigesauger return #Sauger1_aus Relsaug1=off Menge1=0 Mengemuenz1 = 0 zeit1=0 gosub schreiben_daten1 gosub anzeigesauger Return #Sauger2_aus Relsaug2=off Menge2=0 Mengemuenz2 = 0 zeit2=0 gosub schreiben_daten1 gosub anzeigesauger Return #Manuellein1 if taste_gn < 25 then goto Manuellein1 if relsaug1 = off and relsaug2 = off then hour = 0 if relsaug1 = off and relsaug2 = off then minute = 0 if relsaug1 = off and relsaug2 = off then second = 0 gosub Anzeige1 abschalt1 = on abschalt2 = on relsaug1 = on M1 = 1 zeit1 = hour*3600+minute*60 + second + wert1 return #Manuellaus1 if taste_gn < 25 then goto Manuellaus1 #Manuellausauto1 relsaug1 = off M1 = 0 zeit1=0 if relsaug2=off then gosub Anzeigesauger abschalt1 = off abschalt2 = off warte11 = 0 warte12 = 0 warte13 = 0 warte14 = 0 return #Manuellein2 if taste_rt < 25 then goto Manuellein2 if relsaug1 = off and relsaug2 = off then hour = 0 if relsaug1 = off and relsaug2 = off then minute = 0 if relsaug1 = off and relsaug2 = off then second = 0 gosub Anzeige2 abschalt1 = on abschalt2 = on relsaug2 = on M2 = 1 zeit2 = hour*3600+minute*60 + second + wert1 return #Manuellaus2 if taste_rt < 25 then goto Manuellaus2 #Manuellausauto2 relsaug2 = off M2 = 0 zeit2=0 if relsaug1=off then gosub Anzeigesauger abschalt1 = off abschalt2 = off warte21 = 0 warte22 = 0 warte23 = 0 warte24 = 0 return #standard close# wert1 = 180 zaehler11 = 0 zaehler12 = 0 zaehler13 = 0 zaehler14 = 0 zaehler21 = 0 zaehler22 = 0 zaehler23 = 0 zaehler24 = 0 #schreiben_daten 'abschalt1 = on 'abschalt2 = on Open# for write print# wert1 print# zaehler11 print# zaehler12 print# zaehler13 print# zaehler14 print# zaehler21 print# zaehler22 print# zaehler23 print# zaehler24 close# goto neustart #Anzeige1 print"#CLR#"; print"#L101#"; 'ZEILE 1, POSITION 1 print "1="; 'TEXT AUSGEBEN print"#L103#"; 'ZEILE 1, POSITION 1 print zaehler11; 'TEXT AUSGEBEN print"#L109#"; 'ZEILE 1, POSITION 1 print "2="; 'TEXT AUSGEBEN print"#L111#"; 'ZEILE 1, POSITON 7 print zaehler12; 'TEXT AUSGEBEN print"#L201#"; 'ZEILE 1, POSITION 1 print "3="; 'TEXT AUSGEBEN print"#L203#"; 'ZEILE 1, POSITION 1 print zaehler13; 'TEXT AUSGEBEN print"#L209#"; 'ZEILE 1, POSITION 1 print "4="; 'TEXT AUSGEBEN print"#L211#"; 'ZEILE 1, POSITON 7 print zaehler14; 'TEXT AUSGEBEN return #Anzeige2 print"#CLR#"; print"#L101#"; 'ZEILE 1, POSITION 1 print "1="; 'TEXT AUSGEBEN print"#L103#"; 'ZEILE 1, POSITION 1 print zaehler21; 'TEXT AUSGEBEN print"#L109#"; 'ZEILE 1, POSITION 1 print "2="; 'TEXT AUSGEBEN print"#L111#"; 'ZEILE 1, POSITON 7 print zaehler22; 'TEXT AUSGEBEN print"#L201#"; 'ZEILE 1, POSITION 1 print "3="; 'TEXT AUSGEBEN print"#L203#"; 'ZEILE 1, POSITION 1 print zaehler23; 'TEXT AUSGEBEN print"#L209#"; 'ZEILE 1, POSITION 1 print "4="; 'TEXT AUSGEBEN print"#L211#"; 'ZEILE 1, POSITON 7 print zaehler24; 'TEXT AUSGEBEN return #Anzeigesauger abschalt1 = on abschalt2 = on print"#CLR#"; print"#L101#"; 'ZEILE 1, POSITION 1 print "M1:"; 'TEXT AUSGEBEN print"#L104#"; 'ZEILE 1, POSITON 7 if relsaug1= on then print "an "; else print "aus"; print"#L113#"; 'ZEILE 1, POSITION 1 print Zeit1; print"#L201#"; 'ZEILE 1, POSITION 1 print "M2:"; 'TEXT AUSGEBEN print"#L204#"; 'ZEILE 1, POSITON 7 if relsaug2= on then print "an "; else print "aus"; print"#L213#"; 'ZEILE 1, POSITION 1 print Zeit2; abschalt1 = off abschalt2 = off return > > > > > Hallo Topmail und DIE HARD, > > > > Danke erstmal für eure Antworten, > > > > ich beschreibe die Ports bit weise nur das Display wird über BytePort 2 mit den Internen Systemroutinen angesprochen, ist es möglich das darin auch der Stacküberlauf stattfindet ? > > > > Danke > > > > Andi B. > > > > > > > Hallo! > > > > kann es sein das der Stackfehler dieses Problem auslöst. > > > Im Prinzip ja, aber ohne dein Programm zu kennen, kann hier niemand den Fehler finden. > > > Bevor du das Programm postest, solltest du aber alles weglassen, was nichts mit deinem > > > Problem zu tun hat, aber den Fehler immer noch enthält (niemand hier hat Lust sich > > > durch hunderte Zeilen Code zu arbeiten) > > > > > > Cu Rene, > > > alias Topmail > > > > > > Hallo, > Nein, das ist ein anderer Fehler. > Du solltest das Programm posten. > Dann kann ich mal sehen, was ich tun kann. > ciao..... > > > > |
| Antwort schreiben |