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: Basic++ Funktionen die 2. Kategorie: Programmierung Basic (von Henrik, Homepage - 22.12.2004 10:37)
 Als Antwort auf Basic++ Funktionen die 2. von ReinhardB - 22.12.2004 9:12
Hallo,

> Was hat es z. B. mit dem Rückgabewert auf sich ," return irgendwas " der mir wie ich herausgefunden habe die erste Wordvariable besetzt ? Ich kann doch in den Funktionen jede definierte Variable überschreiben und dann damit weiterarbeiten. Oder ist das nur eine Option auf die weiterentwicklung von Basic++ ? Oder denke ich noch immer zu "unstrukturiert" ?

Das RETURN [var] hat den Vorteil, daß Du die Funktion wie einen Wert bzw. Variable einsetzen
kannst. Ich habe unten mal ein Beispiel angehängt, in dem das bei der
Funktion getvariable(variablenname)
demonstriert wird. Du kannst hier nach Herzenslust z.B. schreiben:

if x>getvariable(schaltschwelle) then....
print  getvarible(schaltschwelle)
y=getvariable(Schaltschwelle)
usw.

ohne erst Umwege gehen zu müssen.

Das Beispiel zeigt nebenbei, wie ich in meinen Programmen Variablenknappheit umgehe.

> Währe schön, wenn wir über die Weihnachtstage ein bißchen über - Programmierkunst - diskutieren könnten !?

Da gibt es nix zu diskutieren. Es gibt zwar viele Lösungsmöglichkeiten für ein Problem,
letzlich ist die Herangehensweise aber Geschmackssache und über den läßt sich ja bekanntlich
nicht streiten.


Grüße
Henrik


'--------- Programmroutinen für Pseudovariablen im EEPROM ----------
'Plattform C-Control1 V2.x mit zusätzlichem EEPROM auf Adresse 162--
'Programmsprache: Basic++ Version 1.0
'Henrik Reimers Dez. 2004               http://www.henrik-reimers.de
'
'In der vorliegenden Version werden nur Bytevariablen unterstützt.--
'Ein Ausbau auf Wordvariablen ist problemlos möglich.
'-------------------------------------------------------------------

define temp    as word[2]
define address as word[3]
define addrhi  as byte[5]
define addrlo  as byte[6]
define data    as byte
define dev     as byte


const schaltschwelle1  =   600h  'Beispiele für die Zuordnung von
const schaltschwelle2  =   601h  'Konstanten als Variablenpointer
const schaltschwelle3  =   602h
const schaltschwelle4  =   603h


declare function setvariable(a ref address, b ref data)
declare function getvariable(a ref address)
declare function writebyte(d ref dev)
declare function readbyte(d ref dev)

lcd.init
'-------------- Beispiel für den Aufruf ---------------------------
setvariable(schaltschwelle1, 100)

 lcd.clear
 lcd.print "Wert ist: " & getvariable(schaltschwelle1)

end
'-------------------------------------------------------------------
function setvariable(a ref address, b ref data)
writebyte(162)
end function
'-------------------------------------------------------------------
function getvariable(a ref address)

readbyte(162)
return data

end function
'-------------------------------------------------------------------
'- BYTE (DATA) AUF EEPROM ADRESSE (ADDRESS) SPEICHERN -
'- oder LESEN. Nutzt die Variablen dev, data und address
'- address ist in addrhi und addrlo byteweise geteilt
'- und muss entsprechend überlappend deklariert werden!
'- die universelle Variable temp könnte auch durch eine
'- Bytevariable ersetzt werden. Das Word frisst aber in
'- meinen Anwendungen keinen Platz, da es sowieso für
'- verschiedene Zwecke benutzt wird.
'-------------------------------------------------------------------

function writebyte(d ref dev)

lcd.off

IIC.init
IIC.stop
IIC.start
IIC.send dev
IIC.send addrhi
IIC.send addrlo
IIC.send data
IIC.stop
IIC.off

for temp = 0 to 50       'Warteschleife zur Sicherstellung, daß
next temp                'das Byte zuverlässig geschrieben wird

lcd.init switchonly
end function
'-----------------------------------------------------------------
'---  BYTE (DATA) VON EEPROM ADRESSE (ADDRESS) LESEN           ---
'-----------------------------------------------------------------
function readbyte(d ref dev)

lcd.off

IIC.init
IIC.stop
IIC.start
IIC.send dev
IIC.send addrhi
IIC.send addrlo
IIC.stop
IIC.start
IIC.send (dev +1)
IIC.get data
IIC.stop
IIC.off

lcd.init switchonly

end function
'-------------------------------------------------------------------


Meine Homepage: http://www.henrik-reimers.de/control/

 Antwort schreiben

Bisherige Antworten: