Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

03/11/2011 #1


[Consulta]Programa en Pic Simulator IDE funciona, pero PBP no
Hola, tengo un pequeño problema: Recientemente inicié en la programación de microcontroladores pic y adquirí un pic16f628a y el programador para el mismo. Intenté hacer algo simple: Un led oscilante. Despues de repetidos intentos con picbasic pro mediante MicroCode Studio, nada sucedia, el led quedaba todo el tiempo encendido, utilicé el siguiente programa:

Código:
trisa=0
loop:
high porta.0
pause 500
low porta.0
pause 500
goto loop
end
Se compiló perfectamente, y lo descargué exitosamente al PIC con PICPgm, pero cuando monté el circuito en la protoboard, los leds no hacian nada.

Luego desistí con Picbasic Pro y decidí intentar con Pic Simulator Ide mediante el Basic Compiler.

utilicé este código:
Código:
AllDigital
trisa = %00000000
symbol led = porta.0
loop:
led = 1
waitms 500
led = 0
waitms 500
goto loop
end
Este último SÍ funcionó. Mi pregunta es por qué el primer programa no funciona? Concidero mejor utilizar PicBasic Pro porque es el mas debatido en la web y me parece un tanto mejor que el otro. Muchas gracias
03/11/2011 #2


Proba este


@ device pic16F628A, INTRC_OSC_NOCLKOUT, wdt_off, pwrt_off, protect_off, MCLR_OFF
alldigital
;DEFINE OSC 10 ;Cristal de 10Mhz
;CMCON = 7
TRISA = %00000000 ;Todos como salidas
TRISB = %00000000 ;Todo como salidas

loop:
PORTA =%11111111
PORTB =%11111111
Pause 500
PORTA =%00000000
PORTB =%00000000
pause 500
goto loop


Igual te recomiendo usar Proton, porque cuando aprendas y quieras hacer programas mas complicados usando interrupciones, USART, y operaciones de coma flotante vas a tener que pasarte a proton.
04/11/2011 #3
Moderador

Avatar de D@rkbytes

nicomatex dijo: Ver Mensaje
Hola, tengo un pequeño problema: Recientemente inicié en la programación de microcontroladores pic y adquirí un pic16f628a y el programador para el mismo. Intenté hacer algo simple: Un led oscilante. Despues de repetidos intentos con picbasic pro mediante MicroCode Studio, nada sucedia, el led quedaba todo el tiempo encendido, utilicé el siguiente programa:

Código:
trisa=0
loop:
high porta.0
pause 500
low porta.0
pause 500
goto loop
end
Se compiló perfectamente, y lo descargué exitosamente al PIC con PICPgm, pero cuando monté el circuito en la protoboard, los leds no hacian nada.

Luego desistí con Picbasic Pro y decidí intentar con Pic Simulator Ide mediante el Basic Compiler.

utilicé este código:
Código:
AllDigital
trisa = %00000000
symbol led = porta.0
loop:
led = 1
waitms 500
led = 0
waitms 500
goto loop
end
Este último SÍ funcionó. Mi pregunta es por qué el primer programa no funciona? Concidero mejor utilizar PicBasic Pro porque es el mas debatido en la web y me parece un tanto mejor que el otro. Muchas gracias
Saludos. nicomatex
Hay te va la explicación de el porque el primer programa no te funciona.
El PIC16F628 tiene comparadores analogicos en el puerto A
y hay que configurarlos como digitales si no los vas a usar.
Aunque pongas la sentencia TRISA = 0 Siguen siendo comparadores analogicos
En el segundo programa ya usaste AllDigital y eso los convirtio en Digitales
En MicroCode Studio es CMCON = 7 o CMCON = %111 si te gusta el binario
Prueba y veras como añadiendo esa configuración ya funcionara.
04/11/2011 #4


Gracias por tu respuesta DarkBytes. entonces el código me quedaría así? :
Código:
CMCON = %111
trisa=0
loop:
high porta.0
pause 500
low porta.0
pause 500
goto loop
end
O hay que agregarle algo mas?
04/11/2011 #5
Moderador

Avatar de D@rkbytes

nicomatex dijo: Ver Mensaje
Gracias por tu respuesta DarkBytes. entonces el código me quedaría así? :
Código:
CMCON = %111
trisa=0
loop:
high porta.0
pause 500
low porta.0
pause 500
goto loop
end
O hay que agregarle algo mas?
Pues si, así esta bien, solo cambia la etiqueta loop por loop1 u otra
ya que en MicroCode Studio Plus es una instrucción.
En la versión Normal si se puede usar como etiqueta el nombre loop
Por que tengo algunos programas que hize con la versión Normal y use ese nombre
como etiqueta, y si compilaba sin errores, pero al cambiar de versión a la Plus
y al volver a compilar me produjo un error que dice.
LOOP without a matching DO
Syntax error.

