forked from acco/chti23
60 lines
1.2 KiB
ArmAsm
60 lines
1.2 KiB
ArmAsm
|
PRESERVE8
|
|||
|
THUMB
|
|||
|
|
|||
|
|
|||
|
; ====================== zone de r<>servation de donn<6E>es, ======================================
|
|||
|
;Section RAM (read only) :
|
|||
|
area mesdata,data,readonly
|
|||
|
|
|||
|
|
|||
|
;Section RAM (read write):
|
|||
|
area maram,data,readwrite
|
|||
|
|
|||
|
VarTime dcd 0
|
|||
|
|
|||
|
|
|||
|
; ===============================================================================================
|
|||
|
|
|||
|
;constantes (<28>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<6E>re de cr<63>er une temporisation n'est clairement pas la bonne mani<6E>re de proc<6F>der :
|
|||
|
; - elle est peu pr<70>cise
|
|||
|
; - la fonction prend tout le temps CPU pour... ne rien faire...
|
|||
|
;
|
|||
|
; Pour autant, la fonction montre :
|
|||
|
; - les boucles en ASM
|
|||
|
; - l'acc<63>s <20>cr/lec de variable en RAM
|
|||
|
; - le m<>canisme d'appel / retour sous programme
|
|||
|
;
|
|||
|
; et donc poss<73>de un int<6E>r<EFBFBD>t pour d<>buter en ASM pur
|
|||
|
|
|||
|
Delay_100ms proc
|
|||
|
|
|||
|
ldr r0,=VarTime
|
|||
|
|
|||
|
ldr r1,=TimeValue
|
|||
|
str r1,[r0]
|
|||
|
|
|||
|
BoucleTempo
|
|||
|
ldr r1,[r0]
|
|||
|
|
|||
|
subs r1,#1
|
|||
|
str r1,[r0]
|
|||
|
bne BoucleTempo
|
|||
|
|
|||
|
bx lr
|
|||
|
endp
|
|||
|
|
|||
|
|
|||
|
END
|