ARM Macro Assembler Page 1 1 00000000 ; Pile par 8 bit 2 00000000 PRESERVE8 3 00000000 ; instruction set comme ARM set 4 00000000 ; il est principalement sur 16 bit 5 00000000 THUMB 6 00000000 7 00000000 8 00000000 ; ====================== zone de réservation de données, ====================================== 9 00000000 ;Section RAM (read only) : 10 00000000 area mesdata,data,readonly 11 00000000 12 00000000 13 00000000 ;Section RAM (read write): 14 00000000 area maram,data,readwrite 15 00000000 16 00000000 ; On donne une zone mémoire à VarTime (elle est aligné) 17 00000000 00000000 VarTime dcd 0 18 00000004 19 00000004 20 00000004 ; ====================================================== ========================================= 21 00000004 22 00000004 ;constantes (équivalent du #define en C) 23 00000004 000DBBA0 TimeValue equ 900000 24 00000004 25 00000004 26 00000004 EXPORT Delay_100ms ; la fonction Delay _100ms est rendue p ublique donc utilis able par d'autres m odules. 27 00000004 28 00000004 29 00000004 ;Section ROM code (read only) : 30 00000004 area moncode,code,readonly 31 00000000 32 00000000 33 00000000 34 00000000 ; REMARQUE IMPORTANTE 35 00000000 ; Cette manière de créer une temporisation n'est clairem ent pas la bonne manière de procéder : 36 00000000 ; - elle est peu précise 37 00000000 ; - la fonction prend tout le temps CPU pour... ne rien faire... 38 00000000 ; 39 00000000 ; Pour autant, la fonction montre : 40 00000000 ; - les boucles en ASM 41 00000000 ; - l'accés écr/lec de variable en RAM 42 00000000 ; - le mécanisme d'appel / retour sous programme 43 00000000 ; 44 00000000 ; et donc possède un intérêt pour débuter en ASM pur 45 00000000 46 00000000 47 00000000 Delay_100ms proc ARM Macro Assembler Page 2 48 00000000 ; On charge la valeur du poiteur 49 00000000 50 00000000 4803 ldr r0,=VarTime 51 00000002 EXPORT VarTime 52 00000002 53 00000002 54 00000002 4904 ldr r1,=TimeValue 55 00000004 ; On initialise un pointeur sur TimeValue 56 00000004 6001 str r1,[r0] 57 00000006 58 00000006 BoucleTempo 59 00000006 ; On charge la valeur pointer par le pointeur passer en argument 60 00000006 ; R1 à le nombre de boucle qu'il reste à faire (TimeValu e) 61 00000006 6801 ldr r1,[r0] 62 00000008 ; On enlève à r1 1 pour tester la fin de la boucle 63 00000008 3901 subs r1,#1 64 0000000A 6001 str r1,[r0] 65 0000000C ; si la valeur est non nul on relance la boucle, car pas terminer 66 0000000C D1FB bne BoucleTempo 67 0000000E ; sinon on fini la fonction 68 0000000E ; lr pointe l'endroit qui à appeller la fonction 69 0000000E ; on y retourne à la fin de la fonction 70 0000000E 4770 bx lr 71 00000010 endp 72 00000010 73 00000010 74 00000010 END 00000000 000DBBA0 Command Line: --debug --xref --diag_suppress=9931 --cpu=Cortex-M3 --apcs=interw ork --depend=.\obj\delay.d -o.\obj\delay.o -I.\RTE\_Simu -IC:\Programdata\Keil\ Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\Core\Include -IC:\Programdata\Keil\Arm\Packs\Ke il\STM32F1xx_DFP\2.3.0\Device\Include --predefine="__EVAL SETA 1" --predefine=" __MICROLIB SETA 1" --predefine="__UVISION_VERSION SETA 534" --predefine="_RTE_ SETA 1" --predefine="STM32F10X_MD SETA 1" --predefine="_RTE_ SETA 1" --list=del ay.lst Src\Delay.s ARM Macro Assembler Page 1 Alphabetic symbol ordering Relocatable symbols mesdata 00000000 Symbol: mesdata Definitions At line 10 in file Src\Delay.s Uses None Comment: mesdata unused 1 symbol ARM Macro Assembler Page 1 Alphabetic symbol ordering Relocatable symbols VarTime 00000000 Symbol: VarTime Definitions At line 17 in file Src\Delay.s Uses At line 50 in file Src\Delay.s At line 51 in file Src\Delay.s maram 00000000 Symbol: maram Definitions At line 14 in file Src\Delay.s Uses None Comment: maram unused 2 symbols ARM Macro Assembler Page 1 Alphabetic symbol ordering Relocatable symbols BoucleTempo 00000006 Symbol: BoucleTempo Definitions At line 58 in file Src\Delay.s Uses At line 66 in file Src\Delay.s Comment: BoucleTempo used once Delay_100ms 00000000 Symbol: Delay_100ms Definitions At line 47 in file Src\Delay.s Uses At line 26 in file Src\Delay.s Comment: Delay_100ms used once moncode 00000000 Symbol: moncode Definitions At line 30 in file Src\Delay.s Uses None Comment: moncode unused 3 symbols ARM Macro Assembler Page 1 Alphabetic symbol ordering Absolute symbols TimeValue 000DBBA0 Symbol: TimeValue Definitions At line 23 in file Src\Delay.s Uses At line 54 in file Src\Delay.s Comment: TimeValue used once 1 symbol 344 symbols in table