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