me quede Upps!!! y ahora en donde esta el error
Y no se si se debio a que actualize a la versión Plus o por que se actualizo la versión
del compilador PBP a la 2.60 ya que antes tenia la 2.5 Mhhh Todavia no lo se.
La cosa es que con esa instrucción agregada que tambien se usa en VB tu código quedaria así.
DO
high porta.0
pause 500
low porta.0
pause 500
LOOP
Haria lo mismo que como lo tienes
loop:
high porta.0
pause 500
low porta.0
pause 500
goto loop
Ahora si no es tu caso pues así como esta debe funcionar con el agregado de CMCON = 7
Ya si le quieres agregar la configuración de los FUSES puedes poner en la cabecera del programa algo como esto.
@ DEVICE PIC16F628A
@ DEVICE INTRC_OSC_NOCLKOUT,PROTECT_OFF,WDT_OFF,PWRT_ON,MCL R_ON,BOD_OFF,LVP_OFF,CPD_OFF

Bueno, hay mucha información y poco a poco iras entendiendo.
BYE4NOW
04/11/2011 #6


Muchas gracias. Ahora, tengo otra duda. Intenté oscilar entre 2 leds usando el puerto B. Con el pic simulator ide lo logré, con un codigo sencillo parecido al anterior:
Código:
AllDigital
trisa = %00000000
symbol led = porta.0
loop:
led = 1
waitms 500
led = 0
waitms 500
goto loop
end
pero a la hora de probar con el microcode studio con el siguiente código:
Código:
CMCON = 7
trisb=0
leds1:
high portb.0
low portb.1
pause 500
low portb.0
high portb.1
pause 500
goto leds1
Y era como si solo cumpliera la primera instruccion ,el led conectado al puerto B numero 0 quedaba prendido sin nada mas y algunas veces hacian cosas raras, como que parpadeaban rapidamente y se apagaban , luego igual y quedaban ambos prendidos. que será?
04/11/2011 #7


nicomatex dijo: Ver Mensaje
Muchas gracias. Ahora, tengo otra duda. Intenté oscilar entre 2 leds usando el puerto B. Con el pic simulator ide lo logré, con un codigo sencillo parecido al anterior:
Código:
AllDigital
trisa = %00000000
symbol led = porta.0
loop:
led = 1
waitms 500
led = 0
waitms 500
goto loop
end
pero a la hora de probar con el microcode studio con el siguiente código:
Código:
CMCON = 7
trisb=0
leds1:
high portb.0
low portb.1
pause 500
low portb.0
high portb.1
pause 500
goto leds1
Y era como si solo cumpliera la primera instruccion ,el led conectado al puerto B numero 0 quedaba prendido sin nada mas y algunas veces hacian cosas raras, como que parpadeaban rapidamente y se apagaban , luego igual y quedaban ambos prendidos. que será?
PRoba configurar los fuses, verifica en el programa arriba que este puesto el 16f628a, si usas cristal tenes que especificarlo en el programa y sino igual tenes que poner los fuses algo asi
@ device pic16F628A, INTRC_OSC_NOCLKOUT, wdt_off, pwrt_off, protect_off, MCLR_OFF

Esa linea seria si usas el oscilador interno.
04/11/2011 #8


Es verdad! Ya lo pude hacer andar. Gracias a todos por sus respuestas!
04/11/2011 #9
Moderador

Avatar de D@rkbytes

Darkbytes dijo: Ver Mensaje
Ya si le quieres agregar la configuración de los FUSES puedes poner en la cabecera del programa algo como esto.
@ DEVICE PIC16F628A
@ DEVICE INTRC_OSC_NOCLKOUT,PROTECT_OFF,WDT_OFF,PWRT_ON,MCL R_ON,BOD_OFF,LVP_OFF,CPD_OFF

Bueno, hay mucha información y poco a poco iras entendiendo.
BYE4NOW
Y lo reitero.
Bueno, que bien que ya estas aprendiendo.
BYE4NOW
04/11/2011 #10


Muchas gracias DarkBytes. Realmente es maravilloso este mundo de los microcontroladores y la cantidad de cosas que se pueden hacer con ellos!
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.