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: port veränderung Kategorie: Programmierung Basic (von GerdL - 4.12.2010 11:38)
 Als Antwort auf Re: port veränderung von michi314 - 3.12.2010 9:57
GerdL nutzt:  CC1-Unit V1.1, CC1-M-Unit V1.1, Open-Micro, Open-Mini
Hallo Michi314

Also Du nutzt bereits 23 von den 24 möglichen Bytes, wenn Du noch 2 Bytes dazu gibst bist Du über 24.
Wenn Du den Words und Bytes einen definierten Platz zuweist kannst Du noch weitere Bytes nutzen.
define tempölkessel      word[1] belegt Byte 1+2
define tempölrück        word[2] belegt Byte 3+4
.........................
define tempaussen        word[9] belegt Byte 17+18
.........................
define y                 byte[22]

Ausserdem immer zuerst alle Words dann Bytes daher

define daten byte[23]   nach den Words


Siehe:   http://manfred.wilzeck.de/

1.11) Anzahl der Variablen (Erweiterung)

Man kann Variable sparen wie im Kapitel „Tipps und Tricks“ beschrieben, denn die Anzahl der Variablen ist zunächst auf  24 Byte  begrenzt.
Mehr Variable erhält man durch Austausch des  CCBas.dll (siehe 1.13).
Damit wird auch der Fehler im Betriebssystem bei der Programmlänge korrigiert.
Byte 25 bis 28 (= word 13 und 14) und Byte 59 und 60 (=word 30) kann ich verwenden, weil ich  Interrupt und Befehl SQR nicht benutze.   usw.................


Gruß
gerdl

