C++ - GDS2

C++ - GDS2

Technisches Gymnasium Profil Umwelttechnik Computertechnik J1 Mikrocontroller 4 Formelsammlung C/C++ 4.1 Datentypen Datentyp stdint.h type Bits...

203KB Sizes 0 Downloads 38 Views

Recommend Documents

C++ Typecasting static_cast const_cast - Tenouk C & C++
Typecasting is used to convert the type of a variable, function, object, expression or return value to another type. - T

o~~r~:~~c~~~~~ ~~.a~r~~-~~ ~~ c~c
a 1~.~s~oncl~nt John ~rf~~li~rc+ Eras not ~pg~;ar~c~ iri t~1is rr~at~er. ~'~ll ~~p~~.ri~~~ pdrti~s ~ein~ ~at~is~~~i. ~a~

Grobel - C&C Bookings
John Heckle, Justin Miller, Legowelt, Linkwood, Lone, Mark E, Mike Huckaby, Moodymann, Murphy Jax, Oddisee, Onra, Pariah

ADDENDUM C ADDENDUM C
ADDENDUM C. (DOD CONTRACTORS). 21 Renco Corp. 2,357,606,472 0. 2,246,977,265 882,547. 22. MacAndrews & Forbes. Holdings

C!
The undersigned Is directed to Invite attentloh to this Department's Office Memorandum of even number dated '1" June, 20

C
Sep 30, 2012 - Gonzalez, Gill Nolan and Nic Alvarado, while the boat crew consisted of Graham. Maddocks, Alex Chequer, O

tennent's business
M/09/018 – C&C Group – Tennent's Business. 1 of 5. DETERMINATION OF MERGER NOTIFICATION M/09/018 –. C&C GROUP / TE

c rbeau c - Bezirk Mittelfranken
05.07.2017 - Der Ansbacher Netzwerklauf wird von der. Westmittelfränkischen ... das Bayerische Rote Kreuz, das Bayerisc

C S A S S C C S
Resolute Bay-Bathurst Island area. Relations génétiques entre le morse atlantique (Odobenus rosmarus rosmarus) du bass

Technisches Gymnasium Profil Umwelttechnik Computertechnik J1 Mikrocontroller

4

Formelsammlung C/C++

4.1

Datentypen

Datentyp

stdint.h type

Bits

Sign

Wertebereich

(unsigned) char

uint8_t

8

Unsigned

0 .. 255

signed char

int8_t

8

Signed

-128 .. 127

unsigned short

uint16_t

16

Unsigned

0 .. 65.535

short

int16_t

16

Signed

-32.768 .. 32.767

unsigned int

uint32_t

32

Unsigned

0 .. 4.294.967.295

(signed) int

int32_t

32

Signed

-2.147.483.648 .. 2.147.483.647

unsigned long long

uint64_t

64

Unsigned

0 .. 18.446.744.073.709.551.615

long long

int64_t

64

Signed

-9.223.372.036.854.775.808 .. 9.223.372.036.854.775.807

Datentyp

IEE754 Name

Bits

Wertebereich

float

Single Precision

32

-3,4E38 .. 3,4E38

double

Double Precision

64

-1,7E308 .. 1,7E308

32

Adresse einer Variablen

pointer

4.2

Operatoren

Da Gleichheitszeichen ist in C ein Zuweisungsoperator, d.h. einer Variablen einen Wert zuweisen, z.B. x = 10; Mathematische Operatoren Priotität Verhältnis- und logische Operatoren ++

Inkrement



Dekrement

-

Höchste

Vorzeichen

*

Multiplikation

/

Division

%

Modulo, Rest der Division

+

Plus

-

Minus x += 3; wie x = x + 3

-=

x -= 3; wie x = x - 3;

*=

x *=5; wie x = x * 5;

/=

x /= 7; wie x = x / 7;

Bitweise Operatoren

NOT

>

Größer

>=

Größer gleich

<

Kleiner

<=

Kleiner gleich

== !=

Gleich Ungleich

&&

AND

niedrigste +=

!

||

Beispiele

OR

Ergebnisse

&

UND

X = 10;

|

ODER

Y=++X;

Y=11

^

EXOR

Y=X++;

Y=10

~

Einerkomplement

Y=0x11;

<<

Nach links schieben

Y=Y<<1;

>>

Nach rechts schieben

C_Formelsammlung.odt Otto Bubbers

Y=0x22

(bitweise um 1 nach links schieben)

Seite 1

Technisches Gymnasium Profil Umwelttechnik Computertechnik J1 Mikrocontroller

4.3

Aufbau eines C-Programms

