grpE_RAMOUCHE_CASEAU/dossier/soft/PjtKEIL_StepSon/Src/GestionSon.s

78 lines
No EOL
1.3 KiB
ArmAsm

PRESERVE8
THUMB
;include DriverJeuLaser.inc
IMPORT Son
IMPORT LongueurSon
IMPORT PWM_Set_Value_TIM3_Ch3
; ====================== 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 dcd 0
EXPORT SortieSon
Index dcw 0
EXPORT Index
; ===============================================================================================
;Exportation de la fonction callbackson()
EXPORT callbackson
;Section ROM code (read only) :
area moncode,code,readonly
; écrire le code ici
callbackson proc
push{lr}
push{r4}
ldr r0, =SortieSon ; r0 = adresse de SortieSon
ldr r1, [r0] ; r1 = valeur de SortieSon
ldr r2, =Index ; r2 = adresse de Index
ldr r3, [r2] ; r3 = valeur de Index
SI
ldr r0, =LongueurSon
ldr r4, [r0] ; r4 = LongueurSon
cmp r3, r4
bgt FINSI
ALORS
ldr r2, =Son
;Calcul de SortieSon
ldrsh r1, [r2,r3,lsl #1]
add r1, #32768
mov r2,#719
mul r1,r2
asr r1, #16
;MAJ de SortieSon
ldr r0, =SortieSon
strh r1, [r0]
;incrémente Index
add r3, #1
ldr r2, =Index
str r3, [r2]
;Appel de la fonction modifiant le rapport cyclique
mov r0,r1
bl PWM_Set_Value_TIM3_Ch3
FINSI
pop{r4}
pop {PC}
endp
END