PULLUP beim Tiny13

OP #2461428
Lesenswert?

so sieht der Quelltext aus:

        .INCLUDE  "tn13def.inc"  ; Deklarationen für Tiny13
        .EQU    takt = 1000000  ; Systemtakt 1 MHz
        .DEF    akku = r16      ; Arbeitsregister r16 in akku benannt
        .CSEG                   ; Programm-Flash
        rjmp    start           ; Reset-Einsprung
        .ORG    $6              ; Interrupt-Einsprünge übergehen
start:  ldi     akku,LOW(RAMEND); Stapel anlegen
        out     SPL,akku        ;

        ldi     akku,0b00000111       ; Bitmuster 0000 0111
         out     DDRB,akku       ; PortB (PB0-PB2) ist Ausgang
                                 ;PB3-PB7 ist Input
        sbi     PORTB, 3



loop:  nop
sw1:  sbic  PINB,PB3
    rjmp  sw1
    ldi     akku,$07        ; Bitmuster 0000 0111
        out     PORTB,akku      ; Ausgabe Anschluss Port

        rjmp    loop            ; Schleife
        .EXIT                   ; Ende des Quelltextes


Der Befehl sbic wird einfach ignoriert!
#2461437
Lesenswert?

Rolf Hegewald schrieb:

> Der Befehl sbic wird einfach ignoriert!

Der wird mit SIcherheit nicht ignoriert.

Diese Attitüde kannst du dir gleich wieder abschminken. Wenn dein 
Progrmm nicht so funktioniert, wie du dir das vorstellst, dann liegt es 
immer am Programmierer. Entweder ist seine Vorstellung falsch oder er 
hat nicht das programmiert, was er eigentlich programmieren wollte.


Woran erkennst du denn, dass nichts geht?
Was sollte denn passieren und was passiert statt dessen?
OP #2461765
Lesenswert?

Hallo Karl Heinz,
 "Was sollte denn passieren, und was passiert stattdessen"

loop:  nop
sw1:   sbic  PINB,PB3
       rjmp  sw1
       ldi     akku,$07        ; Bitmuster 0000 0111
       out     PORTB,akku      ; Ausgabe Anschluss Port

       rjmp    loop            ; Schleife
       .EXIT                   ; Ende des Quelltextes

wenn ich ändere:

       ldi     akku,$00
       out     PORTB,akku
       rjmp    loop
dann dürften PB0-PB2 erst dann zu LOW gehen, wenn ich die
Taste sw1 drücke, oder? wo ist denn hier mein Denkfehler!
Tut der Tiny aber nicht und alle 3 Pins haben LOW

Grüße

Rolf
OP #2461851
Lesenswert?

sorry Walter,
jetzt haut es hin.
Nochmals den Quelltext:

       .INCLUDE  "tn13def.inc"  ; Deklarationen für Tiny13
        .EQU    takt = 1000000  ; Systemtakt 1 MHz
        .DEF    akku = r16      ; Arbeitsregister r16 in akku benannt
        .CSEG                   ; Programm-Flash
        rjmp    start           ; Reset-Einsprung
        .ORG    $6              ; Interrupt-Einsprünge übergehen

start:  ldi     akku,LOW(RAMEND); Stapel anlegen
        out     SPL,akku        ;
        ldi     akku,0b00000111       ; Bitmuster 0000 0111
        out     DDRB,akku       ; PortB (PB0-PB2) ist Ausgang
        sbi     PORTB,PB3


loop:  nop

sw1:  sbic   PINB,PB3
      rjmp   sw1
      ldi    akku,7        ; Bitmuster 0000 0111
      out    PORTB,akku    ; PB0-PB2 = High
      rjmp   loop            ; Schleife
       .EXIT                   ; Ende des Quelltextes
bei Änderung von akku wird der neue Wert erst dann übernommen,
wenn die Taste sw1 gedrückt wird.

Danke nochmals an Alle für Eure Hilfe.

Grüße

Rolf

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