heute wolte ich eine globale Variable definieren,
da schrieb ich ganz oben in meinem text bei der main.c
unsigned char PlayPauseA;
-
Lokale / Block-Variablen: wenn eine Variable in einer Funktion deklariert wird (bei SDCC muss das am Anfang der Funktion passieren), haben wir eine lokale Variable, die nur innerhalb der Funktion gültig ist => block bzw. local scope (lokaler Gültigkeitsbereich). - Lokale Variablen: Wenn sie außerhalb der Funktion (z.B. ganz oben in der Datei) deklariert wird, wie in deinem Beispiel, handelt es sich um eine lokale Variable mit einem file scope (Datei Gültigkeitsbereich), die in der gesamten “Datei” zu verwenden ist. Eine Erweiterung wäre das Schlüsselwort “static” und “volatile”, das an dieser Stelle bitte selbständig nachzuschlagen ist. - Globale Variablen: Wenn eine lokale Variable nun zusätzlich im Header (oder darüber) mit dem Schlüsselwort “extern” versehen wird, dann ist es eine globale Variable, die von überall, auch außerhalb dieser Quelldatei ansprechbar ist! also:
// declare myGlobalVar as global
extern unsigned char myGlobalVar
// declare myGlobalVar
unsigned char myGlobalVar
Allerdings sind solche Basics tatsächlich besser nachzulesen, und zwar hier:
http://www.galileo-press.de/openbook/c_von_a_bis_z/
=> Kapitel 11 (Funktionen), Abschnitt 11 (Geltungsbereich von Variablen)
ich würde mich sehr freuen, wenn es noch mehr Beispiele geben würde, wie man die spez. hardware- funktionen von Mios
und der vorhanden Hardware- Umgebung programmieren kann, einfache Sachen, wie werden einzelne Buttons abgefragt,
ein struturiertes Beispiel für die meist verwendeten Hardware- Lösungen programmiert in C.
Es gibt eigentlich nicht mehr, als in der Funktionsübersicht steht:
http://www.ucapps.de/cmios_fun.html
Wir hatten hier schön öfters Diskussionen darüber, dass Anfänger das nicht verstehen, aber meiner Meinung nach, liest das nur keiner richtig!
Die Funktionen sind geordet (DIN => Digial Input, AIN => Analog Input, AOUT => Analog Output usw…), also extrem übersichtlich und gut benannt! Es stehen Erklärungen dabei, was jede Funktion macht und ein Beispiel.
D.h. also, wenn du wissen möchtest, wie ein Button Pin abzufragen ist, dann schaust du einfach unter DIN nach, was es da gibt => da steht dann:
Class: MIOS_DIN
-
MIOS_DIN_PinAutoRepeatDisable
-
MIOS_DIN_PinAutoRepeatEnable
-
MIOS_DIN_PinAutoRepeatGet
-
MIOS_DIN_PinGet
-
MIOS_DIN_SRGet
naja, ziemlich offensichtlich, dass es sich wohl um MIOS_DIN_PinGet() handelt, dort ist zu lesen:
C_DECLARATION :
unsigned char MIOS_DIN_PinGet(unsigned char pin)
DESCRIPTION:
returns value from a DIN Pin
sollte eigentlich ziemlich klar sein.
Was mir dazu einfällt ist höchstens, dass man mal eine Abkürzungs (Acronym-) Liste im Wiki erstellen könnte:
http://www.midibox.org/dokuwiki/doku.php?id=mbhp_acronyms
habe schon mal begonnen,
wäre nett, wenn alle mithelfen!
Es würde Anfängern sicherlich helfen, wenn alle User Beispiele posten würden
TK hat hervorragende Snippets veröffentlicht:
http://www.ucapps.de/mios_c.html -> ganz unten “C-Programming Examples”
Zusätzlich zu diesen Beispielen, gibt es ziemlich viele Projekte von TK unter den Downloads; v.a. die MF-Applikation (MotorFader) ist komplett in C geschrieben und sehr aufschlussreich:
http://www.ucapps.de/mios_download.html
Ich habe meinen Sensorizer unter GPL veröffentlicht, könnt ihr auch reinschauen; das meiste ist recht gut kommentiert:
http://www.midibox.org/dokuwiki/doku.php?id=acsensorizer
Natürlich gibt’s im Forum auch jede Menge Beispiele!
Weiterhin gibt es eine mir sehr wichtige Seite im Wiki, die als Startpunkt für alle möglichen Tipps und Tricks rund ums Programmieren für MIOS steht, wäre super, wenn die noch weiter wächst, ich poste auch immer ganz fleißig:
http://www.midibox.org/dokuwiki/doku.php?id=application_development

Grüße,
Michael