forked from acco/chti23
61 lines
No EOL
1.2 KiB
ArmAsm
61 lines
No EOL
1.2 KiB
ArmAsm
PRESERVE8
|
|
THUMB
|
|
|
|
|
|
; ====================== zone de réservation de données, ======================================
|
|
;Section RAM (read only) :
|
|
area mesdata,data,readonly
|
|
|
|
|
|
;Section RAM (read write):
|
|
area maram,data,readwrite
|
|
|
|
FlagSon dcb 0
|
|
EXPORT FlagSon
|
|
|
|
SortieSon dcw 0
|
|
EXPORT SortieSon
|
|
|
|
Index dcw 0
|
|
EXPORT Index
|
|
|
|
;LDRD{cond} Rt, Rt2, [Rn, ±Rm] ; register offset, doubleword ; ARM only <-- INSTRUCTION A UTILISER
|
|
; ===============================================================================================
|
|
|
|
;Exportation de la fonction callbackson()
|
|
EXPORT callbackson
|
|
|
|
|
|
|
|
;Section ROM code (read only) :
|
|
area moncode,code,readonly
|
|
; écrire le code ici
|
|
|
|
|
|
callbackson proc
|
|
|
|
push{lr}
|
|
ldr r1, =FlagSon ; on affecte à r1 l'adresse de FlagSon (r1 = pointeur sur FlagSon)
|
|
ldr r2, [r1] ; on affecte à r2 la valeur contenu dans r1
|
|
|
|
SI
|
|
cmp r2, #0 ; si Flag = 0
|
|
bne SINON
|
|
|
|
ALORS ; on passe Flag à 1 + on allume B1
|
|
mov r2, #1
|
|
b FINSI
|
|
|
|
SINON ; sinon on passe Flag à 0 + on éteint B1
|
|
mov r2, #0
|
|
|
|
FINSI
|
|
ldr r1, =FlagSon
|
|
str r2, [r1] ; on stocke la nouvelle valeur de r2 dans r1 (on met à jour FlagSon)
|
|
|
|
pop {PC}
|
|
endp
|
|
|
|
|
|
|
|
END
|