#define ports

Gast #2973749
Hallo zusammen,

Ich brauche einen kleinen Lehrgang.

#define LCD_DATA_PIN   PINC
#define LCD_DATA_PORT  PORTC
#define LCD_DATA_DDR   DDRC

#define CD   0x07
#define RW   0x06
#define EN   0x02
#define CS1  0x05
#define CS2  0x04
#define RES  0x03

CD, RW, EN,... hat einen Pin. Quasi 0x01 = 0b00000001 = PC0
Was stelle ich mir da jetzt unter   0x07 = 0b00000111 = PC???
vor.?

Kann mir das einer erklären.? :)


Danke
MfG
#2973773
jossen schrieb:
> pin defines von einer ks0108 ansteuerung

Du musst dir ansehen, wie diese Makros verwendet werden.
Das bestimmt, 'was du dir darunter vorstellen musst'.

#defines sind wie Textersetzungen in deinem Editor. Nur automatisiert. 
Wenn im Suchen&Ersetzen Dialog der Text 'der' gegen den Text 'das' 
ausgetauscht wird, dann hängt es vom Text ab, auf den du die Ersetzung 
loslässt, was da der tiefere Sinn dahinter ist.
Gast #2973802
Liest sich manchmal auch jemand die gestellte Frage richtig durch???

#define CD   0x07
#define RW   0x06
#define EN   0x02
#define CS1  0x05
#define CS2  0x04
#define RES  0x03

sind die Zuweisungen zu den PINs am µC.

würd ich persönlich so machen:

#define CD   PC0 bwz. 0
#define RW   PC1 bzw. 1
#define EN   PC2 ...
#define CS1  PC3 ...
#define CS2  PC4 ...
#define RES  PC5 bzw. 5

lg
#4372868
Hallo,
ich habe auch eine Frage zu der #define "Geschichte".... :)

Folgendes:
..ich gebe den Ausgängen des Ports C Namen =>

#define LED0_ON PORTC |= (1<<PC0);
#define LED0_OFF PORTC &= ~(1<<PC0);
#define LED1_ON PORTC |= (1<<PC1);
#define LED1_OFF PORTC &= ~(1<<PC1);
#define LED2_ON PORTC |= (1<<PC2);
#define LED2_OFF PORTC &= ~(1<<PC2);
#define LED3_ON PORTC |= (1<<PC3);
#define LED3_OFF PORTC &= ~(1<<PC3);
#define LED4_ON PORTC |= (1<<PC4);
#define LED4_OFF PORTC &= ~(1<<PC4);

Somit verwende ich im Programm nur das LED1_ON zB.

Frage : wie mache ich es mit den Eingängen, an den Taster sind.

Habs so versucht, bekomme jedoch den Fehler "expected ")" before ";" 
token.

#define taster1 PIND & (1<<PD2);
#define taster2 PIND & (1<<PD3);


Gruß
Rafael
#4372904
Hallo,
das habe ich soeben ausprobiert...
Was ich festgestellt habe ist, dass dieses Problem mit der Abfrage des 
Tasgers1 in der If Anweisung zu tun hat. Denn wenn ich die Abfrage in 
der If- Anweisung weg lasse bzw mit if (!(PIND&(1<<PD2))) mache dann 
kommt die Fehlermeldung nicht.

Wie müsste ich den Taster1 abfragen??

....wenn "taster1" betätigt, dann....

if ( !taster1)
{....}

oder

if (!(taster1))
{...}


Habe beides ausprobiert.. leider kommt dann immer die Fehlermeldung 
"expected ")" before ";"

Gruß
Rafael
(Firma: matzetronics) #4372983
Rafael S. schrieb:
> Denn wenn ich die Abfrage in
> der If- Anweisung weg lasse bzw mit if (!(PIND&(1<<PD2))) mache dann
> kommt die Fehlermeldung nicht.

Ja, da steht eben auch kein Semikolon drin. Stell dir einfach vor, das 
das #define dir im jetzigen Zustand folgendes in den Code schreibt:
1
#define taster1 PIND & (1<<PD2);
2

3
// aus if ( !taster1) wird dann:
4
if (!PIND & (1<<PD2););
und das ist eben Blödsinn. Funktionieren wird also eher
1
#define taster1 (PIND & (1<<PD2))
2
// so wird aus if ( !taster1)
3
if (!(PIND & (1<<PD2)) {
4
// do stuff 
5
}
Jetzt klarer?
#4373070
Hallo Matthias,

jetzt ist es super klar!! :)


Matthias S. schrieb:

> Das Semikolon ist dann Teil des #define

Diese Aussage hat mich ein wenig auf den falschen Gedankenpfad 
geschickt! Ich dachte mir, na klar ist das Semikolon ein Teil des 
"#define". Steht doch am Ende jeder Zeile.. aber dass das Semikolon ein 
Teil des "Namen", hier "taster1" ist, habe ich ausgeblendet! :(

Sorry!!

Das Erlernen des C- programmierens ist nicht einfach... gebe mir Mühe 
:-)

Und tausend Dank für die ausführliche Erläuterung!! :)

Gruß

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.