Forum: Mikrocontroller und Digitale Elektronik Anfänger Frage zu Assembler


von Klaus Wetzel (Gast)


Lesenswert?

Hallo,

ich bin absoluter Neueinsteiger was die Programmierung von AVR und
Assembler betrifft.
Um mir ein Bild über ein Programm machen zu können suche ich ein ganz
simples Programm (mit Erklärung).
Ich möchte gerne mit einem Atmega8 über einen Tastimpuls am PC0 eine
LED an PC1 ein und ausschalten.

Kann kir jemand so etwas geben?

Danke und Gruß
Klaus

von The Daz (Gast)


Lesenswert?

Klaus,
fang lieber damit an, nur eine LED einzuschalten. Tasten zu benutzen
erfordert Entprellung und das ist schon ein Thema fuer sich. Hast du
dir schon die Assembler-Befehlstabelle und das Datenblatt deines AVR
reingezogen ?

  Daz

von Hannes L. (hannes)


Angehängte Dateien:

Lesenswert?

Das ist zwar nicht das, was du suchst, aber es wird dir sicher helfen.
Denn das hatte ich mal für einen Anfänger geschrieben und daher üppig
kommentiert. Es diente zum Test eines Mega8-Boards.

...

von Klaus Wetzel (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

danke für die Antworten.
Die Befehle hab ich mir schon angesehen.
Mir fehlen noch ein bisschen die Zusammenhänge bzw. die Grundlagen.
Die Literatur ist sehr trocken.

Ich habe jetzt mal einen Anfang mit dem "AVR-Tutorial" hier im Forum
gemacht.

Jetzt bekomme ich die Fehlermeldung  "4433def.inc(38) : error : Syntax
error"
wenn ich mit der angehängten Dati versuche zu assemblieren.

Was ist da falsch?

Grüße
Klaus

von Quark (Gast)


Lesenswert?

Hallo,

kennst Du dieses aus der Codesammlung (vlt. ist es ja auch schon bei
den Artikeln im WiKi):
http://www.mikrocontroller.net/forum/read-4-81225.html

Grüße

Quark

von Hannes L. (hannes)


Lesenswert?

In welches Programm hast du denn die 4433def.inc eingebunden?

Hast du dir mein Beispiel mal angesehen?
Versuche doch mal, es (mithilfe des Datenblattes und der Hilfe des
AVR-Studios) zu analysieren. Das beantwortet schonmal einige
Anfängerfragen.

Hast du einen AT90S4433 in Benutzung???

Falls du einen Mega8 benutzt, musst du die m8def.inc einbinden.

Schau dir mal im Ordner avr-assembler\appnotes (oder ähnlich) deines
AVR-Studios die verfügbaten Include-Dateien an.

...

von Klaus Wetzel (Gast)


Lesenswert?

Hallo HanneS,

an deinem Beispiel bin ich drann.
Mit der Include Datei des AT90S4433 habe ich versucht die Beschreibung
im AVR Tutorial nach zu vollziehen.
Die Include Datei stammt aus dem AVR Studio (gestern runter geladen)
Wenn ich die Datei zum Atmega8 einbind bekomme ich noch mehr Fehler.
Liegt es vielleicht an einer anderen Adresszuordnung?

Grüße
Klaus

von Hannes L. (hannes)


Lesenswert?

Dazu müsste ich das Programm sehen, welches die Include-Datei aufruft.
Denn die Fehler stecken nicht in der Include-Datei, sondern im Umgang
damit.

...

von Klaus Wetzel (Gast)


Lesenswert?

versuch mal dein Glück:

.include "4433def.inc"       ;Definitionsdatei einbinden, ggf. durch

         ldi r16, 0xFF       ;0xFF ins Arbeitsregister r16 laden
         out DDRB, r16       ;Inhalt von r16 ins IO-Register DDRB
ausgeben

         ldi r16, 0b11111100 ;0b11111100 in r16 laden
         out PORTB, r16      ;r16 ins IO-Register PORTB ausgeben

ende:    rjmp ende           ;Sprung zur Marke "ende" ->
Endlosschleife

Danke!
Klaus

von Hannes L. (hannes)


Lesenswert?

Komisch, mein Assembler meckert nicht...

Building project...
AVRASM: AVR macro assembler 2.0.31 (build 58 Apr 21 2005 14:17:40)
Copyright (C) 1995-2005 ATMEL Corporation
E:\AVR\Test\wetzel\test.asm(1): Including file
'C:\Programme\Atmel\AVR
Tools\AvrAssembler2\Appnotes\4433def.inc'
AT90S4433 memory use summary [bytes]:
Segment   Begin    End      Code   Data   Used    Size   Use%
---------------------------------------------------------------
[.cseg] 0x000000 0x00000a     10      0     10    4096   0.2%
[.dseg] 0x000060 0x000060      0      0      0     128   0.0%
[.eseg] 0x000000 0x000000      0      0      0     256   0.0%
Assembly complete, 0 errors. 0 warnings

Kann es sein, dass in deiner Entwicklungsumgebung etwas nicht stimmt?

...

von Jan Weber (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
ich hatte auch ein ähnliches problem! Es hat an der Include Datei
gelegen. Die 4433.inc hat bei mir nicht gefunzt. Da ich sowieso ein
atmega8 programmieren wollte hab ich mir m8def.inc bei google gesucht
und nach langer suche gefunden! Die Texdatei ist im Anhang. Du musst im
Programm nurnoch die include datei ersetzen also 4433.inc durch
m8def.inc ersetzen. m8def.inc muss im gleichen Quellordner sein wo dein
Prog gespeichert ist.

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.