chti23/soft/PjtKEIL_StepSon/Src/GestionSon.s
2023-04-19 12:34:57 +02:00

77 lines
No EOL
1.5 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
SortieSon dcw 0
Index dcd 0x00000000
; ===============================================================================================
EXPORT CallbackSon
EXPORT SortieSon
EXPORT Index
EXTERN Son
EXTERN LongueurSon
EXPORT PWM_Set_Value_TIM3_Ch3
INCLUDE ../Driver/DriverJeuLaser.inc
;Section ROM code (read only) :
area moncode,code,readonly
; écrire le code ici
CallbackSon proc
push {lr}
ldr r0, =SortieSon
ldr r1, =Son
ldr r2, =Index
ldr r3, =LongueurSon
push {r4}
push {r5}
push {r6}
push {r7}
push {r8}
push {r9}
push {r10}
push {r11}
ldr r4, [r2] ;on stocke la valeur de l'index dans r2.
ldr r10, [r2]
ldr r11, [r3]
cmp r10, r11
bne notEqual
bx lr
notEqual
mov r9, #2
mul r4, r9
ldrsh r5, [r1, r4] ;on stocke la valeur de Son[index] dans r5;
ldr r6, [r0] ; on stocke la valeur de SortieSon dans r6
mov r7, #360
mov r8, #32768
mul r5, r7
sdiv r5, r8
adds r5, #360
strh r5, [r0] ; on stocke la valeur calculee dans r0
adds r10, #1; on incremente r4 qui correspond à la valeur de l'index
str r10, [r2]
pop {r11}
pop {r10}
pop {r9}
pop {r8}
pop {r7}
pop {r6}
pop {r5}
pop {r4}
bl PWM_Set_Value_TIM3_Ch3
pop {pc}
ENDFUNC
END