Bonjour à tous,
Ce que je poste aujourd'hui n'est pas un problème mais plutôt une demande sur l'optimisation du code comme expliqué dans le sujet. Je me suis mis à l'assembleur depuis peu (mais j'ai eu une formation durant mon cursus scolaire). L'optimisation que je souhaiterais faire et la suivante :
Dans mon problème, j'utilise un timer pour setter une variable et passer à l'étape d'après de ma machine à état. Cela fait appel à plusieurs sous-routines d'interruptions :*
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 BTFSS F_Deb_Timer1 ;Test si Debordement du Timer1 $-1 ;Pas de Debordement, attente du debordement BCF F_Deb_Timer1 ;Debordement du timer Mise a 1 du Flag_Db_Timer1Sachant que je ne peux pas tester le flag du timer directement dans mon programme, puisqu' il passera alors dans l'interruption et remettra le flag à 0, et je resterai alors bloqué a $-1.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Interrupts: ;Interruption Timer1 BANKSEL PIE1 BTFSC PIE1,TMR1IE CALL Timer1_interrupt ... Timer1_interrupt: BANKSEL PIR1 BTFSS PIR1,TMR1IF ; Interruption Timer1? RETURN BCF PIR1,TMR1IF ; RAZ du FLag d'interrupt Timer1 BTFSC F_SLow_Start_State CALL Warmup_interrupt BTFSC F_Startup_State CALL Startup_interrupt RETURN Startup_interrupt: bsf F_Deb_Timer1 RETURN
Y a-t-il une autre manière de faire ?
Je vous remercie de vos réponses.
Partager