74 lines
No EOL
1.8 KiB
ArmAsm
74 lines
No EOL
1.8 KiB
ArmAsm
; Pile par 8 bit
|
|
PRESERVE8
|
|
; instruction set comme ARM set
|
|
; il est principalement sur 16 bit
|
|
THUMB
|
|
|
|
|
|
; ====================== zone de réservation de données, ======================================
|
|
;Section RAM (read only) :
|
|
area mesdata,data,readonly
|
|
|
|
|
|
;Section RAM (read write):
|
|
area maram,data,readwrite
|
|
|
|
; On donne une zone mémoire à VarTime (elle est aligné)
|
|
VarTime dcd 0
|
|
|
|
|
|
; ===============================================================================================
|
|
|
|
;constantes (équivalent du #define en C)
|
|
TimeValue equ 900000
|
|
|
|
|
|
EXPORT Delay_100ms ; la fonction Delay_100ms est rendue publique donc utilisable par d'autres modules.
|
|
|
|
|
|
;Section ROM code (read only) :
|
|
area moncode,code,readonly
|
|
|
|
|
|
|
|
; REMARQUE IMPORTANTE
|
|
; Cette manière de créer une temporisation n'est clairement pas la bonne manière de procéder :
|
|
; - elle est peu précise
|
|
; - la fonction prend tout le temps CPU pour... ne rien faire...
|
|
;
|
|
; Pour autant, la fonction montre :
|
|
; - les boucles en ASM
|
|
; - l'accés écr/lec de variable en RAM
|
|
; - le mécanisme d'appel / retour sous programme
|
|
;
|
|
; et donc possède un intérêt pour débuter en ASM pur
|
|
|
|
|
|
Delay_100ms proc
|
|
; On charge la valeur du poiteur
|
|
|
|
ldr r0,=VarTime
|
|
EXPORT VarTime
|
|
|
|
|
|
ldr r1,=TimeValue
|
|
; On initialise un pointeur sur TimeValue
|
|
str r1,[r0]
|
|
|
|
BoucleTempo
|
|
; On charge la valeur pointer par le pointeur passer en argument
|
|
; R1 à le nombre de boucle qu'il reste à faire (TimeValue)
|
|
ldr r1,[r0]
|
|
; On enlève à r1 1 pour tester la fin de la boucle
|
|
subs r1,#1
|
|
str r1,[r0]
|
|
; si la valeur est non nul on relance la boucle, car pas terminer
|
|
bne BoucleTempo
|
|
; sinon on fini la fonction
|
|
; lr pointe l'endroit qui à appeller la fonction
|
|
; on y retourne à la fin de la fonction
|
|
bx lr
|
|
endp
|
|
|
|
|
|
END
|