           


;												  (HECHO POR 6š AŅO DE LA E.E.T Nš281)
	;ES UNA VELETA CON UN CODIFICADOR OPTICO BASADO EN EL CODIGO DE GREY.
	;MEDIANTE UNA TABLA, SE REORDENAN Y CARGAN LAS LETRAS CORRESPONDIENTES A LAS POSICIONES GEOGRAFICAS
	;DEFINIENDO LA ROSA DE LOS VIENTOS ( NORTE,ESTE,SUR,OESTE ) EN 16 VALORES 
	;EL PROYECTO PRESENTA LA POSICION EN  TRES DISPLAY 
	;

#include "P16F84A.inc"
#DEFINE DG2 PORTB,0
#DEFINE DG3 PORTB,1
#DEFINE DG1 PORTA,0

	CBLOCK 0CH
DIG1    
DIG2    
DIG3    
REPITE  
ENTRADA
CONTA   
TIEMPO  
	ENDC

BLANCO EQU B'00000000';SEGMENTOS A Y G UNIDOS, PARA AHORRAR UN PIN
NORTE  EQU B'01110100'
SUR    EQU B'11001100'
ESTE   EQU B'11011000'
OESTE  EQU B'01111100'

       BSF		STATUS,5
       MOVLW	b'00011110'
       MOVWF	TRISA
	   MOVLW	B'00000000'
       MOVWF	TRISB
	   BCF		STATUS,5

		GOTO	ACTUALIZA

TABLA 	ADDWF PCL,F
		GOTO N		;0
		GOTO NNO	;1
		GOTO NOO	;2
		GOTO NO  	;3                               
		GOTO SSO 	;4                                 
		GOTO SO		;5
		GOTO O		;6
		GOTO OSO	;7
		GOTO NNE	;8
		GOTO NE		;9
		GOTO E		;10
		GOTO ENE	;11
		GOTO S		;12
		GOTO SEE	;13
		GOTO ESE	;14
		GOTO SE		;15

;---------------BORRA SALIDA-----------------
N   	MOVLW BLANCO
		MOVWF DIG1 
		MOVLW NORTE 
		MOVWF DIG2 
		MOVLW BLANCO
		MOVWF DIG3
		RETURN
;-------------------------------------------
NNO		MOVLW NORTE
		MOVWF DIG1
;		MOVLW NORTE
		MOVWF DIG2
		MOVLW OESTE
		MOVWF DIG3
		RETURN
;-------------------------------------------		
NOO		MOVLW NORTE
		MOVWF DIG1
		MOVLW OESTE
		MOVWF DIG2
;		MOVLW OESTE
		MOVWF DIG3
		RETURN
;-------------------------------------------
NO		MOVLW BLANCO
		MOVWF DIG1
		MOVLW NORTE
		MOVWF DIG2
		MOVLW OESTE
		MOVWF DIG3
		RETURN
;-------------------------------------------

SSO		MOVLW SUR
		MOVWF DIG1
;		MOVLW SUR
		MOVWF DIG2
		MOVLW OESTE
		MOVWF DIG3
		RETURN
;-------------------------------------------
SO		MOVLW BLANCO
		MOVWF DIG1
		MOVLW SUR
		MOVWF DIG2
		MOVLW OESTE
		MOVWF DIG3
		RETURN
;-------------------------------------------
O		MOVLW BLANCO
		MOVWF DIG1
		MOVLW OESTE
		MOVWF DIG2
		MOVLW BLANCO
		MOVWF DIG3
		RETURN
;-------------------------------------------
OSO		MOVLW OESTE
		MOVWF DIG1
		MOVLW SUR
		MOVWF DIG2
		MOVLW OESTE
		MOVWF DIG3
		RETURN
;-------------------------------------------
NNE 	MOVLW NORTE
		MOVWF DIG1
;		MOVLW NORTE
		MOVWF DIG2
		MOVLW ESTE
		MOVWF DIG3
		RETURN
;-------------------------------------------
NE		MOVLW BLANCO
		MOVWF DIG1
		MOVLW NORTE
		MOVWF DIG2
		MOVLW ESTE
		MOVWF DIG3
		RETURN
;-------------------------------------------
E		MOVLW BLANCO
		MOVWF DIG1
		MOVLW ESTE
		MOVWF DIG2
		MOVLW BLANCO
		MOVWF DIG3
		RETURN
;-------------------------------------------
ENE		MOVLW ESTE
		MOVWF DIG1
		MOVLW NORTE
		MOVWF DIG2
		MOVLW ESTE
		MOVWF DIG3
		RETURN
;-------------------------------------------
S		MOVLW BLANCO
		MOVWF DIG1
		MOVLW SUR
		MOVWF DIG2
		MOVLW BLANCO
		MOVWF DIG3
		RETURN
;-------------------------------------------
SEE		MOVLW SUR
		MOVWF DIG1
		MOVLW ESTE
		MOVWF DIG2
;		MOVLW ESTE
		MOVWF DIG3
		RETURN
;-------------------------------------------
ESE		MOVLW ESTE
		MOVWF DIG1
		MOVLW SUR
		MOVWF DIG2
		MOVLW ESTE
		MOVWF DIG3
		RETURN
;-------------------------------------------
SE		MOVLW BLANCO	
		MOVWF DIG1
		MOVLW SUR
		MOVWF DIG2
		MOVLW ESTE
		MOVWF DIG3
		RETURN
;*************************************************

ACTUALIZA   MOVLW	.15
			MOVWF	REPITE
			MOVF 	PORTA,W
			MOVWF	ENTRADA
			RRF		ENTRADA,W
			ANDLW	B'00001111'
			MOVWF	ENTRADA
			XORLW	B'00001111'
;			MOVWF	ENTRADA
							
			CALL TABLA

PRESENTAR   MOVF DIG1,W
			MOVWF PORTB
			BSF DG1
			CALL DEMORA
			BCF	DG1
			
			MOVF DIG2,W
			MOVWF PORTB
			BSF DG2
			CALL DEMORA
			
			MOVF DIG3,W
			MOVWF PORTB
			BSF DG3
			CALL DEMORA
			
			DECFSZ REPITE,F
			GOTO PRESENTAR
			GOTO ACTUALIZA
			
;*********************************************************
DEMORA 	;return 
		MOVLW .10
		MOVWF CONTA
LOOP    MOVLW .110
		MOVWF TIEMPO
OTRO    NOP
		NOP
		NOP
		NOP
		NOP
  	  	NOP
		DECFSZ TIEMPO,F
		GOTO OTRO
		DECFSZ CONTA,F
		GOTO LOOP
		RETURN

		END		