forked from acco/chti23
121 lines
No EOL
1.5 KiB
ArmAsm
121 lines
No EOL
1.5 KiB
ArmAsm
PRESERVE8
|
|
THUMB
|
|
|
|
|
|
|
|
|
|
; ====================== zone de réservation de données, ======================================
|
|
;Section RAM (read only) :
|
|
area mesdata,data,readonly
|
|
|
|
|
|
;Section RAM (read write):
|
|
area maram,data,readwrite
|
|
|
|
|
|
|
|
; ===============================================================================================
|
|
|
|
include ../Driver/DriverJeuLaser.inc
|
|
export CallbackSon
|
|
export SortieSon
|
|
extern LongueurSon
|
|
extern Son
|
|
export StartSon
|
|
|
|
Index DCD 0
|
|
export Index
|
|
SortieSon DCW 0
|
|
|
|
;Section ROM code (read only) :
|
|
area moncode,code,readonly
|
|
; écrire le code ici
|
|
|
|
|
|
|
|
|
|
CallbackSon proc
|
|
|
|
|
|
|
|
ldr r0,=Index
|
|
ldr r1,[r0]
|
|
ldr r2,=Son
|
|
ldr r3,LongueurSon
|
|
|
|
push {r4}
|
|
push {r5}
|
|
push {r6}
|
|
push {r7}
|
|
mov r4, #2
|
|
mul r3,r4
|
|
|
|
|
|
ldr r7,[r0] ; comparaison de la valeur de l'index pour savoir si c'est la fin
|
|
cmp r3,r7
|
|
beq FinIndex
|
|
|
|
cmp r1,r3
|
|
ble notEqual
|
|
|
|
notEqual
|
|
|
|
|
|
ldrsh r5,[r2,r1]
|
|
|
|
|
|
mov r4,#32768
|
|
add r5,r5,r4
|
|
mov r4,#719
|
|
mul r5,r4
|
|
mov r4,#65535
|
|
udiv r5,r4
|
|
ldr r6,=SortieSon
|
|
|
|
strh r5,[r6]
|
|
|
|
push {r1}
|
|
push {lr}
|
|
push {r0}
|
|
mov r0,r5
|
|
bl PWM_Set_Value_TIM3_Ch3
|
|
pop {r0}
|
|
pop {lr}
|
|
pop {r1}
|
|
|
|
add r1, #2
|
|
|
|
str r1,[r0]
|
|
|
|
pop {r7}
|
|
pop {r6}
|
|
pop {r5}
|
|
pop {r4}
|
|
|
|
bx lr
|
|
|
|
|
|
|
|
ENDFUNC
|
|
|
|
StartSon proc
|
|
ldr r0, =Index
|
|
mov r2,#0
|
|
str r2,[r0]
|
|
bx lr
|
|
endp
|
|
|
|
|
|
|
|
FinIndex
|
|
push {r8}
|
|
mov r8,#-1
|
|
str r8,[r0]
|
|
pop {r8}
|
|
pop {r7}
|
|
pop {r6}
|
|
pop {r5}
|
|
pop {r4}
|
|
bx lr
|
|
endp
|
|
END
|