Anfänger Frage zu Assembler

Gast #259589
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
Gast #259590
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
Gast #259592
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
Angehängte Dateien:
#259594
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.

...
Gast #259595
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
Gast #259597
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
#259598
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?

...
Gast #259599
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.
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren