Anfänger, ASM, Taster toggel Port

Gast #2255694
Lesenswert?

Hallo,
ich versuche einen einzelnen PinB jedes mal wenn ein Taster an PortD 
betätigt wurde ein bzw. aus zu schalten.
Beim Testen im AvrStudio5 läuft alles wie geplant (vorausgesetzt der 
PinD 4 wird manuell bedient).
Am ATMega168 wird an PB1 jedoch 2,5V angezeigt.
Meine Überlegung ging dahin das PB1 evtl. in schneller Folge 1|0 
geschaltet wird, was bedeuten würde das der Taster\PortD4 nach dem 
ersten Aufruf aktiv bleibt ?
1
include "m168def.inc"
2

3
 ldi  r16, 0xFF
4
 out  DDRB, r16      ;PortB Ausgang
5

6
 ldi  r16, 0x00 
7
 out  DDRD, r16      ;PortD Eingang
8

9
 ldi  r16, 0xFF
10
 out  PORTB, r16     ;PortB 0 (alle aus)
11

12
 sbi  PORTD, 4       ;PortD 4 auf eins, Interner Pullup aktiviert ?
13

14
 loop:  
15
 
16
    sbic PinD, 4     ; Naechsten Befehl ueberspringen wenn PinD4=0
17
                
18
    sbi PinB, 1      ; Bit PinB 1 toggeln ?
19

20
    rjmp loop        ; Endlosschleife in Loop

Danke im Voraus für eure Mühe.
Gast #2255813
Lesenswert?

Ja Uwe, ich habe das Datenblatt gelesen (s.73) aber wenig verstanden da 
ich wirklich ein Anfänger bin. Ob der 168 diese Funktion bietet war aber 
auch nicht die Frage.
Ich werde mich nun erstmal mit Entprellung und Flags beschäftigen und 
danke euch für die zahlreichen Antworten sowie den kompakten Code.

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