Professional Documents
Culture Documents
;***********************************************************
; ENCABEZADO DE PROGRAMA
;***********************************************************
.equ __30f4013,1
.include "p30f4013.inc"
;***********************************************************
; CONFIGURACION DEL OSCILADOR, DEL RESET, STACK Y WATCHDOG
;***********************************************************
config __FOSC,CSW_FSCM_OFF&XT_PLL4 ;use cristal oscilador con el 4x PLL
config __FWDT,WDT_OFF ;Desabilitado Watchdog Timer
config __FBORPOR,PBOR_ON&MCLR_EN
config __FGS,CODE_PROT_OFF ;Desabilitado protecion de codigo
;***********************************************************
; GENERACION DE ETIQUETAS
.equ cont,#0x0810 ; VARIABLE cont en puntero #0x0810
.equ cont1,#0x0812 ; VARIABLE cont1 en puntero #0x0812
.global xx ; Etiqueta xx
.global yy ; Etiqueta yy
.global zz ; Etiqueta zz
.global __reset ; Activando función RESET
.text ; Inicio de programa
;***********************************************************
;PROGRAMA PRINCIPAL
;***********************************************************
__reset:
goto main ; Salta a main
.org 100 ; Inicia programa en registro de memoria 100
main:
; mov #_SP_init,W15 ;inicializa el SP
; mov #_SPLIM_init,W0
; mov W0,SPLIM
nop
;***********************************************************
; CONFIGURACION DE PUERTOS
;***********************************************************
detener:
call zz ; Llama a subrutina zz
bra bucle ; Regresa a bucle
giro:
call xx ; Llama a subrutina xx
call yy ; Llama a subrutina yy
bra bucle ; Regresa a bucle
;***********************************************
;RUTINAS PARA XX, YY Y ZZ
;***********************************************
xx:
mov #0x0001,W1 ; Guardamos el literal #0x0001 en W1
mov W1,PORTB ; Movemos W1 a PORTB
call delay ; Salta a Delay
return
yy:
mov #0x0002,W1 ; Guardamos el literal #0x0002 en W1
mov W1,PORTB ; Movemos W1 a PORTB
call delay ; Salta a Delay
return
zz:
mov #0x0000,W1 ; Guardamos el literal #0x0000 en W1
mov W1,PORTB ; Movemos W1 a PORTB
return
;***********************************************
;RUTINAS PARA RETARDOS
;***********************************************
delay: ;Subrutina de Retardo en dos lazos
mov # 0xffff ,W2
mov W2,cont
YY:
mov # 0x001F, W1
mov W1,cont1
XX:
dec cont1 ; cont1-1=cont1
bra NZ,XX
BTSC PORTD,#0 ; chequear interruptor salta si es cero o cerrado
bra bucle
dec cont ; cont-1=cont
bra NZ,YY
return
;****************************************************
.end