C unterscheidet zwischen Groß- und Kleinschreibung! 4.3.1 Kommentareingabe // Kommentar für eine Zeile /* Kommentar für einen Block von einer oder mehreren Zeilen */ 4.3.2 Befehlsblock { // Anfang eines zusammengehörigen Befehlsblocks (begin) } // Ende eines zusammengehörigen Befehlsblocks (end) 4.3.3 Compileranweisung über zusätzliche Quellcodes mit Funktionen und Deklarationen: #include // Hilfsfunktionen fuer XMC1100 4.3.4 Konstantendeklaration #define muster1 0x0F // LED-Bitmuster 1 untere 4 LEDs an 4.3.5 Deklaration von globalen Variablen (vor main!) uint16_t adc_wert; // Wert vom AD-Converter 16 Bit unsigned 4.3.6 Deklaration von Funktionen Siehe Funktionen 4.3.7 Hauptprogramm (Hauptfunktion) int main(void) // Hauptprogramm { } 4.3.8

Beispiel

// Projectname: 1_Blinklicht_Zeit_veraenderbar // Blinklicht mit druch Poti veraenderbarer Zeitverzoegerung #include

// Bibliothek fuer XMC1100

#define muster2 0xF0

// LED-Bitmuster 2 obere 4 LEDs

uint16_t adc_wert;

// Wert vom AD-Converter 16 Bit unsigned

#define muster1 0x0F

int main(void) {

// LED-Bitmuster 1 unter 4 LEDs

// Hauptprogramm

port_init(P0,OUTP);

// Port0 auf Ausgabe

adc_init();

// Analog-Digital-Converter initialisieren

while(1U) {

// Endlosschleife, immer bei Controllern

port_write(P0,muster1);

// Muster1 an Port0 ausgeben

adc_wert = adc_in(0);

// Wert vom ADC -> Zeitverzoegerung

port_write(P0,muster2);

// Muster2 an Port0 ausgeben

delay_ms (adc_wert); delay_ms (adc_wert);

// Zeitverzoegerung // Zeitverzoegerung

}//while

}//main

C_Formelsammlung.odt Otto Bubbers

Seite 2

Technisches Gymnasium Profil Umwelttechnik Computertechnik J1 Mikrocontroller

4.4

Schleifen

