CM_TEMP EQU 0X20 ; ALMACENA EL ESTADO DE LOS SENSORES
BANK0 MACRO
BCF STATUS,5
ENDM
BANK1 MACRO
BSF STATUS,5
ENDM
main
MOVLW 0X02
MOVWF CMCON ; COMPARADOR MODO 2
;RA0-RA1 = INPUTS
bsf CMCON,C1INV
bsf CMCON,C2INV
BANK1
MOVLW 0X07
MOVWF TRISA ;ra0,ra1,ra2 son entradas analogicas.
CLRF TRISB
BANKSEL VRCON
MOVLW B'10100100' ;ANALOG Vref ENABLE, NO CONECT TO RA2,
MOVWF VRCON ;LOW RANGE; 9 --> VR VALUES = 1.875v
BCF STATUS,5
CLRF PORTB
COMPARA
NOP
clrf CM_TEMP ;registro temporal para almacenar datoso del comparador
CLRF 0X21
BCF CMCON,CIS ;;esto es multiplexion en el comparador ve el datasheet del modo 2.
BCF STATUS,C ; RA0 Y RA1
MOVF CMCON,W ;cargo en W el valor de la compraracion
ANDLW 0XC0 ;HAgo una operacion logica and con 0xC0 que es lo mismo que b'11000000'
;solo me deja pasar esos 2 bits , un enmascaramiento o filtro de datos , solo los que
;me interesan,si no mal recuerdo son los bits resultado de la comparacion
MOVWF CM_TEMP ;muevo el resultado de la operacion a CM_TEMP
RRF CM_TEMP,F ;el resultado lo roto a la derecha 2 veces , osea que me queda asi = 00110000 en caso
RRF CM_TEMP,F ;de que tuveria en CM_CON =11000000
SWAPF CM_TEMP,F ;ahora hago swap y quedan asi 00000011.<-- Esto para manejar solo 4 conbinaciones
BSF CMCON,CIS ; RA2 <---- Hago la multiplexion del pin para leer el 3er estado
MOVF CMCON,W
ANDLW 0x80
MOVWF 0X21
RRF 0X21,F
SWAPF 0X21,W ;lo roto 1 vez para que quede asi con los demas 0111 0000 ,luego swap 0000 0111 ya tengo 7
;combinaciones posibles
ADDWF CM_TEMP,W ; DATO COMPLETO
MOVWF CM_TEMP
MOVF CM_TEMP,W ;CArgo el valor del registro y me voy a ver de que se trata esto , que accion debo realizar
SENSORES ; DECICIONES
ADDWF PCL,F ;dependiendo el valor que tenga ,saltara a la instruccion , si tengo 0
GOTO ALTO ; quedara en esta linea e ira a etiqueta ALTO
GOTO DERECHA ;1
GOTO ADELANTE ;2 y asi hasta el 7
GOTO DERECHA
GOTO IZQUIERDA
GOTO ALTO ; <<<NO FACTIBLE
GOTO IZQUIERDA
GOTO ALTO ;<< CHEKAR ESTA COMBINACION ?????*//*
ADELANTE
MOVLW b'1010' ; < M1+- M2+- >
MOVWF PORTB
NOP
GOTO COMPARA ;regresa a programa principal
IZQUIERDA
;CLRF PORTB
BSF PORTB,3
BCF CMCON,CIS
BCF PORTB,1
nop
nop
nop
BSF PORTB,1
BTFSS CMCON,7
GOTO $-6
bcf PORTB,1
GOTO COMPARA
DERECHA
;CLRF PORTB
BSF PORTB,1
BCF CMCON,CIS
BCF PORTB,3
nop
nop
nop
BSF PORTB,3
BTFSS CMCON,7
GOTO $-6
bcf PORTB,3
GOTO COMPARA
ALTO
;CLRF PORTB
GOTO COMPARA
END