Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Hola acabo de soldar los sensores para un seguidor de lineas que cuando esta encima una linea negra me da 0,6 y encima una blanca 4,5. Estoy intentando acoplar los sensores al pic, pero lo programo y no me funciona. Para ir paso a paso estoy intentando que cuando el bit zero del puertoA valga 1 (5V) se encienda el bit zero del puertoC. Ajunto el codigo:
BSF STATUS,RP0
BCF STATUS,RP1
MOVLW b'00000000'
MOVWF TRISC
MOVLW b'00000001'
MOVWF TRISA
LOOP:
BCF STATUS,RP1
BCF STATUS,RP0
BCF STATUS,Z
MOVFW PORTA
XORLW b'00000001'
BTFSS STATUS,Z
BSF PORTC,0
GOTO LOOP
END
A ver si alguien ve donde esta el error
Una cosas a tener muy en cuenta es el valor por defecto de los registros depués de hacer un reset o cuando se inicia el micro. Por lo que veo en la mayoría de los casos lo tomáis como que tienen los valores adecuados.
Asin que tengo que limpiar los puertos con un CLRF PORTA y CLRF PORTC ?¿ De esta forma me aseguro que estan a 0 no?
Te aconsejaría que pusieras un ORG 0x00 al inicio del programa. Esto te lo digo porque cuando inicias el micro siempre salta al vector de reset que es el 0x00, entonces escribe el programa igual pero poniendo arriba org 0x00. Especifica un poco más el micro que vas a utilizar, postea el código asm completo junto con sus includes etc... y también especifica como has conectado los sensores, con resistencias pull-up o pull-down ?
Saludos.
Ahora te dejo la modificación que le haría yo al código.
ORG 0X00 ;VECTOR DE RESET
BSF STATUS,RP0 ;SELECCIONAMOS BANCO 1 PARA CONFIGURAR
BCF STATUS,RP1 ;LOS PINES
MOVLW b'00000000' ;PORTC COMO SALIDAS
MOVWF TRISC
MOVLW b'00000001' ;RA0 COMO ENTRADA, LAS DEMÁS SALIDAS
MOVWF TRISA
LOOP:
BCF STATUS,RP1
BCF STATUS,RP0
BTFSC PORTA,0 ;RA0 = ? SI ES 1, ENCENDEMOS LED
GOTO ENCENDER ;SI ES 0 APAGAMOS
GOTO APAGAR
ENCENDER
BSF PORTC,0
GOTO LOOP
APAGAR
BCF PORTC,0
GOTO LOOP
END
Cuando dices resistencias de pull-up y pull-down...es necesario poner la resistencia, no se le puede meter directamente 5 voltios a la pata del puertoA bit zero? Si hay que poner una resistencia en el datasheet pone que la maxima intensidad de entrada son unos 250mA o sea que con una resistor de 22 ohm ya tira?