4.4.1 For-Schleife (zählergesteuerte Schleife) Erzwingt eine genau berechenbare Zahl der Wiederholungen for(;;) { //Anweisungen }

Führe ab der Anfangsbedingung die Zählanweisung aus solange Bedingung wahr Anweisungen

startwert: Anfangswert der Variablen Bedingung: Schleife wird solange durchlaufen wie die Bedingung wahr ist Schrittweite: Anweisung zum Erhöhen oder Erniedrigen der Variablen // Beispiel Ausgang 10x invertieren for (x=10; x!=0; x--) { ausgang =~ausgang; } // Beispiel Zeitverzögerung uint32_t x; for (x=100000; x!=0; x--); // Zeitverzoegerung 4.4.2 While-Schleife (kopfgesteuerte Schleife) Wird nur solange wiederholt, wie eine am Schleifenanfang stehende Bedingung erfüllt ist. while() { //Anweisungen }

Solange Ausdruck wahr Anweisungen

Wenn die am Schleifenanfang stehende Bedingung nicht gilt, dann wird die gesamte Schleife übersprungen Solange die am Schleifenanfang stehende Bedingung gilt, wird die Schleife wiederholt. Die Prüfbedingung steht vor den Anweisungen. Sie heißt deshalb “kopfgesteuerte Schleife”. // Beispiel: Solange der lowaktive Taster an P2.9 gedrückt ist, wird der Ausgang invertiert. while (bit_read (P2,9) == 0) { ausgang = ~ausgang; } 4.4.3 Do-While-Schleife (fußgesteuerte Schleife) Die Schleife wird prinzipiell erst mal durchlaufen. Am Ende des Durchganges steht eine Prüfbedingung, die entscheidet, ob die Schleife wiederholt wird. Anweisungen do { //Anweisungen } while()

Solange Ausdruck wahr

// Beispiel: Die Schleife wird maximal 100 mal und mindestens // 1 mal durchlaufen. Sie wird frühzeitig abgebrochen, wenn der Taster an P2.9 gedrückt (= 0) wird. X = 100; do { x--; } while ((x > 0) && (bit_read (P2,9) == 1)); C_Formelsammlung.odt Otto Bubbers

Seite 3

Technisches Gymnasium Profil Umwelttechnik Computertechnik J1 Mikrocontroller

4.5

Programmverzweigungen

4.6

Verzweigung mit if

if() { ; ; ... }

Bei der “if” - Anweisung werden die folgende Anweisung (oder ein ganzer Anwendungsblock) nur dann ausgeführt, wenn die hinter ”if” stehende Bedingung wahr ist. // Beispiel: Wenn “taster1” gedrückt ist, soll “ausgang1” eins und „ausgang2“ null werden. // Drückt man dagegen “taster2”, wird nur “ausgang2” zu eins. if (taster1 == 1) { // Block mit mehreren Anweisungen ausgang1 = 1; // wird ausgeführt, wenn die Bedingung ausgang2 = 0; // hinter if wahr ist } if (taster2 == 1) ausgang2 = 1;

// nur eine Anweisung, keine { } nötig

Mit “if - else “ kann nur zwischen zwei Alternativen wählen. if() { ; ; } else { ; ; }

// Beispiel: Wenn “taster1” gedrückt ist, soll “ausgang1” eins und „ausgang2“ null werden, // andernfalls soll “ausgang1” null und „ausgang2“ eins werden. if (taster1 == 1) { // Block mit mehreren Anweisungen ausgang1 = 1; // wird ausgeführt, wenn die Bedingung ausgang2 = 0; // hinter if wahr ist } else { // Block mit mehreren Anweisungen ausgang1 = 0; // wird ausgeführt, wenn die Bedingung ausgang2 = 1; // hinter if nicht wahr ist } 4.6.1 Mehrere if-Anweisungen if() { ; ... } else if(() { ; ... } else { ; ... }

C_Formelsammlung.odt Otto Bubbers

Seite 4

Technisches Gymnasium Profil Umwelttechnik Computertechnik J1 Mikrocontroller

4.7

Fallauswahl mit switch

switch() { case : ; ; ... break; case : ; ; ... break; ... default: //Anweisungen }

Mit der “switch”- Anweisung kann aus einer Reihe von Alternativen ausgewählt werden. Es ist zulässig, dass mehrere Möglichkeiten gültig sind und dieselbe Wirkung haben. Sie werden einfach nacheinander aufgelistet. Passt keine der Möglichkeiten, dann wird die “default” - Einstellung ausgeführt. Achtung! Auf keinen Fall break vergessen!!! // Beispiel: In der Variablen “ergebnis” ist ein Messergebnis oder eine Zahl gespeichert. // Abhängig vom genauen Wert sollen nun bestimmte Reaktionen erfolgen. switch (ergebnis) { case 0x00: case 0x10: case 0x20: ausgang1 = 1; break; case 0x30: ausgang1 = 0; break; case 0x40: ausgang1 = ~ ausgang1; break; default: ausgang2 = 1; break; } Hinweise:Für die „switch-Variable“ darf man nur einfache Datentypen verwenden. Hinter case müssen Konstanten stehen. Diese können mit #define am Anfang des Programms deklariert werden. #define rechts 0x10 // ohne Semikolon!! #define links 0x20 unsigned char richtung; .... switch (richtung) { case rechts: motor = rechtskurve; break; case links: motor = linkskurve; break; default: motor = vorwaerts; break; } C_Formelsammlung.odt Otto Bubbers

Seite 5

Technisches Gymnasium Profil Umwelttechnik Computertechnik J1 Mikrocontroller

4.8

Funktionen

( Parameter1, Parameter2,...);

// Beispiele: void pwm_init1 (void); void lcd_byte (uint8_t val); uint8_t adc_in (uint8_t kanal); 4.8.1

// ohne Rückgabewert, ohne Parameter // ohne Rückgabewert, mit einem Parameter // mit Rückgabewert, mit Parameter

Definition von Funktionen

funktionsname(Datentyp> Parameter2,...) { //Anweisungen return ; }

// Beispiel: int addieren( uint8_t z1, uint8_t z2) { uint16_t result; // lokale Variable result = z1 + z2; return (result); // Rückgabewert } Achtung: Wenn eine Funktion definiert wird, folgen direkt hinter dem Funktionsnamen nur zwei runde Klammern, dahinter aber nix mehr (also NIE ein Strichpunkt)!! 4.8.2 Funktionsaufruf (, Paramter2,...);

// Beispiel: int main(void) { ... value1 = adc_in (1); } 4.8.3

// Wert von Kanal1 des ADC holen

Funktion mit Übergabewert void zeitms (uint32_t sec) // 32-Bit-Übergabevariable sec { uint32_t t1,t2; // lokale Variable for (t1 = sec; t1 != 0; t1--) // äußere Schleife ms * 1Millisekunde { for (t2 = 0xFFFFFF; t2 != 0; t2--); // Wert für 1ms noch testen! // erzeugt Zeitverzögerung ca. 1s } } void main (void) { .... zeitms (2);

// Programm // Funktionsaufruf mit Werteübergabe // hier: 2ms Zeitverzögerung

}

C_Formelsammlung.odt Otto Bubbers

Seite 6