Einlesen eines Bits am ATMEGA168

Gast #2522228
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren