PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Abfrage!



Exodus
29.06.2006, 16:23
Hallo,


Also dass programm sollte so funktionieren!
erst wenn 4 tasten gedrückt werden, dann soll der ausgang geschalten werden (DDRB, 0)

Problem:
Warum leuchtet die LED am anfang schon auch wenn ich nichts mache!

Programm:

.include <m8535def.inc>


;leerlauf
loop:
in R21, PINA
cpi R21, 0x01
breq NR1
cpi R21, 0x02
breq NR2
cpi R21, 0x03
breq NR3
cpi R21, 0x04
breq NR4
cpi R22, 4
breq setbit
rjmp loop

;CODE Eingabe
NR1:
ldi R16, PINA
inc R22
ldi R17, 1
sbi EEARL, 0
sbi EECR, 2
sbi EECR, 1
out EEDR, R17
cbi EEARL, 0
cbi PINA, 0
rjmp loop

NR2:
ldi R16, PINA
inc R22
ldi R18, 2
sbi EEARL, 1
sbi EECR, 2
sbi EECR, 1
out EEDR, R18
cbi EEARL, 1
cbi PINA, 1
rjmp loop

NR3:
ldi R16, PINA
inc R22
ldi R19, 3
sbi EEARL, 2
sbi EECR, 2
sbi EECR, 1
out EEDR, R19
cbi EEARL, 2
cbi PINA, 2
rjmp loop

NR4:
inc R22
ldi R20, 4
sbi EEARL, 3
sbi EECR, 2
sbi EECR, 1
out EEDR, R20
cbi EEARL, 3
cbi PINA, 3
rjmp loop

setbit:
sbi DDRB, 0
rjmp setbit


MFG
Michael

mattmiksys
01.07.2006, 02:13
;leerlauf
loop:
in R21, PINA
cpi R21, 0x01
breq NR1
cpi R21, 0x02
breq NR2
cpi R21, 0x03
breq NR3
cpi R21, 0x04
breq NR4
Hallo Michael,
falls du es noch nicht gefunden hast: Du fragst ja den PINA auf Zustände ab und nicht (wie sicherlich beabsichtigt) auf Bits. Egal, ob du die Taster gegen Masse oder Vcc verdrahtet hast, alle Vergleiche werden sofort auf FALSE hinauslaufen.
Grüße,
Matthias

Hanni
01.07.2006, 10:49
So .. fangen wir mal an.

Bin ich grad zu faul ins Datenblatt zu schauen um herauszufinden, welche Funktionen die einelnen Bits in diversen Registern haben.
Jeder IO Pin eines AVR Mikrocontrollers hat nach einem Reset einen definierten Zustand (Input ohne Pullup).
Im Klartext: Bring deine Pins vorher auf einen definierten Pegel (auch die unbenutzten)!!
Siehe bei meinem Vorredner
Schon einmal daran gedacht, das Taster prellen können ?
Es ist im übrigen recht lustig, das du Eingänge deines Controllers nach der von dir erhofften Informationsverarbeitung einfach von "Hand'" wieder resetest ...
Meinst du nicht, der Taster ist stärker ?
und wie immer: Datenblatt lesen !!!


Irgendwie finde ich es beängstigend, das du doch sehr langsam lernst ...
Hast du dich eigentlich schoneinmal mit dem Gedanken befasst, das Assembler vielleicht doch zu hoch für dich sein könnte (nicht böse gemeint) und du dich vielleicht eher einer Hochsprache (Basic !!) widmen solltest.

Grüße,

da Hanni.

Edit: So nen paar komische Rechtschreibfehler entfernt

mattmiksys
01.07.2006, 11:28
... Es ist im übrigen recht lustig, das du Eingämge deines Controllers nach der von dir erhofften Informationsverarbeitung einfach von "Hand'" wieder resetest ...stimmt, so weit hatte ich gar nicht gekuckt! Das ist auch nett, weil die PINx nun ja auch noch Read-Onlys sind..

Exodus
03.07.2006, 14:05
Hallo, :-)

So und jetzt nochmal die punkte von Hanni:
1.) Habe ins Datenblatt geschaut.
2.) also soll ich an PA ein 0xff ausgeben?
3.) Ich frage ja auf Bits ab oder nicht?
4.) wie meinst du prellen?
5.) wie meinst du von Hand resetten?
6.) Bin beim lesen im datenblatt



MFG
Michael