1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
| ; --- Routine permettant de convertir les minutes en secondes
cal_tp_res:
; --- Conversion minute - seconde
; --- On charge les minutes dans w et on sauve le tout dans resul
movf mind_0 , w
movwf resul
; --- Effacement de la carry
bcf STATUS , C
; --- On multiplie par 2
rlf resul , f
; --- On multiplie par 4
rlf resul , f
; --- On multiplie par 8
rlf resul , f
; --- On multiplie par 16
rlf resul , f
; --- On soustrait resul par mind_0 afin d'obtenir une multiplication par 15
subwf resul , f
; --- On multiplie par 30
rlf resul , f
; --- On multiplie par 60
rlf resul , f
; --- On stock le resul dans tp_res
movf resul, w
movwf tp_res
clrf resul
; --- Conversion dizaine de minutes - seconde
; --- On charge les minutes dans w et on sauve le tout dans resul
movf mind_1 , w
movwf resul
; --- Effacement de la carry
bcf STATUS , C
; --- On multiplie par 2
rlf resul , f
; --- On multiplie par 4
rlf resul , f
; --- On multiplie par 8
rlf resul , f
; --- On multiplie par 16
rlf resul , f
; --- On soustrait resul par mind_1 afin d'obtenir une multiplication par 15
subwf resul , f
; --- On multiplie par 30
rlf resul , f
; --- On multiplie par 60
rlf resul , f
; --- On stock le resul dans retenue
movf resul, w
movwf retenue
; --- Effacement de la carry
bcf STATUS , C
; --- On multiplie par 2
rlf retenue , f
; --- On multiplie par 4
rlf retenue , f
; --- On additione retenue par resul afin d'obtenir une multiplication par 5 donc par 300 car 60 * 5(= 30
addwf retenue , f
; --- On multiplie par 2 afin d'obtenir une multiplication par 600
rlf retenue , f
; --- On additione resul a tp_res afin d'obtenir la conversion totale des minutes en secondes
movf retenue , w
addwf tp_res , f
clrf retenue
clrf resul
; --- Il suffit maintenant d'ajouter les secondes et les dizaines de secondes afin d'avoir le temps demandé par l'utilisateur en seconde
; --- Ajout des secondes
movf secd_0 , w
addwf tp_res , f
; --- Ajout des dizaines de secondes
movf secd_1 , w
movwf resul
; --- Effacement de la carry
bcf STATUS , C
; --- On multiplie par 2
rlf resul , f
; --- On multiplie par 4
rlf resul , f
; --- On additione resul par secd_1 afin d'obtenir une multiplication par 5
addwf resul , f
; --- On multiplie par 2 afin d'obtenir une multiplication par 10
rlf resul , f
; --- On additione resul dans tp_res
movf resul , w
addwf tp_res , f
; --- On vide toutes les variables utilisés pour les calcules ainsi que w
clrf retenue
clrf resul
clrw
return |
Partager