Ports initialisieren

Gast #1625760
Lesenswert?
• ▲
▼
Wenn die Aufgabenstellung wie folgt lautet, ist dann meine Lösung siehe 
unten richtig?

Aufgabe:
erstellen sie eine main() Funktion welche folgende Spezialfunktionen 
(bereitstellet?)

o WDT deaktivieren

o Port1: P1.0, P1.3, P1.4 = Ausgang, alle anderen Eingang

§ P1.1, P1.2 = interruptfähig

o Port 2: Alle als binäre Eingänge


o Port6: Alle als Eingang mit Spezialfunktion (hier ADC-Eingangssignal) 
dieser ist als binärer Ausgang zu
initiieren





void main (void)
{
WDTCTL = WDTPW + WDTHOLD; //WDT deaktivieren

//PORT1

P1OUT = 0x00;
P1DIR = 0x91; //(=00011001b) macht Pins 0,3,4
P1IE = 0x06; //(=00000110) macht Pins 1,2 interruptfähig

//PORT2

P2SEL = 0x00; // Alle Port_2.Pins als Bin-IO
P2DIR = 0x00; // Alle Port.Pins als Input schalten


//PORT6

P6SEL = 0xFF; // Alle Port_6.Pins als Bin-IO
P6DIR = 0x01; // Pin6.0 als binärer Ausgang alle anderen ADC

_EINT();

While(1)
{
_NOP();
}
}


vielen Dank,
Paul
#1625962
Lesenswert?
• ▲
▼
> P1DIR = 0x91; //(=00011001b) macht Pins 0,3,4

Wie kommst du auf 0x91?

Hat dein System keine fertigen Konstanten für die Pinnummern?
Wenn ja, dann schriebs doch so (siehe unten). Wenn nein, dann definiere 
dirc welche und schreibs auch so
1
#define PIN_0   0
2
#define PIN_1   1
3
#define PIN_2   2
4
#define PIN_3   3
5
#define PIN_4   4
6
#define PIN_5   5
7
#define PIN_6   6
8
#define PIN_7   7
9

10

11
...
12

13
  P1DIR = ( 1 << PIN_0 ) | ( 1 << PIN_3 ) | ( 1 << PIN_4 );

da kann dann auch ein Blinder greifen, welche Bits auf 1 gesetzt werden 
und muss nicht mühselig Bits zählen. Ganz abgesehen davon, dass dann 
auch der Kommentar überflüssig wird, was ja grundsätzlich eine gute 
Sache ist. Ein Kommentar, den keiner braucht, weil alles Wissenswerte im 
Code enthalten ist und den man deswegen weglässt, ist ein guter 
Kommentar.

(Die anderen bitmässigen Zuweisungen natürlich dementsprechend auch 
ersetzen)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 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.