;SI SW1=1, REALIZA CORRIMIENTO LEDS HACIA LA DERECHA ;SI SW1=0, REALIZA CORRIMIENTO LEDS HACIA LA IZQUIERDA ;PARA EDUPIC/EVOLUPIC 16F628 processor 16f628 include __config _XT_OSC & _WDT_OFF & _PWRTE_OFF & _MCLRE_ON & _BODEN_OFF & _LVP_OFF ;RESERVA LOCALIDADES PARA SUBRUTINA DE RETRASO J equ H'20' ; localidad 20 es J K equ H'21' ; localidad 21 es K ;DEFINE NOMBRE DE LOS BITS EN LOS PUERTOS A Y B #DEFINE RA0 PORTA,0 #DEFINE RA1 PORTA,1 #DEFINE RA2 PORTA,2 #DEFINE RA3 PORTA,3 #DEFINE RA4 PORTA,4 #DEFINE RB0 PORTB,0 #DEFINE RB1 PORTB,1 #DEFINE RB2 PORTB,2 #DEFINE RB3 PORTB,3 #DEFINE RB4 PORTB,4 #DEFINE RB5 PORTB,5 #DEFINE RB6 PORTB,6 #DEFINE RB7 PORTB,7 ;MACROS PARA LA SELECCION DE LOS BANCOS DE REGISTROS BANCO0 MACRO BCF STATUS,RP0 BCF STATUS,RP1 ENDM BANCO1 MACRO BSF STATUS,RP0 BCF STATUS,RP1 ENDM ;MACRO PARA INICIALIZACION DE PUERTOS PARA 16F628 PUERTOS MACRO BANCO1 CLRF VRCON ;DESHABILITA VOLTAJE DE REFERENCIA MOVLW H'1E' MOVWF TRISA ;RA0=SALIDA, RA1...RA4=ENTRADAS CLRF TRISB ;RB0...RB7=SALIDAS BANCO0 MOVLW 7 MOVWF CMCON ;DESHABILITA COMPARADORES ANALOGICOS BCF RA0 ;RA0=0, DESACTIVA RELEVADOR CLRF PORTB ;LEDS APAGADOS ENDM ORG 0 ;ORIGEN DEL PROGRAMA EN LA DIRECCION 0 PUERTOS ;MACRO PARA INICIALIZAR LOS PUERTOS DE 16F628 BSF RB0 BCF STATUS,C ;ASEGURA CARRY=0 LOOP BTFSS RA1 GOTO UNO GOTO DOS UNO CALL IZQ GOTO LOOP DOS CALL DER GOTO LOOP IZQ RLF PORTB CALL retro RETURN DER RRF PORTB CALL retro RETURN ;rutina de retraso de 200 milisegundos            retro: movlw D'250' ; w = 250 decimal movwf J ; J = w jloop: movwf K ; K = w kloop: decfsz K,f ; K = K-1, omite si es cero goto kloop decfsz J,f ; J = J-1, omite si es cero goto jloop return END