LIST P=16F628A
include "P16F628A.inc"
errorlevel -302 ;Sin advertencias de Bancos
__CONFIG _CP_OFF & _LVP_OFF & _BODEN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT
;****************************************************************************
;
; DEFINICION DE ETIQUETAS Y VARIABLES
;
;****************************************************************************
RA0 EQU 0 ;RA0
RA1 EQU 1 ;RA1
RA2 EQU 2 ;RA2
RA3 EQU 3 ;RA3
RA4 EQU 4 ;RA4
Ret00 EQU 0x20
Ret01 EQU 0x21
;****************************************************************************
;
; +++++++++++++ ASIGNACION DE MEMORIA DE PROGRAMA ++++++++++++++
;
;****************************************************************************
ORG 0x000 ;Vector de reset del PIC16F628A
CLRF PCLATH
GOTO INICIAR
#define BANK0 banksel 0x00 ;Select Bank0
#define BANK1 banksel 0x80 ;Select Bank1
#define BANK2 banksel 0x100 ;Select Bank2
#define BANK3 banksel 0x180 ;Select Bank3
INICIAR
MOVLW 0x07 ;Comparador
MOVWF CMCON ;deshabilitado
CLRF T1CON
BANK1 ;Selecciona banco 1
BSF PCON, OSCF ;Oscilador interno a 4 MHz
MOVLW 0x20 ;RA5 entrada solamente...
MOVWF TRISA
MOVLW 0xFF
MOVFW TRISB ;PORTB entradas
CLRF VRCON ;VRef apagado
CLRF INTCON
BANK0 ;Selecciona banco 0
PR
BSF PORTA, RA4
MOVLW 0xFF
CALL RETARDOS
MOVLW 0xFF
CALL RETARDOS
MOVLW 0xFF
CALL RETARDOS
MOVLW 0xFF
CALL RETARDOS
MOVLW 0xFF
CALL RETARDOS
BSF PORTA, RA2 ;ACÁ SE ME APAGA RA4!!!!!!!!!!!!!!!!
MOVLW 0xFF
CALL RETARDOS
MOVLW 0xFF
CALL RETARDOS
MOVLW 0xFF
CALL RETARDOS
MOVLW 0xFF
CALL RETARDOS
MOVLW 0xFF
CALL RETARDOS
BCF PORTA, RA2
MOVLW 0xFF
CALL RETARDOS
MOVLW 0xFF
CALL RETARDOS
MOVLW 0xFF
CALL RETARDOS
MOVLW 0xFF
CALL RETARDOS
MOVLW 0xFF
CALL RETARDOS
GOTO PR
;*****************************************************************************
;
; 100 Rutina para generar un Retardo dado por el valor de W RETARDO
;
;*****************************************************************************
RETARDO
MOVWF Ret00 ;Contador de retardo
RETARDO0
NOP
NOP
DECFSZ Ret00, 1 ;Decrementar registro
GOTO RETARDO0 ;Repetir retardo
RETLW 0 ;Regresar limpiando W
RETARDOS
MOVWF Ret01 ;Contador de retardo
RETARDO1
MOVLW 0xFF
CALL RETARDO
NOP
NOP
DECFSZ Ret01, 1 ;Decrementar registro
GOTO RETARDO1 ;Repetir retardo
RETLW 0 ;Regresar limpiando W
END