LIST P=16F628A
#INCLUDE<p16F628A.INC>
__CONFIG _CP_OFF & _WDT_OFF & _LVP_OFF & _PWRTE_OFF & _INTRC_OSC_NOCLKOUT & _MCLRE_OFF& _BODEN_OFF
ERRORLEVEL 1;
CBLOCK 0x20
INSTRUCCION
ENDC
ORG 0X00
GOTO CONFIGURACION_PUERTOS
ORG 0X04
BTFSS PIR1,RCIF
RETFIE
CALL RECIBE_DATO
RETFIE
CONFIGURACION_PUERTOS
MOVLW B'00000111'
MOVWF CMCON
BSF STATUS,RP0
MOVLW .25
MOVWF SPBRG
CLRF TRISA
MOVLW B'00100100'
MOVWF TXSTA
CLRF PIE1
BSF PIE1,RCIE
CLRF TRISB
BSF TRISB,1
BCF STATUS,RP0
MOVLW B'10010000'
MOVWF RCSTA
MOVLW B'11000000'
MOVWF INTCON
CLRF PORTB
CLRF PORTA
INICIO
GOTO INICIO
RUTINA_ADELANTE
MOVLW B'00001010'
MOVWF PORTA
CALL Retardo_100ms
RETURN
RUTINA_ATRAS
MOVLW B'00000101'
MOVWF PORTA
CALL Retardo_100ms
RETURN
RUTINA_IZQ
MOVLW B'00001001'
MOVWF PORTA
CALL Retardo_100ms
RETURN
RUTINA_DER
MOVLW B'00000110'
MOVWF PORTA
CALL Retardo_100ms
RETURN
STOP
MOVLW B'00000000'
MOVWF PORTA
RETURN
TX_DATO
BCF PIR1,TXIF
MOVWF TXREG
BSF STATUS,RP0
TX_DATO_ESP
BTFSS TXSTA,TRMT
GOTO TX_DATO_ESP
BCF STATUS,RP0
RETURN
RX_DATO
BCF PIR1,RCIF
BTFSC RCSTA,FERR
GOTO RX_DATO
MOVF RCREG,0
RETURN
PRENDE_LEDS
BSF PORTB,4
BSF PORTB,5
RETURN
APAGA_LEDS
BCF PORTB,4
BCF PORTB,5
RETURN
RECIBE_DATO
CALL RX_DATO
MOVWF INSTRUCCION
CLRF RCREG
BCF PIR1,RCIF
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVF INSTRUCCION,W
SUBLW 'D'
BTFSC STATUS,Z
GOTO PRENDE_LEDS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVF INSTRUCCION,W
SUBLW 'X'
BTFSC STATUS,Z
GOTO APAGA_LEDS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVF INSTRUCCION,W
SUBLW 'F'
BTFSC STATUS,Z
GOTO RUTINA_ADELANTE
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVF INSTRUCCION,W
SUBLW 'B'
BTFSC STATUS,Z
GOTO RUTINA_ATRAS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVF INSTRUCCION,W
SUBLW 'L'
BTFSC STATUS,Z
GOTO RUTINA_IZQ
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVF INSTRUCCION,W
SUBLW 'R'
BTFSC STATUS,Z
GOTO RUTINA_DER
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOVF INSTRUCCION,W
SUBLW 'O'
BTFSC STATUS,Z
GOTO STOP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
RETURN
#INCLUDE<RETARDOS.INC>
END