Hallo Leute, ich lese nun schon in meinem schlauen Buch, wie ich z.B. PORTB,B4 einen PULLUP Widerstand in Assembler aktiviere. Sehe hier den Befehl: sbi PORTB,PB4 aber das haut nicht hin. Grüße Rolf
Was "haut" denn nicht hin? Meckert der Assembler (Syntax müsste eigentlich sein: sbi PortB, 4) oder funktioniert es auf dem Controller nicht?
A. K. schrieb: > Ist dieser eine Befehl das ganze Programm? er will darauf hinaus, ob am ende eine Endlosschleife kommt, oder ob der Tiny munter eine Reset -> 1 Befehl-Programm -> Reset Schleife läuft
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!
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?
Der Pullup wird nach dem out PORTB,akku in der Schleife garantiert nicht mehr up-pullen.
die anfangs genannte Zeile taucht auch nirgends im Programmn auf, oder hab ich tomaten auf den augen?
Vlad Tepesch schrieb: > tomaten auf den augen? So schlampig formatierte Quelltexte kann man doch gar nicht lesen, davon bekommt man Augenkrebs. Ein bissel Disziplin sollte schon sein, wenn man Hilfe erwartet. ...
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
A. K. schrieb: > Der Pullup wird nach dem > out PORTB,akku > in der Schleife garantiert nicht mehr up-pullen. Hallo Rolf, Lies doch einfach was man dir schreibt
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
Rolf Hegewald schrieb: > ldi akku,7 ; Bitmuster 0000 0111 > out PORTB,akku ; PB0-PB2 = High Der Controller ist trotz all deiner diesbezüglichen Anstrengungen garantiert viel sturer als du. Versprochen!
Rolf Hegewald schrieb: > sbi PORTB,PB3 Hiermit setzt Du das Bit 3 in PortB. Rolf Hegewald schrieb: > ldi akku,7 ; Bitmuster 0000 0111 > out PORTB,akku ; PB0-PB2 = High Und hiermit löscht Du es wieder... Versuche es bitte mal mit Bitmanipulation. ...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.