Forum: Mikrocontroller und Digitale Elektronik assembler Programm licht an/aus


von Mike .. (90peter90)


Lesenswert?

Hallo,

ich bin neu in der atmel programierung. Wäre es möglich, wenn jemand 
über mein code schauen könnte? irgendwie sind alle leds an, obwohl diese 
aus sein sollen.

Weiss jemand wieso? Die LEDs sollen erst angehen, wenn ich Pin0 
drücken.. dann sollen die LEDs solange anbleiben, bis Pin7 einmal 
gedrückt wird.
Sieht jemand meinen Fehler?
1
.INCLUDE "8515def.inc"
2
3
.DEF mp = R16
4
.DEF mo = R17
5
6
main:    ldi mo, 0xFF
7
8
      ldi mp, 0xFF
9
      out DDRB, mp  ;PortB als  Ausgang
10
      ldi mp, 0x00
11
      out DDRD,mp    ;Port D als Eingang
12
13
      ldi mp, 0xFF
14
      out PORTB, mp
15
loop:    
16
      sbic PIND, 0
17
      rcall ledan
18
19
      sbic PIND, 7
20
      rcall ledaus
21
22
      rjmp loop
23
24
25
ledan:    ldi mp, 0x00
26
      out PORTB, mp
27
      ret
28
29
ledaus:    ldi mp, 0xFF
30
      out PORTB, mp
31
      ret

von max power (Gast)


Lesenswert?


von Stefan B. (Gast)


Lesenswert?

Schaltplan?

Die LEDs müssen bei diesem Code active-low geschaltet sein. Die Taster 
an PD0 sind ebenfalls active-low (siehe IO in AVR-GCC-Tutorial) 
geschaltet. Deshalb sind Pull-up Widerstände erforderlich, um im 
losgelassenen Zustand ein sicheres HIGH zu haben. Die internen Pullups 
hast du nicht aktiviert, deshalb die Frage oben nach dem Schaltplan...

von Mike .. (90peter90)


Lesenswert?

Hy,

ich programmiere noch mit dem STK 500 und einem ATMega8515 ...
Habe den Stackpointer initialisiert.
1
ldi temp, LOW(RAMEND)             
2
out SPL, temp
3
ldi temp, HIGH(RAMEND)            
4
out SPH, temp

????

von Mike .. (90peter90)


Lesenswert?

irgendwie funktioniert das noch nicht so ganz, wie ich das möchte..

Weiss jemand Rat? Die LEDs sind immer noch an , sie sollen bei begin aus 
sein
!

von Otto (Gast)


Lesenswert?

Flachbandkabel für Taster auf Port D gesteckt ? Probiere mal alle 
Möglichkeiten für die beiden Taster durch.

von Georg (Gast)


Lesenswert?

Du hast zwar PortD als Eingang definiert, aber nicht die internen
Pullups eingeschaltet:

Also noch ein 0xFF in PortD schreiben.

Allerdings ist selbst dann das Ganze noch vom Prellen der Taster 
abhängig.

von spess53 (Gast)


Lesenswert?

Hi

>Du hast zwar PortD als Eingang definiert, aber nicht die internen
>Pullups eingeschaltet:

Die Taster des STK500 haben eigene Pull-Ups.

MfG Spess

von Mike .. (90peter90)


Lesenswert?

ja das habe ich auch schon ausprobiert, aber leider funktioniert das 
auch nicht !!

hm....

von Otto (Gast)


Lesenswert?

Lade Port D und schreibe auf Port B - was passiert, wenn Du die Taster 
betätiget ?

Hat das Testprogramm richtig funktioniert ?

von Mike .. (90peter90)


Lesenswert?

welches Testprogramm =?

Ausgngssituation: alle LEDs an !!!
wenn ich den Taster drücke, wo alle LEDs ausgehen sollen, geht das auch.
nach loslassen des Testers gehen die LEDs auch wieder an.
sobald man aber den Taster drückt, der die LEDs einschalten soll(geht ja 
nicht weil die LEDs schon an sind) werden die LEDs nur etwas heller...
Verbindung(Flachkabel etc.) kanns ja niht sein.
1
loop:
2
      sbic PIND, 7
3
      rcall ledaus
4
5
      sbic PIND, 0
6
      rcall ledan
7
8
9
10
      rjmp loop
11
12
13
ledan:    ldi mp, 0x00
14
      out PORTB, mp
15
      ret
16
17
ledaus:    ldi mp, 0xFF
18
      out PORTB, mp
19
      ret

von A. P. (mutant)


Lesenswert?

Du musst

sbis PIND,7

eingeben

es soll skippen wenn PIND7 gesetzt ist, was er ja im Ruhezustand ist.
Das gleiche mit PIND0 machen.
Dann sollte es gehen.

Problem. Er macht die LED an und gleich wieder aus. Das die ganze Zeit 
-> leichtes leuchten.

von Mike .. (90peter90)


Lesenswert?

(y)
SUPER Danke.....

kennst du vllt auch eine Lister der ganzen Befehle ? Wäre glaub ich sehr 
hilfreich
??????


Danke nochmal :-)

von A. P. (mutant)


Lesenswert?

geh auf atmel.com und hol dir das Datenblatt deines Controllers
Da sollte auf den letzten Seiten alle Assembler befehle aufgelistet 
sein.

Viel Spass noch

Andreas

von spess53 (Gast)


Lesenswert?

Hi

>kennst du vllt auch eine Lister der ganzen Befehle ?

www.atmel.com/atmel/acrobat/doc0856.pdf

MfG Spess

von Mike .. (90peter90)


Lesenswert?

ok danke schön...

Mike

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
Noch kein Account? Hier anmelden.