Forum: Mikrocontroller und Digitale Elektronik define in AVR Studio ?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Alfons (Gast)


Lesenswert?

Gibt es in AVRStudio Assembler eine directive mit der man z.B. portb.1
eine Bezeichnung geben kann ? Ich verwende so viele Bitfunktionen, da
komme ich immer durcheinander und so wäre es einfacher...
z.B.

define Clk = portb.0
define CE = portb.1
define WR = portb.2

In der Hilfe steht nur .equ (Zweisung von Zahlen) und .set (ist
irgendwie daselbe wie .equ oder habe ich da was falsch verstanden ?

von Christof Krüger (Gast)


Lesenswert?

drücke im editor von AVR-Studio mal auf F1 und gehe in der darauf
aufpoppenden Hilfe auf "Inhalt" und da auf "User's
Guide"->"Directives"
Was du brauchst ist .equ oder .set

von Alfons (Gast)


Lesenswert?

Dachte ich auch, geht aber nicht:

Including  'C:\Programme\Atmel\AVR
Tools\AvrAssembler\AppNotes\8515def.inc'
C:\Programme\Atmel\AVR Tools\AvrStudio4\VideoGenerator.asm(73) :
error : Argument(s) missing or illegally delimited
C:\Programme\Atmel\AVR Tools\AvrStudio4\VideoGenerator.asm(74) :
error : Argument(s) missing or illegally delimited
C:\Programme\Atmel\AVR Tools\AvrStudio4\VideoGenerator.asm(78) :
error : Argument(s) missing or illegally delimited
C:\Programme\Atmel\AVR Tools\AvrStudio4\VideoGenerator.asm(81) :
error : Argument(s) missing or illegally delimited


.equ A8 = portb.0
.equ DSF = portb.1
.equ SEna = portb.2
.equ W = portb.3
.equ R = portb.4

.equ RSel0 = portc.0
.equ RSel1 = portc.1

Zeile 73ff:

cbi RSel0
sbi RSel1
out Daten, voll
nop
nop
cbi W
nop
nop
sbi W
nop
nop

von Christof Krüger (Gast)


Lesenswert?

So wirds auch nicht gehen. Es ist leider nicht vergleichbar mit dem
C-Präprozessor.

Hier mal ein Beispiel aus meinem Code:


.equ DISP_IO        = PORTB
.equ DISP_IO_DDR    = DDRB
.equ DISP_IO_PIN    = PINB

.equ DISP_IO_DATA    = 0
.equ DISP_IO_CLK     = 1

.equ DISP_IO_MASK  = 0b00000011


.equ DISP_CTL       = PORTB
.equ DISP_CTL_DDR   = DDRB
.equ DISP_CTL_PIN   = PINB

.equ DISP_CTL_CS    = 2
.equ DISP_CTL_E     = 3
.equ DISP_CTL_RW    = 4
.equ DISP_CTL_DI    = 5
.equ DISP_CTL_RESET = 6

.equ DISP_CTL_MASK  = 0b01111100


in R16, DISP_IO_DDR  ;IO-Port als Ausgang deklarieren
ori R16, DISP_IO_MASK
out DISP_IO_DDR, R16

in R16, DISP_CTL_DDR  ;CTL-Port als Ausgang deklarieren
ori R16, DISP_CTL_MASK
out DISP_CTL_DDR, R16

...

;Enable togglen
sbi DISP_CTL, DISP_CTL_E
cbi DISP_CTL, DISP_CTL_E

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]
  • [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.