Forum: Mikrocontroller und Digitale Elektronik asm ATmega32 codeoptimierung


von Kai S. (Firma: ZeuSWarE GmbH) (zeusosc)


Lesenswert?

Jo hi leutz ich bekomme ein wert über usart,. vergleiche den springe zum 
label mache wat und reti wieder,..
das ganze isne lange tipperei und ich wette das geht auch schneller mitn 
makro, leider habe ich keine ahnung wie,... kann mir jemand das 
verkürzen
(learning by abguckn :D )

[asm]
int_RXD: in get,UDR
   cpi get,0
   breq end_int_rxd

        cpi get,1
  breq mode1

  cpi get,2
  breq mode2

  cpi get,3
  breq mode3

  cpi get,4
  breq mode4

        cpi ......



mode1:
push temp
ldi temp, 0b00000001
eor pob, temp ;bitwise xor
out PORTC,pob
pop temp
reti

mode2:
push temp
ldi temp, 0b00000010
eor pob, temp
out PORTC,pob
pop temp
reti

......

[/asm]

jo würde mich über hilfe freun
freu
mfg

von zero_gravity (Gast)


Lesenswert?

hey kai!!
also enn du mit dem avr studio von atmel arbeitest, müssten die makros 
in etwa so aussehen (glaube ich zumindest...):

für die abfragen wäre das:

.MACRO abfrage
        cpi get, @0
        breq     @1
.ENDMACRO

und der "aufruf" sehe dann so aus:

abfrage(1,mode1)


oder bei den "modes" dann halt:

.MACRO mode
        push temp
        ldi temp, @0
        eor pob, temp
        out PORTC,pob
        pop temp
.ENDMACRO

-> mode(0b00000001)

man könnte die beiden jetzt auch noch kombinieren, ansatt sie nur 
einzeln zu benutzen... aber ob das auch funktioniert?! bin mir da nicht 
so 100%ig sicher...


lg zero_gravity

von Kai S. (Firma: ZeuSWarE GmbH) (zeusosc)


Lesenswert?

zero_gravity wrote:

> .MACRO abfrage
>         cpi get, @0
>         breq     @1
> .ENDMACRO
>

hmmm mit dem komma bei
> cpi get, @0
hatta probs...
trozdem danke erstma :D
________________________________-
edit:
k, die abfrage muss lauten:

>abfrage 1,mode1

dann gehts , thx

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.