93 lines
No EOL
2.5 KiB
NASM
93 lines
No EOL
2.5 KiB
NASM
;***************************************************************************
|
|
THUMB
|
|
REQUIRE8
|
|
PRESERVE8
|
|
|
|
;**************************************************************************
|
|
; Fichier Vierge.asm
|
|
; Auteur : V.MAHOUT
|
|
; Date : 12/11/2013
|
|
;**************************************************************************
|
|
|
|
;***************IMPORT/EXPORT**********************************************
|
|
|
|
EXPORT Set_SCLK
|
|
EXPORT Reset_SCLK
|
|
EXPORT DriverGlobal
|
|
|
|
;**************************************************************************
|
|
|
|
|
|
|
|
;***************CONSTANTES*************************************************
|
|
|
|
include REG_UTILES.inc
|
|
|
|
;**************************************************************************
|
|
|
|
|
|
;***************VARIABLES**************************************************
|
|
AREA MesDonnees, data, readwrite
|
|
;**************************************************************************
|
|
|
|
|
|
Barette1 DCB 0,1,0
|
|
DCB 0,1,0
|
|
DCB 0,1,0
|
|
DCB 0,1,0
|
|
DCB 0,1,0
|
|
DCB 0,1,0
|
|
DCB 0,1,0
|
|
|
|
|
|
|
|
;**************************************************************************
|
|
|
|
|
|
|
|
;***************CODE*******************************************************
|
|
AREA moncode, code, readonly
|
|
;**************************************************************************
|
|
|
|
Set_SCLK PROC
|
|
PUSH {R12,R0} ;On stocke R12 dans R0
|
|
LDR R12,=GPIOBASEA ;On recupère l'adresse de base
|
|
LDR R5,[R12,#MaskSclk] ;Valeur à l'adresse de l'output
|
|
ORR R5, R5,#(0x01 << 5) ;OU LOGIQUE pour calculer la valeur a mettre dans l'output
|
|
STRH R5,[R12,#0x0C] ;Etat du port B (R5) stocké dans l'output
|
|
BX LR ;Retour
|
|
|
|
ENDP
|
|
|
|
Reset_SCLK PROC
|
|
PUSH {R12,R0} ;On stocke R12 dans R0
|
|
LDR R12,=GPIOBASEB ;On recupère l'adresse de base
|
|
LDR R5,[R12,#MaskSclk] ;Valeur à l'adresse de l'SCLK
|
|
AND R5, R5,#~(0x01 << 5) ;OU LOGIQUE pour calculer la valeur a mettre dans l'output
|
|
STRH R5,[R12,#0x0C] ;Etat du port B (R5) stocké dans l'output
|
|
BX LR ;Retour
|
|
|
|
ENDP
|
|
|
|
;****************************************************************************
|
|
;R6 = NBLed
|
|
;R7 = *ValCourante
|
|
;R8 = ValCourante[NBLed]
|
|
;****************************************************************************
|
|
DriverGlobal PROC
|
|
BL Set_SCLK;
|
|
MOV R6, #0;
|
|
WHILE_NBLED
|
|
;Pour NbLed = 1 à 48
|
|
LDR R7,=Barette1 ;On recupère l'adresse de base
|
|
LDRB R8,[R7,R6] ;R8 = ValCourante[...NBLed]
|
|
|
|
LSL R8,#24 ;ValCourante[NBLed]<<24
|
|
|
|
ADD R6, R6, #1 ;On incrémente R6
|
|
CMP R6, #47 ; SI R6==47 alors on arrête la boucle
|
|
BNE WHILE_NBLED
|
|
ENDP
|
|
|
|
;**************************************************************************
|
|
END |