www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik macro PIC 16F883


Autor: Willi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Willi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Willi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dieter Werner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Willi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.