diff --git a/BE-chti C/soft/PjtKEIL_StepDFT/Src/DFT.s b/BE-chti C/soft/PjtKEIL_StepDFT/Src/DFT.s index 3f6b5d4..ffda877 100644 --- a/BE-chti C/soft/PjtKEIL_StepDFT/Src/DFT.s +++ b/BE-chti C/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,9 +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-r10}; sauvegarde des registres dans la pile + mov r2, #0 ;initialisation de la partie imaginaire à zero + mov r3, #0 ;initialisation de la partie relle à zero + mov r7 ,#0 ;initialisation de p(=n*k) à zero + mov r4 ,#0 ;initialisation de l'indice n à zero + ldr r5, =TabCos ; chargement de l'adresse de TabCos dans r5 + ldr r6, =TabSin ; chargement de l'adresse de TabCos dans r5 + + +Sommation + ;Rsom += Signal[i] * TabCos[k*i] + ldrsh r8,[r0, r4, lsl#1] ; chargement du LeSignal[n] dans r8 + ldrsh r9,[r5, r7, lsl #1] ; chargement de TabCos[p] dans r9 + ldrsh r10,[r6, r7, lsl #1] ; chargement de TabSin[p] dans r10 + mul r9, r8, r9 ; multiplication de LeSignal[n] par TabCos[n*k] + mul r10, r8, r10 ; multiplication de LeSignal[n] par TabCos[n*k] + asr r9, #15 ; décalage de 15 bits vers la droite pour rétablir le format 1.15 + asr r10, #15 ; décalage de 15 bits vers la droite pour rétablir le format 1.15 + add r3,r3, r9 ;ajout de la partie réelle au résultat (conservation du format) + add r2,r2, r10 ;ajout de la partie imaginaire au résultat (conservation du format) + + add r7, r1 ; ajout de k à n*k ce qui fait p= (n+1)*k + add r4, r4, #1 ; incrémentation de l'indice n + cmp r4 ,#64 ; comparaison de n à 64 + blt Sommation ; si n<64 on recommence la boucle + + mov r0, r3 ; copie de la partie rélle dans r0 + mov r1, r2 ; copie de la partie rélle dans r1 + + pop{r4-r10} ; restauration des registres depuis la pile + bx lr + endp +