Forum: Mikrocontroller und Digitale Elektronik define in AVR Studio ?


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

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.