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 

 Re: Fehlerbehebung Stack überlauf an den Ports Kategorie: C-Control I V1.2/2.0 (von Andi B. - 16.05.2005 19:54)
 Als Antwort auf Re: Fehlerbehebung Stack überlauf an den Ports von DIE HARD - 16.05.2005 16:57
Andi B. nutzt:  CC1-Unit V1.1, CC1-M-Unit V1.2/2.0
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

Bisherige Antworten:

Re: Fehlerbehebung Stack überlauf an den Ports (von ManfredW - 17.05.2005 1:34)
    Re: Fehlerbehebung Stack überlauf an den Ports (von Andi B. - 17.05.2005 10:51)
        Re: Fehlerbehebung Stack überlauf an den Ports (von ManfredW - 17.05.2005 11:50)
            Re: Fehlerbehebung Stack überlauf an den Ports (von Andi B. - 17.05.2005 13:17)
                Re: Fehlerbehebung Stack überlauf an den Ports (von Andi B. - 18.05.2005 15:32)