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.

Delay.s 1.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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. VarTime dcd 0 ; retournera une adresse où sera stocké le zéro
  9. EXPORT VarTime
  10. ; ===============================================================================================
  11. ;constantes (équivalent du #define en C)
  12. TimeValue equ 900000 ; le compilateur va remplacer simplement timevalue par le nombre
  13. EXPORT Delay_100ms ; la fonction Delay_100ms est rendue publique donc utilisable par d'autres modules.
  14. ;Section ROM code (read only) :
  15. area moncode,code,readonly
  16. ; REMARQUE IMPORTANTE
  17. ; Cette manière de créer une temporisation n'est clairement pas la bonne manière de procéder :
  18. ; - elle est peu précise
  19. ; - la fonction prend tout le temps CPU pour... ne rien faire...
  20. ;
  21. ; Pour autant, la fonction montre :
  22. ; - les boucles en ASM
  23. ; - l'accés écr/lec de variable en RAM
  24. ; - le mécanisme d'appel / retour sous programme
  25. ;
  26. ; et donc possède un intérêt pour débuter en ASM pur
  27. Delay_100ms proc
  28. ldr r0,=VarTime
  29. ldr r1,=TimeValue
  30. str r1,[r0]
  31. BoucleTempo
  32. ; on s'occupe de décrémenter le compteur de TimeValue à zéro
  33. ldr r1,[r0]
  34. subs r1,#1
  35. str r1,[r0]
  36. bne BoucleTempo
  37. bx lr
  38. endp
  39. END