119 lines
No EOL
3.8 KiB
NASM
119 lines
No EOL
3.8 KiB
NASM
;***************************************************************************
|
|
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
|
|
|
|
;**************************************************************************
|
|
|
|
|
|
;***************VARIABLES**************************************************
|
|
AREA MesDonnees, data, readwrite
|
|
;**************************************************************************
|
|
|
|
|
|
|
|
;**************************************************************************
|
|
|
|
|
|
|
|
;***************CODE*******************************************************
|
|
AREA moncode, code, readonly
|
|
;**************************************************************************
|
|
|
|
|
|
|
|
|
|
|
|
;########################################################################
|
|
; Procédure ????
|
|
;########################################################################
|
|
;
|
|
; Paramètre entrant : ???
|
|
; Paramètre sortant : ???
|
|
; Variables globales : ???
|
|
; Registres modifiés : ???
|
|
;------------------------------------------------------------------------
|
|
|
|
|
|
;*******************************************************************************
|
|
; On eteint la LED
|
|
;*******************************************************************************
|
|
Eteint_LED PROC
|
|
|
|
PUSH {R12,R0} ;On stocke R12 dans R0
|
|
LDR R12,=GPIOBASEB ;On recupère l'adresse de base
|
|
MOV R5,#(0x01 << 10) ;1 décalé de 10 dans R5
|
|
STRH R5,[R12,#OffsetReset] ;On stocke la variable R5 à l'adresse 0x0X40010C14 (reset)
|
|
POP {R12,R0} ;On restitue R12 dans R0
|
|
BX LR ;Retour
|
|
;LDR R5,[R12,#0x0C] ;Valeur à 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é dans l'output
|
|
ENDP
|
|
|
|
;*******************************************************************************
|
|
; On allume la LED
|
|
;*******************************************************************************
|
|
Allume_LED PROC
|
|
|
|
PUSH {R12,R0} ;On stocke R12 dans R0
|
|
LDR R12,=GPIOBASEB ;On recupère l'adresse de base
|
|
MOV R5,#(0x01 << 10) ;1 décalé de 10 dans R5
|
|
STRH R5,[R12,#OffsetSet] ;On stocke la variable R5 à l'adresse 0x0X40010C10 (set)
|
|
POP {R12,R0} ;On restitue R12 dans R0
|
|
BX LR ;Retour
|
|
;LDR R5,[R12,#0x0C] ;Valeur à 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é dans l'output
|
|
|
|
ENDP
|
|
|
|
;*******************************************************************************
|
|
; On inverse la LED (besoin de R0)
|
|
;*******************************************************************************
|
|
Inverse_LED PROC
|
|
PUSH {R12,R0} ;On stocke R12 dans R0
|
|
LDR R12,=GPIOBASEB ;On recupère l'adresse de base
|
|
MOV R5,#(0x01 << 10) ;1 décalé de 10 dans R5
|
|
CMP R0,#0 ;Si R3=0 (default) alors on allume, sinon on eteint
|
|
;BEQ Allume
|
|
;B Eteint
|
|
BNE Eteint
|
|
Allume
|
|
STRH R5,[R12,#OffsetSet] ;On stocke la variable R5 à l'adresse 0x0X40010C10 (set)
|
|
MOV R0,#1; ;On remet la variable à 1
|
|
B Fin ;Retour
|
|
Eteint
|
|
STRH R5,[R12,#OffsetReset] ;On stocke la variable R5 à l'adresse 0x0X40010C14 (reset)
|
|
MOV R0,#0; ;On remet la variable à 0
|
|
B Fin
|
|
|
|
|
|
Fin
|
|
POP {R12,R0} ;On restitue R12 dans R0
|
|
BX LR ;Retour
|
|
|
|
ENDP
|
|
|
|
;**************************************************************************
|
|
END |