Forum: Mikrocontroller und Digitale Elektronik macro PIC 16F883


von Willi (Gast)


Lesenswert?

Gibt es eine Möglichkeit die Argumente für das MAKRO als dierekten Wert
einzugeben ?????


;’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’
;Programm
     cblock     0x20
VZZ
ZX1
XFLAG    ;
Wert1    ;
Wert2    ;
EE_CON1  ;
EE_ADR  ;
EE_DATA  ;
  endc




        movlw     d'2'
  movwf  Wert1
  movlw    d'4'
  movwf  Wert2

M_Rechnen  Wert1,Wert2
;so  funktioniert es richtig
;‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘
M_Rechnen       0x02, 0x04  ;oder
M_Rechnen       d‘02‘,d‘04‘
;so funktioniert es nicht !!!!!!!!!!!!!!!!!
;gibt es eine Möglichkeit die Argumente
;wie vor als direkte Werte einzugeben ?


;‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘
;MACRO
M_Rechnen  macro  Wert1, Wert2
Banksel PORTA
movf  Wert1,w
movwf  PORTA

movf  Wert2,w
movwf  PORTB

addwf  Wert1,w
movwf  PORTC

ENDM
;‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘

Wer hat das Problem schon gelöst !
Viele Grüsse
Willi

von chris (Gast)


Lesenswert?

du verwendest die falschen Apostrophe, siehst du den unterschied ?

      movlw     d'2'
M_Rechnen       d‘02‘,d‘04‘

ansonsten radix dec definieren oder auch so:
M_Rechnen .02 , .04

von Willi (Gast)


Lesenswert?

Hallo Chris,

M_Rechnen  .02 , .04

;bit             76543210
Ergebnis APORT b'00100001'
         PORTB b'11111111'
         CPORT c'00100100'
Das ist mein Ergebnis
Die Apostrophe haben auch nichts geändert.

von Willi (Gast)


Lesenswert?

so funktioniert es!!

     cblock     0x20
VZZ
ZX1
XFLAG    ;

Wert1    ;
Wert2    ;

EE_CON1  ;
EE_ADR  ;
EE_DATA  ;
  endc

M_Rechnen  d'2', d'4'

;‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘‘
;macro
M_Rechnen  macro  Wert1, Wert2
Banksel PORTA
local Wert3
movlw  Wert1
movwf  PORTA
movwf  Wert3

movlw  Wert2
movwf  PORTB

addwf  Wert3,w
movwf  PORTC

ENDM

;---------------------------------------------
;es muss alles über das w-Register laufen
;direkt –Eingabe der Argumente in  Wert1
;oder Wert2 ist nicht möglich
;viele Grüse
;Willi

von Dieter Werner (Gast)


Lesenswert?

Mit Wert3 belegst Du ja noch eine (lokale) Speicherstelle.

So sollte auch ohne gehen:

;macro
M_Rechnen  macro  Wert1, Wert2
Banksel PORTA

movlw  Wert1
movwf  PORTA

movlw  Wert2
movwf  PORTB

addlw  Wert1
movwf  PORTC

ENDM

von Willi (Gast)


Lesenswert?

Hallo Dieter,
so ist es optimal. Vielen Dank.Heute früh war ich froh, dass ich  den 
grundsätzlichen Fehler gefunden hatte.
Viele Grüsse
Willi

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.