Code source pour le BE-CHTI de l'année 2020-2021
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

GestionSon.s 2.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. PRESERVE8
  2. THUMB
  3. ; ====================== zone de réservation de données, ======================================
  4. ;Section RAM (read only) :
  5. area mesdata,data,readonly
  6. ;Section RAM (read write):
  7. area maram,data,readwrite
  8. TableauIndex dcd 0
  9. SortieSon dcd 0
  10. import LongueurSon
  11. import Son
  12. import PWM_Set_Value_TIM3_Ch3
  13. ; ===============================================================================================
  14. export CallBackSon
  15. export SortieSon
  16. export TableauIndex
  17. ;Section ROM code (read only) :
  18. area moncode,code,readonly
  19. ; écrire le code ici
  20. CallBackSon proc
  21. ldr r0, =TableauIndex
  22. ldr r1, [r0] ; r1 = valeur tableauIndex
  23. ldr r2, =LongueurSon
  24. ldr r2, [r2]
  25. cmp r1, r2
  26. bne jouer
  27. ; dans le cas où on joue pas, on laisse la valeur à zéro
  28. mov r0, #0
  29. ldr r2, =SortieSon
  30. str r0, [r2]
  31. bx lr
  32. jouer
  33. ; on incrémente l'index pour la prochaine fois
  34. add r1, #1
  35. ; on l'écrit dans l'espace mémoire à l'avance
  36. str r1, [r0]
  37. ; puis on décrémente pour récupérer l'index de départ
  38. sub r1, #1
  39. ; donc r0 est maintenant libre vu que j'ai plus besoin d'aller écrire dans la mémoire l'index
  40. ldr r3, =Son
  41. ; on multiplie par deux l'index pour avoir le bon décalage qui est sur 8 bits dans ce cas
  42. ; 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
  43. mov r0, #2
  44. mul r1, r0
  45. ldrsh r3, [r3,r1]
  46. ;on met le signal en full positif
  47. add r3, #32768
  48. ; on fait une règle de trois
  49. mov r0, #719
  50. mul r3,r0
  51. mov r0, #65535
  52. udiv r3, r0
  53. ;r0 est libre ici car on a fini les calculs
  54. ldr r0, =SortieSon
  55. str r3, [r0] ; il faut modifier sortie son pour pouvoir être dans la plage 0;719 au lieu de -32767
  56. mov r0, r3 ; on met cette fois-ci la valeur du point dans R0 pour respecter l'appel AAPCS
  57. b PWM_Set_Value_TIM3_Ch3
  58. ;bx lr
  59. endp
  60. END