> > Kannst mal das prog dazu posten?
> >  
> >
> > > hallo
> > > ich habe seit jahren eine heizungssteuerung
> > > auf Port[13] habe ich den ölbrenner angeschlossen
> > > und das hat auch jahre lang funktioniert
> > > heute habe ich eine kleine änderung vorgenommen
> > > und zwei byte variablen eingefügt
> > > anschliesend war der brenner nicht mehr auf
> > > Port[13] sondern auf DA[1]
> > > wie ist das möglich ????
> > >
> > > mfg michi
>
>
> das ist das programm
>
>
>
>
>
>
> 'Heizungssteuerung für Reinhold
> 'Öl und Holzofen erwärmen einen 1000
> 'Liter Speicher von wo aus die Heizung gespeist wird
>
> '---------------------------------------------------------------
>
>
>
>
> define Datenbus    byteport [1]   'Datenbus
> define RS    port[9]
> define RW    port[10]
> define E     port[11]
>
> define daten byte
> '--------------------------------------------
>
>
>
> define uhr                   port[12]
> define spannungölkessel      AD[1]    'eingänge
> define spannungölrück        AD[2]
> define spannungaussen        AD[3]
> define spannungholzvorlauf   AD[4]
> define spannungholzrücklauf  AD[6]
> define spannungheizkreis     AD[5]
> define schalterspannung      AD[7]  'programmwahlschalter
> define heizkreisspannung     AD[8]  'regler für heizungsvorlauf
>
> '--------------------------------------------
>
> define brenner        Port[13]       'ausgänge
> define ölofenpumpe    Port[14]
> define heizkreispumpe Port[16]
> define holzofenpumpe  Port[15]
> define mischerauf     DA[2]
> define mischerzu      DA[1]
>
>
> '------------------------------------
> define tempölkessel      word
> define tempölrück        word
> define tempaussen        word
> define tempholzvorlauf   word
> define tempholzrücklauf  word
> define tempheizkreis     word
> define schalter          word
> define heizkreissoll     word
> define zahl              word
> define voel              byte
> define i                 byte
> define x                 byte
> define y                 byte
>
>
>
>
> x=0:y=0
> tempölkessel   = 60
> tempölrück    = 60
> tempholzvorlauf  = 60
> tempholzrücklauf  = 40
> tempaussen      = 0
> tempheizkreis    = 40
> '-------------------------------------
> gosub init   'iniziiren der LCD
> '------------------------------------
> #anfang
> print"Anfang ";
>
>
> 'abfrage des programmwahlschalters
> '---------------------------------------
> if schalter > 0 and schalter < 124 then goto   aus
> if schalter > 123 and schalter < 145 then goto   hand
> if schalter > 144 and schalter < 169 then goto   winter
> if schalter > 168 and schalter < 256 then goto   winter
>
>
> '---------------------------------------------------------
> #winter
> print "winter ",
>
> if voel = 0 then gosub schreibeholz
> if voel = 1 then gosub schreibeöl
> gosub schreibe2bis4
> pause 50
> gosub abfrage
> gosub speicherladen
> gosub heizkreis
> if tempölrück > (heizkreissoll+5) then voel = 0  'umschaltung holz-öl wen im puffersp.
>                                                '5° mehr ist als heizkreissoll dan wird kein öl eingesch.
> if tempölrück < (heizkreissoll-5) then voel = 1  'umschaltung holz-öl wen im puffersp.
> print "voel=";voel
> print "  ";                                              '5° weniger sind als heizkrs.dan wird auf öl umgeschaltet
> gosub warmwasserladen
> if uhr = 1 and voel = 1 then gosub oelpumpe'es ist tag und der speicher ist kalt
> if voel = 1 then gosub brenner             'wen der speicher kalt ist wird der brenner gestartet
> if voel = 0 then brenner = off
>
>
>
> goto anfang
> '-------------------------------------------------------------
> #Heizkreis
> print "Heizkreis ";
> if uhr = 0 then goto nacht    'lampe bei uhr leuchtet nicht wenn nachtprogramm
> if uhr = 1 then i = 0
> heizkreispumpe = on
> 'mischersteuerung
> if tempheizkreis > (heizkreissoll+2) then gosub kaelter
> if tempheizkreis < (heizkreissoll-2) then gosub wärmer
> return
> '---------------------------------------------------------
>
> #kaelter
> if x > 100 then return
> y = 0
> mischerauf = off
> pause 25
> mischerzu = on
> print " mischer macht-ZU ";
> pause 100
> x = x+1
> mischerzu = off
>
> return
> '-----------------------------------------------------
> #wärmer
> if  y > 100 then return
> x = 0:i=0
> mischerzu = off
> pause 25
> mischerauf = on
> print " mischer macht-AUF ";
> pause 100
> y = y+1
> mischerauf = off
>
> return
>  '----------------------------------------------------
> #nacht
> print" nacht ";
> heizkreispumpe = off
> mischerauf = off
> pause 25
>
> i=i+1
> print" V-i= ";i
> if i>62 then i=62 'sonst fängt er nach speicherüberlauf wieder an zu zumachen
> if i > 60 then return
> mischerzu = on
> print " mischer macht-ZU Nacht... "
> pause 200
> mischerzu = off
> return
> '-------------------------------------------------------
> #warmwasserladen  'ladet vom pufferspeicher zum warmwassersp.
> print "Warmwasserladen ";
> if voel = 1 then goto warmw2
> if tempölkessel > 65 then ölofenpumpe = off
> if tempölrück < tempölkessel +6   then ölofenpumpe = off
> if tempölkessel < 36 then ölofenpumpe = on
>
> return
>
> #warmw2
> print "warmwaser 2 ";
> if uhr = on then return
> ölofenpumpe = off
> if tempölkessel > 55 then brenner = off
> if tempölkessel < 45 then brenner = on
> return
> '------------------------------------------------------------
> #oelpumpe
> print "oelpumpe ";
> if tempölkessel < (tempölrück +1) then ölofenpumpe = off
> if tempölkessel > (tempölrück +4) then ölofenpumpe = on
>
> return
> '---------------------------------------------------------
> #brenner
> print "brenner ";
> if tempölkessel < 50 then brenner = on
> if tempölkessel > 59 then brenner = off
> return
> '-----------------------------------------------------------
> '**********************************************************
> '*********************************************************
> #speicherladen 'pufferspeicher ladomat
> print"speicherladen ";
> if tempholzvorlauf  < 50 then goto holzoff
> if tempholzrücklauf > (tempholzvorlauf-6) then goto holzoff
> if tempholzrücklauf < (tempholzvorlauf -6) then holzofenpumpe = on
> return
> #holzoff
>
> holzofenpumpe = off
> return
>
>  '----------------------------------------------------
>
>
>
> '-----------------------------------------
>  #aus       'alles ausschalten
>  print "aus ";
> gosub abfrage
>
> gosub schreibeaus
> gosub schreibe2bis4
>  brenner        = off
>  Ã¶lofenpumpe    = off
>  heizkreispumpe = off
>  holzofenpumpe  = off
>  mischerauf     = off
>  mischerzu      = off
>  pause 50
>
> goto anfang
> '-----------------------------------------
> #hand
>
> print "hand ";
> gosub abfrage
> gosub schreibehand
> gosub schreibe2bis4
> if tempölkessel < 80 then brenner = on
> if tempölkessel > 85 then brenner = off
> pause 25
> ölofenpumpe = on
> pause 25
> heizkreispumpe = on
> pause 25
> holzofenpumpe = on
> gosub wärmer 'mischer öffnet
> pause 25
> goto anfang
>
> '----------------------------------------------------------------------
> '-----------------------------------------------------------------------
> '----------------------------------------------------------------------
> #abfrage
> 'abfrage der AD eingänge
> '-------------------------------------
> print "abfrage ";
> if (spannungölkessel     *2 -273) > tempölkessel     then tempölkessel     =     tempölkessel + 1
> if (spannungölkessel     *2 -273) < tempölkessel     then tempölkessel     =     tempölkessel - 1
> if (spannungölrück       *2 -273) > tempölrück       then tempölrück       =      tempölrück  + 1
> if (spannungölrück       *2 -273) < tempölrück       then tempölrück       =      tempölrück  - 1
> if (spannungaussen       *2 -273) > tempaussen       then tempaussen       =      tempaussen  + 1
> if (spannungaussen       *2 -273) < tempaussen       then tempaussen       =      tempaussen  - 1
> if (spannungholzvorlauf  *2 -273) > tempholzvorlauf  then tempholzvorlauf  =  tempholzvorlauf + 1
> if (spannungholzvorlauf  *2 -273) < tempholzvorlauf  then tempholzvorlauf  =  tempholzvorlauf - 1
> if (spannungholzrücklauf *2 -273) > tempholzrücklauf then tempholzrücklauf = tempholzrücklauf + 1
> if (spannungholzrücklauf *2 -273) < tempholzrücklauf then tempholzrücklauf = tempholzrücklauf - 1
> if (spannungheizkreis    *2 -275) > (tempheizkreis+1)then tempheizkreis    =    tempheizkreis + 2
> if (spannungheizkreis    *2 -275) < (tempheizkreis-1)then tempheizkreis    =    tempheizkreis - 2
> if (spannungheizkreis    *2 -275) > tempheizkreis    then tempheizkreis    =    tempheizkreis + 1
> if (spannungheizkreis    *2 -275) < tempheizkreis    then tempheizkreis    =    tempheizkreis - 1
>
> schalter         = schalterspannung
> heizkreissoll    = heizkreisspannung
>
> if tempaussen > 0 then goto aussen2
> heizkreissoll = (heizkreissoll/6)-(tempaussen/2)+30
> goto aussen3
> #aussen2
> heizkreissoll = (heizkreissoll/6)+30
> #aussen3
> if heizkreissoll>65 then heizkreissoll= 65
>
>
>
>
> print " "
>
> print "holzv holzr ölk ölr HK-soll-ist aus schalt. holzofp. ölop.  heizkrp. brenner  "
>
> print " ";tempholzvorlauf;
> print "    ";tempholzrücklauf;
> print "   ";tempölkessel;
> print "   ";tempölrück;
> print "     ";heizkreissoll;
> print "  ";tempheizkreis;
> print "  ";tempaussen;
> print "   ";schalter;
>
> print "       ";holzofenpumpe;
> print "      ";ölofenpumpe;
> print "       ";heizkreispumpe;
> print "      ";brenner
> return
> '--------------------------------------------------------------------
> '--------------------------------------------------------------------
> '--------------------------------------------------------------------
> '----------------------------------------------------------------
> '-----------------------------------------------------------------
>
> '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> 'lcd  ausgabe
>
> '------------------------------------------------------------------
> #schreibeaus  'schreibt  anlage ist aus
> 'erste zeile
>
> daten=&H00        'beginn erste Zeile --
> gosub cursor
> daten=65       'A
> gosub zeichen
> daten=110      'n
> gosub zeichen
> daten=108      'l
> gosub zeichen
> daten=97      'a
> gosub zeichen
> daten=103      'g
> gosub zeichen
> daten=101      'e
> gosub zeichen
> daten=32       '
> gosub zeichen
> daten=105      'i
> gosub zeichen
> daten=115      's
> gosub zeichen
> daten=116      't
> gosub zeichen
> daten=32      '
> gosub zeichen
> daten=65      'A
> gosub zeichen
> daten=85      'U
> gosub zeichen
> daten=83      'S
> gosub zeichen
> daten=32      '
> gosub zeichen
> daten=32      '
> gosub zeichen
>
>
>
> return
> '--------------------------------------
> '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>
> #schreibehand     'schreibt Handbetrieb
>
>
> 'erste zeile
>
> daten=&H00        'beginn erste Zeile --
>
>
> gosub cursor
> daten=72       'H
> gosub zeichen
> daten=97      'a
> gosub zeichen
> daten=110      'n
> gosub zeichen
> daten=100      'd
> gosub zeichen
> daten=98      'b
> gosub zeichen
> daten=101      'e
> gosub zeichen
> daten=116      't
> gosub zeichen
> daten=114      'r
> gosub zeichen
> daten=105      'i
> gosub zeichen
> daten=101      'e
> gosub zeichen
> daten=98      'b
> gosub zeichen
> daten=32      '
> gosub zeichen
> daten=32      '
> gosub zeichen
> daten=32      '
> gosub zeichen
> daten=32      '
> gosub zeichen
> daten=32      '
> gosub zeichen
>
>
> return
> '--------------------------------------
>
> '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> '--------------------------------------
>
>
>
>
>
> #schreibeholz    'schreibt   Holz   -ein
> 'erste zeile
> if uhr = 0 then goto schreibeholzaus
> daten=&H00        'beginn erste Zeile --
>
>
> gosub cursor
> daten=72       'H
> gosub zeichen
> daten=111      'o
> gosub zeichen
> daten=108      'l
> gosub zeichen
> daten=122      'z
> gosub zeichen
> daten=32       '
> gosub zeichen
> daten=72       'H
> gosub zeichen
> daten=101       'e
> gosub zeichen
> daten=105       'i
> gosub zeichen
> daten=122      'z
> gosub zeichen
> daten=117       'u
> gosub zeichen
> daten=110       'n
> gosub zeichen
> daten=103       'g
> gosub zeichen
> daten=32      '
> gosub zeichen
> daten=69       'E
> gosub zeichen
> daten=105       'i
> gosub zeichen
> daten=110       'n
> gosub zeichen
>
>
>
> return
> '--------------------------------------
> #schreibeholzaus
> daten=&H00        'beginn erste Zeile --
>
>
> gosub cursor
> daten=72       'H
> gosub zeichen
> daten=111      'o
> gosub zeichen
> daten=108      'l
> gosub zeichen
> daten=122      'z
> gosub zeichen
> daten=32       '
> gosub zeichen
> daten=72        'H
> gosub zeichen
> daten=101       'e
> gosub zeichen
> daten=105       'i
> gosub zeichen
> daten=122       'z
> gosub zeichen
> daten= 117      'u
> gosub zeichen
> daten=110       'n
> gosub zeichen
> daten=103       'g
> gosub zeichen
> daten=32       '
> gosub zeichen
> daten=65       'A
> gosub zeichen
> daten=117      'u
> gosub zeichen
> daten=115      's
> gosub zeichen
>
>
>
> return
> '--------------------------------------
>
>
>
>
>
>
>
> '------------------------------------------------------------------
> #schreibeöl  'schreibt   Öl
> 'erste zeile
> if uhr = 0 then goto schreibeölnacht
> daten=&H00        'beginn erste Zeile --
>
>
> gosub cursor
> daten=79       'O
> gosub zeichen
> daten=101      'e
> gosub zeichen
> daten=108      'l
> gosub zeichen
> daten=32       '
> gosub zeichen
> daten=  72     'H
> gosub zeichen
> daten=101       'e
> gosub zeichen
> daten=105       'i
> gosub zeichen
> daten=122       'z
> gosub zeichen
> daten=117       'u
> gosub zeichen
> daten=110      'n
> gosub zeichen
> daten=103       'g
> gosub zeichen
> daten=32       '
> gosub zeichen
> daten=69      'E
> gosub zeichen
> daten=105       'i
> gosub zeichen
> daten=110       'n
> gosub zeichen
> daten=32       '
> gosub zeichen
>
>
>
> return
> '--------------------------------------
>
> #schreibeölnacht  'schreibt   Öl - Nacht
> 'erste zeile
>
> daten=&H00        'beginn erste Zeile --
>
>
> gosub cursor
> daten=79       'O
> gosub zeichen
> daten=101      'e
> gosub zeichen
> daten=108      'l
> gosub zeichen
> daten=32       '
> gosub zeichen
> daten=72       'H
> gosub zeichen
> daten=101      'e
> gosub zeichen
> daten=105      'i
> gosub zeichen
> daten=122      'z
> gosub zeichen
> daten=117      'u
> gosub zeichen
> daten=110      'n
> gosub zeichen
> daten=103      'g
> gosub zeichen
> daten=32       '
> gosub zeichen
> daten=65      'A
> gosub zeichen
> daten=117     'u
> gosub zeichen
> daten=115      's
> gosub zeichen
> daten=32       '
> gosub zeichen
>
>
>
> return
> '--------------------------------------
>
>
>
> '------------------------------------------------------------------
> '--------------------------------------
>
>
>
>
>
> #schreibe2bis4
> 'Dritte zeile
>
> '--------------------schreibt die warmwassertemperatur
>
>
>
>
> daten=87        'W
> gosub zeichen
> daten=97        'a
> gosub zeichen
> daten=114       'r
> gosub zeichen
> daten=109       'm
> gosub zeichen
> daten=119       'w
> gosub zeichen
> daten=97        'a
> gosub zeichen
> daten=115       's
> gosub zeichen
> daten=115       's
> gosub zeichen
> daten=101       'e
> gosub zeichen
> daten=114       'r
> gosub zeichen
> daten=32       '
> gosub zeichen
> daten=32       '           12
> gosub zeichen
> daten=32       '           13
> gosub zeichen
>
> zahl=tempölkessel
> if zahl < 0 then daten = 45 else daten = 43 '+ oder - als vorzeichen
> gosub zeichen
>
> if zahl < 0 then zahl= not zahl
> Daten = (Zahl / 10) +48
> gosub Zeichen
> Daten = (Zahl mod 10) + 48
> gosub Zeichen
>
>
>
> '-----------------------
> '---------------------------------------
>
>
> 'Zweite zeile    schreibt die heizungstemperatur
> '----------------------------------
>
>
> daten=&H40        'beginn zweite Zeile
>
>
>
> gosub cursor
> daten=72       'H                  1
> gosub zeichen
> daten=101      'e
> gosub zeichen
> daten=105      'i
> gosub zeichen
> daten=122      'z
> gosub zeichen
> daten=117      'u
> gosub zeichen
> daten=110      'n
> gosub zeichen
> daten=103      'g
> gosub zeichen
> daten=32       '                  8
> gosub zeichen
>
> zahl=heizkreissoll
> if zahl < 0 then daten = 45 else daten = 43 '+ oder - als vorzeichen
> gosub zeichen
> if zahl < 0 then zahl= not zahl
> Daten = (Zahl / 10) +48
> gosub Zeichen
> Daten = (Zahl mod 10) + 48
> gosub Zeichen
> daten=32      '                    12
> gosub zeichen
> daten=32      '                    13
> gosub zeichen
>
> zahl=tempheizkreis
> if zahl < 0 then daten = 45 else daten = 43 '+ oder - als vorzeichen
> gosub zeichen
> if zahl < 0 then zahl= not zahl
> Daten = (Zahl / 10) +48
> gosub Zeichen
> Daten = (Zahl mod 10) + 48
> gosub Zeichen
>
>
>
>
> '--------------------------------------
>
> 'Vierte  zeile
>
> '-----------------------------------
>
>
> '--------------------schreibt die aussentemperatur
>
> zahl=tempaussen
>
> daten=65       'A
> gosub zeichen
> daten=117      'u
> gosub zeichen
> daten=115      's
> gosub zeichen
> daten=115      's
> gosub zeichen
> daten=101      'e
> gosub zeichen
> daten=110      'n
> gosub zeichen
> daten=32       '
> gosub zeichen
> daten=32       '
> gosub zeichen
> daten=32       '
> gosub zeichen
> daten=32       '               10
> gosub zeichen
> daten=32       '
> gosub zeichen
> daten=32       '
> gosub zeichen
> daten=32       '               13
> gosub zeichen
>
>
> if zahl < 0 then daten = 45 else daten = 43 '+ oder - als vorzeichen
> gosub zeichen
>
> if zahl < 0 then zahl= not zahl
> Daten = (Zahl / 10) +48
> gosub Zeichen
> Daten = (Zahl mod 10) + 48
> gosub Zeichen
>
>
>
>
> return
>
> '---------------------------------------
>
>
>
>
> '-----------------------
> '---------------------------------------
> '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> goto anfang
>
> '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>
>
> '
> '###############################################################
> '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> #Init
> E=0
> Daten = &H38        'initialisierung der LCD mit 2 zeilen
> gosub Kommando
> Daten = &H0F        'cursor an cursor blinkt
> gosub Kommando
> Daten = &H01
> gosub Kommando
> Daten=0
> return
> '++++++++++++++++++++++
> #Kommando
> RW = 0
> RS = 0
> Datenbus = Daten
> pulse E
> Daten=0
> return
> '++++++++++++++++++++++
> #Zeichen
> RW = 0
> RS = 1
> Datenbus = Daten
> pulse E
> Daten=0
> return
> '++++++++++++++++++++++
> #Cursor
> RW = 0
> RS = 0
> Datenbus = Daten + &H80
> pulse E
> Daten=0
> return
> goto anfang
> end

 Antwort schreiben

Bisherige Antworten:

Re: port veränderung (von michi314 - 4.12.2010 12:22)