assembly_project/FonctionEtape.asm

120 lines
No EOL
3.9 KiB
NASM
Raw Blame History

; Language: Assembly
;***************************************************************************
THUMB
REQUIRE8
PRESERVE8
;**************************************************************************
; Fichier Vierge.asm
; Auteur : V.MAHOUT
; Date : 12/11/2013
;**************************************************************************
;***************IMPORT/EXPORT**********************************************
EXPORT Eteint_LED
EXPORT Allume_LED
EXPORT Inverse_LED
;**************************************************************************
;***************CONSTANTES*************************************************
include REG_UTILES.inc
include LUMIERES.inc
;**************************************************************************
;***************VARIABLES**************************************************
AREA MesDonnees, data, readwrite
;**************************************************************************
;**************************************************************************
;***************CODE*******************************************************
AREA moncode, code, readonly
;**************************************************************************
;########################################################################
; Proc<6F>dure ????
;########################################################################
;
; Param<61>tre entrant : ???
; Param<61>tre sortant : ???
; Variables globales : ???
; Registres modifi<66>s : ???
;------------------------------------------------------------------------
;*******************************************************************************
; On eteint la LED
;*******************************************************************************
Eteint_LED PROC
PUSH {R12,R0} ;On stocke R12 dans R0
LDR R12,=GPIOBASEB ;On recup<75>re l'adresse de base
MOV R5,#(0x01 << 10) ;1 d<>cal<61> de 10 dans R5
STRH R5,[R12,#OffsetReset] ;On stocke la variable R5 <20> l'adresse 0x0X40010C14 (reset)
POP {R12,R0} ;On restitue R12 dans R0
BX LR ;Retour
;LDR R5,[R12,#0x0C] ;Valeur <20> l'adresse de l'output
;AND R5, R5,#~(0x01 << 10) ;OU LOGIQUE pour calculer la valeur a mettre dans l'output
;STRH R5,[R12,#0x0C] ;Etat du port B (R5) stock<63> dans l'output
ENDP
;*******************************************************************************
; On allume la LED
;*******************************************************************************
Allume_LED PROC
PUSH {R12,R0} ;On stocke R12 dans R0
LDR R12,=GPIOBASEB ;On recup<75>re l'adresse de base
MOV R5,#(0x01 << 10) ;1 d<>cal<61> de 10 dans R5
STRH R5,[R12,#OffsetSet] ;On stocke la variable R5 <20> l'adresse 0x0X40010C10 (set)
POP {R12,R0} ;On restitue R12 dans R0
BX LR ;Retour
;LDR R5,[R12,#0x0C] ;Valeur <20> l'adresse de l'output
;ORR R5, R5,#(0x01 << 10) ;OU LOGIQUE pour calculer la valeur a mettre dans l'output
;STRH R5,[R12,#0x0C] ;Etat du port B (R5) stock<63> dans l'output
ENDP
;*******************************************************************************
; On inverse la LED (besoin de R0)
;*******************************************************************************
Inverse_LED PROC
PUSH {R12,R5} ;R12 et R5 sont mis dans la pile
LDR R12,=GPIOBASEB ;On recup<75>re l'adresse de base
LDR R1,=isLedOn ;On recup<75>re l'adresse de isLedOn
MOV R5,#(0x01 << 10) ;1 d<>cal<61> de 10 dans R5
CMP R0,#0 ;Si R3=0 (default) alors on allume, sinon on eteint
BNE Eteint
Allume
STRH R5,[R12,#OffsetSet] ;On stocke la variable R5 <20> l'adresse 0x0X40010C10 (set)
MOV R0,#1; ;On remet la variable <20> 1
B Fin ;Retour
Eteint
STRH R5,[R12,#OffsetReset] ;On stocke la variable R5 <20> l'adresse 0x0X40010C14 (reset)
MOV R0,#0; ;On remet la variable <20> 0
B Fin
Fin
POP {R12,R5} ;On restitue R12
BX LR ;Retour
ENDP
;**************************************************************************
END