diff --git a/soft/PjtKEIL_StepDFT/Src/DFT.s b/soft/PjtKEIL_StepDFT/Src/DFT.s index 3f6b5d4..063a11c 100644 --- a/soft/PjtKEIL_StepDFT/Src/DFT.s +++ b/soft/PjtKEIL_StepDFT/Src/DFT.s @@ -2,7 +2,7 @@ THUMB -; ====================== zone de réservation de données, ====================================== +; ====================== zone de réservation de données, ====================================== ;Section RAM (read only) : area mesdata,data,readonly @@ -19,8 +19,43 @@ ;Section ROM code (read only) : area moncode,code,readonly -; écrire le code ici +; écrire le code ici +export DFT_ModuleAuCarre + +DFT_ModuleAuCarre proc + push {r4, r5, r6, r8, r9, r10} ; + eor r2, r2 ; partie imaginaire = 0 + eor r3, r3 ; partie reelle = 0 + eor r7, r7 ; + eor r4, r4 ; + ldr r5, =TabCos + ldr r6, =TabSin + +SumLoop + ldrsh r8, [r0, r4, lsl #1] ; + + ldrsh r9, [r5, r7, lsl #1] ; + mul r9, r8, r9 + asr r9, #15 ; + add r3, r3, r9 + + ;ldrsh r10, [r6, r7, lsl #1] ; + ;mul r10, r8, r10 + ;asr r10, #15 ; la virgule est fixe + ;add r2, r2, r10 + + add r7, r1 ; + add r4, r4, #1 ; ++n + cmp r4, #64 + bcc SumLoop ; if n < 64 refaire + + + mov r0, r3 ; partie reelle + + pop {r4, r5, r6, r8, r9, r10} + bx lr + endp