Einlesen eines Bits am ATMEGA168

Gast #2522228
Hi,

ich habe ein Problem bei der Programmierung meines 
ATMEGA168PA-Controllers. Ich probiere (als Test erstmal) den Port C 
auszulesen und die Daten auf Port B (der mit LEDs bestückt ist, die auch 
funktonieren) auszugeben.

Dazu nutze ich das unten angegebene Code-Stück. Irgendwie funktioniert 
das aber nicht, denn die Ausgabe auf Port B ist immer 0b01111111. Das 
oberste Bit ist 0, da es nicht existiert - soviel ist klar. Allerdings 
ändert sich die Ausgabe nicht, wenn ich eines der Bits extern auf Low 
ziehe (hab nachgemessen, ist wirklich auf Low). Warum?
1
.NOLIST
2
.INCLUDE "m168def.inc"
3
.LIST
4
.DEF  mp = R16
5

6
rjmp main
7

8
main:
9
  ; Port C ist reiner Eingabeport:
10
  ldi mp, 0x00
11
  out DDRC, mp
12
  ; Und die Pull-Ups von C sind allesamt aktiviert:
13
  com mp
14
  out PORTC, mp
15
  
16
  ; Port B ist reiner Ausgabeport:
17
  ldi mp, 0xFF
18
  out DDRB, mp
19
  
20
loop:
21
  ; Lies Port C, gib das gelesene auf Port B aus und tu das endlos.
22
  in mp, PORTC
23
  out PORTB, mp
24
  rjmp loop

Viele Grüße,
Jost

Antwort schreiben

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