Você está na página 1de 3

*

;Contador de 0 a 15 ascendente y descendente. Cambio de sentido al presionar pus


h button
; Switch en GIO012
.global _c_int00
ND .set 50000 ;Constante de retardo
ND2 .set 0x04 ;Constante de retardo
Limpia .set 0x0F7FF ;Constante vaca para el push button
; DIRECCIONES DE REGISTROS
DIR_WDCR .set 07029h ;Direccin del registro de control
WatchDog
DIR_SP .set 00400h ;Parte alta de Stack
DIR_GPAMUX1 .set 0x06F86 ;GPIO A MUX 1 (GIO0-15)
DIR_GPAMUX2 .set 0x06F88 ;GPIO A MUX 2 (GPIO16-31)
DIR_GPADIR .set 0x06F8A ;GPIO A Direccin (GPIO0-31)
DIR_GPBMUX1 .set 0x06F96 ;GPIO B MUX 1 (GPIO32-GPIO34)
DIR_GPBDIR .set 0x06F9A ;GPIO B Direccin (GPIO32-GPIO34)
DIR_GPADAT .set 0x06FC0 ;GPIO A Data (GPIO0-31)
DIR_GPASET .set 0x06FC2 ;GPIO B Set (GPIO0-31)
DIR_GPACLEAR .set 0x06FC4 ;GPIO B Clear (GPIO0-31)
DIR_GPATOGGLE .set 0x06FC6 ;GPIO B Toggle (GPIO-31)
DIR_GPBDAT .set 0x0F6C8 ;GPIO B Data (GPIO32-GPIO34)
DIR_GPBSET .set 0x06FCA ;GPIO B Set (GPIO32-GPIO34)
DIR_GPBCLEAR .set 0x06FCC ;GPIO B Clear (GPIO32-GPIO34)
DIR_GPBTOGGLE .set 0x06FCE ;GPIO B Toggle (GPIO32-GPIO34)
C_WDCR .set 0068h ;Mscara de WD
DIR_GPAPUD .set 0x06F8C ;Pull up
;Cont .word 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0
x0A,0x0B,0x0C,0x0D,0x0E,0x0F
.text
_c_int00
SETC INTM ;Deshabilita INTM
EALLOW ;Habilita escritura a registros
protegidos
MOVL XAR1, #DIR_WDCR
MOV *AR1, #C_WDCR ;Desactiva WatchDog
EDIS
MOV SP,#DIR_SP ;Localiza el Stack
;Configura GPAMUX1 para poner pines como GPIO => MUX 00
EALLOW
MOVL XAR0, #DIR_GPAMUX1
MOV ACC, #0x0000
MOVL *XAR0, ACC
MOVL XAR0, #DIR_GPAPUD
MOV ACC,#0x1000
MOV *XAR0,ACC
;Salidas, LEDS en GPI0 al GPIO3, DIR = 1
;Switch en GPIO12 COMO ENTRADA DIR = 0
MOVL XAR0, #DIR_GPADIR
MOV ACC, #0x000F
MOVL *XAR0, ACC
EDIS
ZAPA
MOVL XAR0,#DIR_GPADAT
MOV AR3,#Limpia
INC_G
;TCLR AH,#12
;MOVB *AR3,AH
; AND *ARO,*AR3
; MOV AH,AR3
; AND *XAR0,AH
; EALLOW
; OUT *(DIR_GPADAT),@0x0F7FF
; EDIS
NEG AL ;Leds en lgica invertida
NOP
NOP
NOP
MOVB *AR0, AL.LSB
NOP
NOP
NOP
NEG AL
; INC AL
LC YOLO ;-----> Subrutina de retardo
ADD AL,#1
; ADD AL,#0x0FF
PREG1
; MOVL XAR,#DIR_GPADAT
MOV AH,*XAR0
TBIT AH,#12
; SB DEC_G,NTC
B DEC_G,TC
NOP
NOP
B INC_G,UNC
DEC_G
; TCLR AH,#12
; MOVB *XAR3,AH
NEG AL ;Leds en lgica invertida
MOVB *AR0, AL.LSB
NEG AL
; INC AL
LC YOLO ;-----> Subrutina de retardo
; ADD AL,#1
ADD AL,#0x0FF
PREG2
; MOVL XAR,#DIR_GPADAT
; TCLR AH,#12
MOV AH,*XAR0
TBIT AH,#12
; SB DEC_G,NTC
B INC_G,TC
NOP
NOP
B DEC_G,UNC
FIN_R
NOP
SB FIN_R,UNC
******Rutina de retardo
YOLO MOV AR2,#ND2
YOLITO
NOP
TARDA MOV AR1,#ND
TARDA_1 NOP
RPT #ND
|| NOP
NOP
BANZ TARDA_1,AR1--
BANZ YOLITO,AR2--
NOP
LRET
.end

Você também pode gostar