1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- 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
-
- TableauIndex dcd 0
- SortieSon dcd 0
-
- import LongueurSon
- import Son
- import PWM_Set_Value_TIM3_Ch3
- ; ===============================================================================================
-
- export CallBackSon
- export SortieSon
- export TableauIndex
-
-
- ;Section ROM code (read only) :
- area moncode,code,readonly
- ; écrire le code ici
-
-
- CallBackSon proc
- ldr r0, =TableauIndex
- ldr r1, [r0] ; r1 = valeur tableauIndex
-
- ldr r2, =LongueurSon
- ldr r2, [r2]
-
- cmp r1, r2
- bne jouer
-
- ; dans le cas où on joue pas, on laisse la valeur à zéro
- mov r0, #0
- ldr r2, =SortieSon
- str r0, [r2]
- bx lr
-
- jouer
-
- ; on incrémente l'index pour la prochaine fois
- add r1, #1
- ; on l'écrit dans l'espace mémoire à l'avance
- str r1, [r0]
-
-
-
- ; puis on décrémente pour récupérer l'index de départ
- sub r1, #1
-
- ; donc r0 est maintenant libre vu que j'ai plus besoin d'aller écrire dans la mémoire l'index
-
- ldr r3, =Son
- ; on multiplie par deux l'index pour avoir le bon décalage qui est sur 8 bits dans ce cas
-
- ; dans r4 on a la valeur de l'index du tableau, je peux donc incrémenter mon index et le store pour libérer r1 dans la suite du code
-
- mov r0, #2
- mul r1, r0
- ldrsh r3, [r3,r1]
-
- ;on met le signal en full positif
- add r3, #32768
-
- ; on fait une règle de trois
- mov r0, #719
- mul r3,r0
- mov r0, #65535
- udiv r3, r0
-
- ;r0 est libre ici car on a fini les calculs
- ldr r0, =SortieSon
- str r3, [r0] ; il faut modifier sortie son pour pouvoir être dans la plage 0;719 au lieu de -32767
- mov r0, r3 ; on met cette fois-ci la valeur du point dans R0 pour respecter l'appel AAPCS
-
- b PWM_Set_Value_TIM3_Ch3
-
- ;bx lr
- endp
-
-
-
-
- END
|