pic 16f84a-20/p
hola como estan, espero me ayuden estoy retomando el camino de los pic y cuando monto el circuito de prueba no hace nada creo que el problema esta en el crystal 4mhz porque cuando lo toco empieza a funcionar le eh cambiado c1,c2 desde 15pf hasta 33pf llevandolo a tierra pero no responde !que puede ser el problema?
Saludos crossfiress
Analizando tu código, veo que quieres encender y apagar un LED por RA3
Y pienso que lo quieres encender y apagar cada medio segundo.
Sin embargo la rutina que estas generando, no hace un retardo de 500mS
Lo que estas generando con esa rutina, es una frecuencia de 500 Hertz por RA3.
Así que nunca veras que se encienda y se apague. Si todo lo tienes bien conectado,
el LED lo deberías ver permanentemente encendido.
Otra cosa que note es que para cambiar de estado a RA3, usas la instrucción TRISA
Si funcionaria de esa manera, pero la estas usando fuera del banco correspondiente.
Lo conveniente es usar bsf PORTA,3 para poner a 1 RA3 y bcf PORTA,3 para ponerlo a 0.
Una cosa que no entiendo, es como compilaste el programa, si incluyes los fuses,
pero no estas declarando el uso de la librería P16F84A.INC
Y aparte el compilador no reconoce la palabra de configuración si la escribes con minúsculas.
Ni tampoco reconoce el nombre de los registros con minúsculas o capitalizados.
Puede ser por la configuración del Case Sensitive.
Pero en mi MPLAB no la encontre, y recuerdo que en versiones viejitas si estaba.
Para generar los retardos, te recomiendo que uses el programa PIC DELAYER
Muchos le dicen PIC Delay o PDEL, sin embargo el autor cita que se llama PIC DELAYER.
Es gratuito y lo puedes buscar por aquí en el foro o por internet.
Con ese programa puedes generar los retardos con mucha precisión.
Bien, pues aquí te dejo el programa corregido y te garantizo que debe funcionar,
si sigues las recomendaciones que ya te hicieron anteriormente.
Nota. El retardo de 500mS que puse, esta calculado para usar un cristal de 4Mhz.
Código:
list p=16f84a
include <p16f84a.inc>
__config _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
CBLOCK 0Ch
PDel0
PDel1
ENDC
org 0
inicio
bsf STATUS,5
clrf TRISA
clrf TRISB
bcf STATUS,5
clrf PORTA
clrf PORTB
x2
bsf PORTA,3
call retardo
bcf PORTA,3
call retardo
goto x2
retardo movlw .239 ; 1 set numero de repeticion (B)
movwf PDel0 ; 1 |
PLoop1 movlw .232 ; 1 set numero de repeticion (A)
movwf PDel1 ; 1 |
PLoop2 clrwdt ; 1 clear watchdog
PDelL1 goto PDelL2 ; 2 ciclos delay
PDelL2 goto PDelL3 ; 2 ciclos delay
PDelL3 clrwdt ; 1 ciclo delay
decfsz PDel1, 1 ; 1 + (1) es el tiempo 0 ? (A)
goto PLoop2 ; 2 no, loop
decfsz PDel0, 1 ; 1 + (1) es el tiempo 0 ? (B)
goto PLoop1 ; 2 no, loop
PDelL4 goto PDelL5 ; 2 ciclos delay
PDelL5 goto PDelL6 ; 2 ciclos delay
PDelL6 goto PDelL7 ; 2 ciclos delay
PDelL7 clrwdt ; 1 ciclo delay
return ; 2+2 Fin.
end
los que esten en desuso se ponen como entradas no???
yo lo lei por algun lado de microchip pero ya me hiciste dudar
Saludos lubeck
Yo prefiero dejar los pins sin usar como entradas, muchos prefieren dejarlos como salidas.
No le veo el caso en dejarlos como salidas, ni como dicen configurarlos como entrada, y mandarlos a VSS
Yo los dejo configurados como entradas, y todo anda muy normal.
Suerte y hasta luego.