diff --git a/dossier/soft/PjtKEIL_StepSon/Src/GestionSon.s b/dossier/soft/PjtKEIL_StepSon/Src/GestionSon.s index c28a2d0..b60fd8a 100644 --- a/dossier/soft/PjtKEIL_StepSon/Src/GestionSon.s +++ b/dossier/soft/PjtKEIL_StepSon/Src/GestionSon.s @@ -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 \ No newline at end of file diff --git a/dossier/soft/PjtKEIL_StepSon/Src/principal.c b/dossier/soft/PjtKEIL_StepSon/Src/principal.c index 01cd9ae..3442433 100644 --- a/dossier/soft/PjtKEIL_StepSon/Src/principal.c +++ b/dossier/soft/PjtKEIL_StepSon/Src/principal.c @@ -1,9 +1,5 @@ - - #include "DriverJeuLaser.h" - - int main(void) {