Guest User

Untitled

a guest
Apr 19th, 2018
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.69 KB | None | 0 0
  1. ; ce programme est pour l'assembleur RealView (Keil)
  2. thumb
  3.  
  4. area myvar, data, readwrite
  5. import the_struct
  6.  
  7. area moncode, code, readonly
  8. export callback
  9.  
  10. E_POS equ 0
  11. E_TAI equ 4
  12. E_SON equ 8
  13. E_RES equ 12
  14. E_PER equ 16
  15. OFFSET equ 32768
  16. TIM3_CCR3 equ 0x4000043C ; adresse registre PWM
  17.  
  18. callback proc
  19. init
  20. ldr r1, =the_struct
  21. ; R1 = ADDR_STRUCT
  22.  
  23. verif_boucle ; Remets index à zéro quand on arrive à taille, et l'incrémente dans le cas contraire
  24. ldr r3, =E_TAI
  25. ldr r2, =E_POS
  26. add r2, r2, r1
  27. ldr r2, [r2] ; R2 contiens l'index actuel
  28. add r3, r3, r1
  29. ldr r3, [r3] ; R3 contiens le nombre d'échantillon
  30. cmp r2, r3 ; On branche sur R3 - R2
  31. bne recup_ech
  32.  
  33. write_zero ; Cette procédure écris 0 sur la sortie
  34. b ret
  35. ;mov r2, #0x0000000
  36. ;ldr r1, =TIM3_CCR3
  37. ;str r2, [r1]
  38. ;b ret
  39.  
  40. recup_ech ; Cette procédure met dans R4 l'échantillon
  41. ldr r3, =E_SON
  42. add r3, r1
  43. ldr r3, [r3] ; R3 = addresse du tableau
  44. ldr r2, =E_POS
  45. add r2, r1
  46. ldr r2, [r2] ; R2 = index du tableau
  47. add r3, r2 ; R3 = addresse de l'échantillon
  48. ldrsh r4, [r3]
  49. ; R4 = ECH
  50.  
  51. traitement ; Cette procédure raméne l'échantillon entre 0 et MAX
  52. ldr r2, =OFFSET
  53. add r4, r2 ; On remonte l'échantillon
  54. ldr r2, =E_RES
  55. add r2, r1 ; R2 contiens l'adresse de la pleine échelle
  56. ldr r2, [r2]
  57. mul r4, r2 ; R4 = R4 * MAX
  58. lsr r4, #17 ; R4 >> 16
  59. ; R4 = ECH_CORRIG
  60.  
  61. stockage ; Cette procédure stocke l'échantillon sur la PWM
  62. 00 ldr r2, =TIM3_CCR3
  63. str r4, [r2]
  64. ; R4 a été stocké en TIM3_CCR3
  65.  
  66. incr
  67. ldr r2, =E_POS
  68. add r2, r1
  69. ldr r2, [r2]
  70. add r2, #0x0002
  71.  
  72. store_index ; Cette procédure incrémente la valeur de l'index
  73. ldr r3, =E_POS
  74. add r3, r3, r1
  75. str r2, [r3]
  76. b ret
  77.  
  78. ret
  79. bx lr ; dernière instruction de la fonction
  80. endp
  81.  
  82. end
Add Comment
Please, Sign In to add comment