diff --git a/soft/PjtKEIL_StepDFT/Src/DFT.s b/soft/PjtKEIL_StepDFT/Src/DFT.s index 3f6b5d4..d89973d 100644 --- a/soft/PjtKEIL_StepDFT/Src/DFT.s +++ b/soft/PjtKEIL_StepDFT/Src/DFT.s @@ -10,6 +10,9 @@ ;Section RAM (read write): area maram,data,readwrite +ModuleAuCarre dcd 0 +PartieReelle dcd 0 +PartieIm dcd 0 ; =============================================================================================== @@ -160,7 +163,47 @@ TabSin DCW -6393 ; 62 0xe707 -0.19510 DCW -3212 ; 63 0xf374 -0.09802 +DFT_ModuleAuCarre proc + + push {r4, r5, r6, r7, r8} + + ldr r0, =TabCos + ldr r8, =TabSin + ldr r1, =LeSignal + ldr r6, =PartieReelle + ldr r7, =PartieIm + mov r3, #0 + +debut_boucle + ldrsh r4, [r1,r3, lsl #1];lecture de la valeur du signal à l'adresse r1 décalé de l'index r3 + ldrsh r2, [r0,r3, lsl #1];lecture de la valeur du cos à l'adresse r0 décalé de l'index r3 + + + ;attention format à prendre en compte............................. + + mul r5, r2, r4 ;calcul + ldr r2, [r6] ;lecture de la valeur de la partie réelle + add r2, r5 ; on y ajoute la valeur calculée + strh r2, [r6] ; on store la valeur à l'adresse + + ldrsh r2, [r8,r3, lsl #1];lecture de la valeur du sin + mul r5, r2, r4 ; calcul en reprenant la valeur du signal qui ne change pas dans r4 + ldr r2, [r7];lecture de la valeur de la partie imaginaire + add r2, r5 + strh r2, [r7] + + + + add r3, #1 ;incrémentation de l'index + cmp r3, #64 ;on compare pour sortir de la boucle + bne debut_boucle + +fin_boucle + + pop {r4, r5, r6, r7, r8} + bx lr + endp END \ No newline at end of file