No puedo usar todas las entradas de un PIC 12f675 en MPLAB

Buenas, estoy programando en MPLAB un pic 12f675 que debe encargarse de una secuencia logica(si hay una entrada en 1 se activa 2 y si hay en 3 se activa en 4, etc).

El problema es que necesito 3 entradas para 3 sensores pero no logro hacer que se detecte nada fuera de los pines 3 y 5, es decir, si pongo btfsc GPIO,3 si detecta el cambio, pero si pongo btfsc GPIO,4 no lo hace.

Hasta ahora estoy usando 2 entradas por esa limitante pero me gustaria ver si alguien me pudiera ayudar.

Este es mi codigo


#include<p12f675.inc>
__config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF)
org 0

bcf STATUS,5
movlw 0x07
movwf CMCON
bsf STATUS,5
movlw 3Ch //configuro 0 y 1 como salida y lo demas como entrada
movwf TRISIO
bcf STATUS,5
clrf GPIO

inicio:
btfsc GPIO,3
goto derecha
goto izquierda

derecha:
btfsc GPIO,5
goto derecho
movlw 01h ;load w reg
movwf GPIO ;switch on pins
goto inicio

izquierda:
btfss GPIO,5
goto nada
movlw 02h ;load w reg
movwf GPIO ;switch on pins
goto inicio

derecho:
movlw 03h
movwf GPIO
goto inicio

nada:
movlw 00h
movwf GPIO
goto inicio

end



Cualquier ayuda se agradecera
 
Hola lmiyar:

El problema podría encontrase en el registro ANSEL, el cuál, según el datasheet, necesita configurarse antes de intentar utilizar las entradas.

El tema completo está en la página 46 del Datasheet del PIC, no se que valores tengan los bits 0,1,2,3 del ANSEL. Pero necesitan estar en 0 par que cada pin AN0,AN1,AN2, AN3, pueda funcionar como digital. Por lo que dice el Datasheet probablemente se encuentren configurados como entradas análogas y por eso no te responden.

Espero y te sea de utilidad esta información.

Saludos al foro :D
 
Apollo dijo:
Hola lmiyar:

El problema podría encontrase en el registro ANSEL, el cuál, según el datasheet, necesita configurarse antes de intentar utilizar las entradas.

El tema completo está en la página 46 del Datasheet del PIC, no se que valores tengan los bits 0,1,2,3 del ANSEL. Pero necesitan estar en 0 par que cada pin AN0,AN1,AN2, AN3, pueda funcionar como digital. Por lo que dice el Datasheet probablemente se encuentren configurados como entradas análogas y por eso no te responden.

Espero y te sea de utilidad esta información.

Saludos al foro :D

Muchas gracias.
Si era eso. Es extraño, siempre estaba poniendo el clrf ANSEL pero creo que este ultimo programa lo empece de un ejemplo de internet y supongo que no lo traia.
De hecho en el datasheet viene en los mini ejemplos de como usar el puerto GPIO.

Entonces al final solo le cambie esto:

bcf STATUS,5
movlw 0x07
movwf CMCON
bsf STATUS,5
clrf ANSEL
movlw 38h ;0,1,2 salidas; 3,4,5 entradas digitales
movwf TRISIO
bcf STATUS,5
clrf GPIO [/b]

De nuevo gracias
 
Atrás
Arriba