www.mikrocontroller.net

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


Autor: Mike ... (90peter90)
Datum:

Bewertung
0 lesenswert
nicht 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?
.INCLUDE "8515def.inc"

.DEF mp = R16
.DEF mo = R17

main:    ldi mo, 0xFF

      ldi mp, 0xFF
      out DDRB, mp  ;PortB als  Ausgang
      ldi mp, 0x00
      out DDRD,mp    ;Port D als Eingang

      ldi mp, 0xFF
      out PORTB, mp
loop:    
      sbic PIND, 0
      rcall ledan

      sbic PIND, 7
      rcall ledaus

      rjmp loop


ledan:    ldi mp, 0x00
      out PORTB, mp
      ret

ledaus:    ldi mp, 0xFF
      out PORTB, mp
      ret

Autor: max power (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Stefan B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Mike ... (90peter90)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hy,

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


????

Autor: Mike ... (90peter90)
Datum:

Bewertung
0 lesenswert
nicht 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
!

Autor: Otto (Gast)
Datum:

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

Autor: Georg (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Mike ... (90peter90)
Datum:

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

hm....

Autor: Otto (Gast)
Datum:

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

Hat das Testprogramm richtig funktioniert ?

Autor: Mike ... (90peter90)
Datum:

Bewertung
0 lesenswert
nicht 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.
loop:
      sbic PIND, 7
      rcall ledaus

      sbic PIND, 0
      rcall ledan



      rjmp loop


ledan:    ldi mp, 0x00
      out PORTB, mp
      ret

ledaus:    ldi mp, 0xFF
      out PORTB, mp
      ret

Autor: A. P. (mutant)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Mike ... (90peter90)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
(y)
SUPER Danke.....

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


Danke nochmal :-)

Autor: A. P. (mutant)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>kennst du vllt auch eine Lister der ganzen Befehle ?

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

MfG Spess

Autor: Mike ... (90peter90)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok danke schön...

Mike

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.