TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: diegostreetbob en 24 de Junio de 2009, 02:44:58
-
Hola,
ya he solucionado el problema de stack overflow usando goto en lugar de gosub, pero no se porque este programita tan sencillo no funciona en un 16f628 y si funciona en un 16f84.
trisa=255
trisb=0
leer var porta.1
npulsos var word
portb=0
lee:
if leer=1 then
npulsos=255
else
npulsos=16
endif
portb=npulsos
goto lee
end
Gracias
-
No te funciona porque tenés que leer los datasheet.
El 16F628A, a diferencia del 16F84, tiene entradas analógicas, y PORTA.1 es una de ellas. Por defecto se activan y tenés que cambiarlas a digitales en el software.
-
Añadir "ALLDIGITAL" al programa
Recuerda que la mayoría de los Pic actuales sus pin tienen varias funciones distintas y hay que indicarle al micro como van a trabajar. Y como te dice Bruno, por defecto si no se indica lo contrario se configuran como entradas analógicas, en este caso en particular son asignadas mediante los conmutadores internos al modulo “comparador analógico”, ya que este micro no tiene conversor analógico digital. Por eso es fundamental antes de ponerse a trabajar ojear el datasheet del microcontrolador.
Alldigital 'Los pin I/O digitales
trisa=255
trisb=0
leer var porta.1
npulsos var word
portb=0
lee:
if leer=1 then
npulsos=255
else
npulsos=16
endif
portb=npulsos
goto lee
end
-
Gracias por tu ayuda, pero he probado con alldigital y sigue sin funcionar en el 16f628, simulando con proteus.