forked from acco/chti23
Fin séance CHTI ASM 3
This commit is contained in:
parent
4550b7bcf7
commit
6c2fdcf46f
2 changed files with 31 additions and 23 deletions
|
@ -1,6 +1,7 @@
|
|||
PRESERVE8
|
||||
THUMB
|
||||
|
||||
IMPORT Son
|
||||
IMPORT LongueurSon
|
||||
|
||||
; ====================== zone de réservation de données, ======================================
|
||||
;Section RAM (read only) :
|
||||
|
@ -13,13 +14,12 @@
|
|||
FlagSon dcb 0
|
||||
EXPORT FlagSon
|
||||
|
||||
SortieSon dcw 0
|
||||
SortieSon dcd 0
|
||||
EXPORT SortieSon
|
||||
|
||||
Index dcw 0
|
||||
EXPORT Index
|
||||
|
||||
;LDRD{cond} Rt, Rt2, [Rn, ±Rm] ; register offset, doubleword ; ARM only <-- INSTRUCTION A UTILISER
|
||||
; ===============================================================================================
|
||||
|
||||
;Exportation de la fonction callbackson()
|
||||
|
@ -32,30 +32,42 @@ Index dcw 0
|
|||
; écrire le code ici
|
||||
|
||||
|
||||
|
||||
callbackson proc
|
||||
|
||||
push{lr}
|
||||
ldr r1, =FlagSon ; on affecte à r1 l'adresse de FlagSon (r1 = pointeur sur FlagSon)
|
||||
ldr r2, [r1] ; on affecte à r2 la valeur contenu dans r1
|
||||
push{r4}
|
||||
ldr r0, =SortieSon ; r0 = adresse de SortieSon
|
||||
ldr r1, [r0] ; r1 = valeur de SortieSon
|
||||
|
||||
ldr r2, =Index ; r2 = adresse de Index
|
||||
ldr r3, [r2] ; r3 = valeur de Index
|
||||
|
||||
SI
|
||||
cmp r2, #0 ; si Flag = 0
|
||||
bne SINON
|
||||
ldr r0, =LongueurSon
|
||||
ldr r4, [r0] ; r4 = LongueurSon
|
||||
cmp r3, r4
|
||||
bgt FINSI
|
||||
ALORS
|
||||
ldr r2, =Son
|
||||
;Calcul de SortieSon
|
||||
ldrsh r1, [r2,r3,lsl #1]
|
||||
add r1, #32768
|
||||
mov r2,#719
|
||||
mul r1,r2
|
||||
asr r1, #16
|
||||
;MAJ de SortieSon
|
||||
ldr r0, =SortieSon
|
||||
strh r1, [r0]
|
||||
;incrémente Index
|
||||
add r3, #1
|
||||
ldr r2, =Index
|
||||
str r3, [r2]
|
||||
|
||||
ALORS ; on passe Flag à 1 + on allume B1
|
||||
mov r2, #1
|
||||
b FINSI
|
||||
|
||||
SINON ; sinon on passe Flag à 0 + on éteint B1
|
||||
mov r2, #0
|
||||
|
||||
FINSI
|
||||
ldr r1, =FlagSon
|
||||
str r2, [r1] ; on stocke la nouvelle valeur de r2 dans r1 (on met à jour FlagSon)
|
||||
|
||||
|
||||
pop{r4}
|
||||
pop {PC}
|
||||
endp
|
||||
|
||||
|
||||
|
||||
END
|
|
@ -1,9 +1,5 @@
|
|||
|
||||
|
||||
#include "DriverJeuLaser.h"
|
||||
|
||||
|
||||
|
||||
int main(void)
|
||||
{
|
||||
|
||||
|
|
Loading…
Reference in a new issue