Je trébuche sur une bizarrerie de MPASM.
Voici quelques extraits du code concerné :
La zone des variables
Code : Tout sélectionner
CBLOCK 0x020 ; Début de la zone des variables
; sauvegardes pour l'IT
w_temp : 1 ; W
status_temp : 1 ; STATUS
; variables utiles
A : 1
ENDC ; Fin de la zone
CBLOCK 0xD0
VZ : 8
ZZ : 8
Truc : 1
ENDC ; Fin de la zone
CBLOCK 0x140
WZ : 8
AAA:1
ENDC
CBLOCK 0x195
DataSSP : 5
ENDC
Le début d'une macro, la suite n'est pas concernée
Code : Tout sélectionner
COPY macro A,ZZ
variable V, VV, VVV
V set low(A) & 0x80
VV set low(ZZ)& 0x80
VVV set 0
movf A,W
Un exemple d'invocation qui marche
Code : Tout sélectionner
org 0x000 ; Adresse de départ après reset
goto init
;**********************************************************************
init
movlw .100
movwf A
COPY Truc,DataSSP
voici le morceau de .LST généré par MPASM
Code : Tout sélectionner
0000 00124 org 0x000 ; Adresse de départ après reset
0000 2801 00125 goto init
00126
00127 ;**********************************************************************
00128
00129
0001 00130 init
0001 3064 00131 movlw .100
0002 00A2 00132 movwf A
00133
00134 COPY Truc,DataSSP
M
0000 M variable V, VV, VVV
00000080 M V set low(Truc) & 0x80
00000080 M VV set low(DataSSP)& 0x80
00000000 M VVV set 0
Un deuxième essai (qui en fait fut le premier et qui m'a alerté)
Code : Tout sélectionner
org 0x000 ; Adresse de départ après reset
goto init
;**********************************************************************
init
movlw .100
movwf A
COPY ZZ,DataSSP
code généré
Code : Tout sélectionner
0000 00124 org 0x000 ; Adresse de départ après reset
0000 2801 00125 goto init
00126
00127 ;**********************************************************************
00128
00129
0001 00130 init
0001 3064 00131 movlw .100
0002 00A2 00132 movwf A
00133
00134 COPY ZZ,DataSSP
M
0000 M variable V, VV, VVV
00000080 M V set low(DataSSP) & 0x80
00000080 M VV set low(DataSSP)& 0x80
00000000 M VVV set 0
Dans la ligne
00000080 M V set low(DataSSP) & 0x80
je m'attendrais à
00000080 M V set low(ZZ) & 0x80
L'un d'entre vous a-t-il une idée, j'avoue avoir passé beaucoup de temps là dessus pour un papier que je prépare pour la rubrique Tutoriel.
Cordialement