Curso de programación de PIC en PICBasic Pro

Darkbytes saludos, habría algún problema en realizar temporizaciones para varios minutos empleando simplemente repeticiones como base de tiempo? en simulación funciona bien y en físico, me refiero a si a largo plazo, el empleo de esta técnica dentro del programa puede comenzar a presentar alguna falla en montaje físico?
¿Retardos con repeticiones, te refieres a usar un bucle For?
Si es así, debe servir, el problema es usar la instrucción Pause, ya que congela el micro durante su ejecución.

A continuación adjunto dos ejemplos de temporizadores precisos usando el Timer 1 del PIC.
Se usa un cristal externo de 32768 Hz. para la sincronización del TMR1 (De los que usan los relojes digitales)
Se genera 1 segundo de temporización por desborde del Timer 1 que puede ser usada para el diseño de un reloj.
Ó como en estos ejemplos para realizar un temporizador con períodos precisos de conteo.

La ventaja de usar este método, es que no existe congelamiento del PIC durante la temporización,
y así se pueden ejecutar otras tareas mientras el conteo deseado sigue avanzando.
La desventaja es que se pierden dos pines, los destinados al oscilador del cristal (T1OSO y T1OSI)
Que en el caso de estos ejemplos, donde use un 16F628A, son los pines RB6 y RB7.
Gracias por la ayuda.. ya descarge microcode studio y pic basic pro.... pero cuando le doy compile sale una ventanda que dice:
"serching for MPSAM folder pleace wait"... pero.. no tengo nada de MPSAM... y no lo puede compilar..
Me supongo te refieres a MPASM.
Eso es normal cuando MicroCode Studio no ha encontrado la carpeta del compilador MPASMWIN.
Debes instalar MPLAB si deseas compilar con ese compilador. Descárgalo desde la pagina oficial de Microchip.
Pero no descargues el MPLABX, sino el MPLAB IDE, que por ahora va en la versión 8.90.
Después de la instalación de MPLAB, realiza una búsqueda manual de la carpeta del compilador,
y estableces la carpeta: C:\Archivos de programa\Microchip\MPASM Suite
Dependiendo el sistema, podría ser también C:\Program files\Microchip\MPASM Suite, u otra ruta.
La idea es encontrar la carpeta MPASM Suite, que es donde se encuentra el compilador MPASMWIN.

Saludos y suerte.
 

Adjuntos

  • 16F628A TMR1 1Seg.rar
    41.9 KB · Visitas: 291
  • 16F628A Temporizador con TMR1.rar
    46 KB · Visitas: 278
Gracias dark, podrian decirme que pasa con los archivos de los primeros ejercicios con lcd, Mecatrodatos tiene muy buenos ejercicios pero es imposible ejecutarlos en proteus, ni tampoco quiere abrir los programas en PBP a pesar d haberlos descomprimido, ojala l puedan hachar una miradita haber que sucede con estos archivos...gracias por su tiempo.
 
Hola inspector gadget Por qué dices que: es imposible ejecutarlos en proteus ??.Lo Hice y funcionan bien. Qué error te marca el ISIS de Proteus ??Por qué dices que no puedes abrir los PBP??Marca algún error??... Cuál es ?? Desde el mensaje #22 al #26 de este tema, mecatrodatos desarrolla varios circuitos y programas para el manejo del LCD. Cuál en particular no te funciona ?? saludosa sus ordenes
 
Última edición:
Hola inspector gadget

Por qué dices que: es imposible ejecutarlos en proteus ??.
Lo Hice y funcionan bien. Qué error te marca el ISIS de Proteus ??

Por qué dices que no puedes abrir los PBP??
Marca algún error??... Cuál es ??

Desde el mensaje #22 al #26 de este tema, mecatrodatos desarrolla varios circuitos y programas para el manejo del LCD. Cuál en particular no te funciona ??

saludos
a sus ordenes
Saludos y gracias por responder pronto. la verdad no se que hacer, ya que llevo mucho tiempo simulando varios ejercicios sin problema, pero ahora que intento un repaso general me doy cuenta que en las primeras paginas de este curso tengo problemas a la hora de ejecutar los ejercicios para no ir muy lejos comienzo con el primer ejercicio de mecatrodatos en la pagina 1 creo que es el mensaje 9, lo descomprimo con winzip, también lo hice con winrar, aparece la carpeta descomprimida y sus respectivos archivos como son simulación, hex ,pbp, entre otros pero estos son los que nos interesan, luego abro el microcode y el archivo llamado proyecto1 led (que es el ejercicio citado) no aparece para abrirlo, intento con el proteus y tampoco se encuentra el archivo y supuse que posiblemente este en una versión posterior a la que manejo que el la 7.5, pero para corroborar eso abro mi programador y tampoco aparece el archivo hex, a pesar de que en la descompresión aparecen los iconos de dichos archivos, proteus, hex, pbp....intento con otras herramientas y me dice que son archivos de solo lectura, o con proteus sale un mensaje que dice: Archivo no es una aplicacion win 32 valida, lo mismo pasa con varios de los ejercicios no solo de meca, hay varios,muy raro no? teniendo en cuenta que esta acción la repito continuamente para repasar y no había sucedido antes, claro con ejemplos posteriores de otros mensajes, por ejemplo si voy hasta el mensaje 192 de la pagina 10 donde Dario postea unos archivos de un ejercicio llamado proporcional, ahí no tengo ningún problema, así sucede con muchísimos mas adelante donde no tengo problema....que puede estar pasando, ayúdenme a buscar una solución, muchísimas gracias por su tiempo.



¿Retardos con repeticiones, te refieres a usar un bucle For?
Si es así, debe servir, el problema es usar la instrucción Pause, ya que congela el micro durante su ejecución.

A continuación adjunto dos ejemplos de temporizadores precisos usando el Timer 1 del PIC.
Se usa un cristal externo de 32768 Hz. para la sincronización del TMR1 (De los que usan los relojes digitales)
Se genera 1 segundo de temporización por desborde del Timer 1 que puede ser usada para el diseño de un reloj.
Ó como en estos ejemplos para realizar un temporizador con períodos precisos de conteo.

La ventaja de usar este método, es que no existe congelamiento del PIC durante la temporización,
y así se pueden ejecutar otras tareas mientras el conteo deseado sigue avanzando.
La desventaja es que se pierden dos pines, los destinados al oscilador del cristal (T1OSO y T1OSI)
Que en el caso de estos ejemplos, donde use un 16F628A, son los pines RB6 y RB7.

Saludos dark, ojala me puedas colaborar con el problema que se me presento en la descarga de los archivos de los primeros ejercicios de este curso y que relate mas arriba, por otro lado quisiera por favor claridad a que hace referencia el concepto de que un pic se quede congelado por el uso de los pauses en las repeticiones y que el chip pudiera realizar otras tareas mientras se ejecuta la temporización? tareas como cuales podrían ser por ejemplo? y no entiendo es por el hecho que en mensajes anteriores, solicitaba la guía para realizar dentro de un mismo chip, varios contadores independientes en sus funciones pero dentro del mismo chip, osea activar un contador, o varios si es necesario, o pausar el que yo quiera, con el fin de no emplear un chip por cada uno, dado que la finalidad de usar un micro es prescindir de varios circuitos integrados digitales y usar un micro que tenga muchos pines como el 16f877 u otros, para emplear sus puertos justamente en el desarrollo de varias tareas, y me comentabas que esto no es posible ya que los programas son secuenciales y primero se realiza una tarea, para después seguir con otra, entonces no me queda claro leyendo ahora que se podrían realizar otras tareas mientras se ejecuta una, querría decir lo anterior que lo que pretendo si es posible y la limitación es la forma de realizar el programa? gracias por tu colaboración y sugerencias.
 
Última edición por un moderador:
Hola inspector gadget

Probablemente al descomprimir esos archivos con tus WINZIP o WINRAR les gregue o no les cambie e atributo llamado Read only.

Al descomprimirlo dale un click con el botón secundario(Derecho) del mouse y selecciona propiedades. Podrás ver que atributos tiene ese archivo.
Por ejemplo puede tener el de solo lectura u oculto. Esos 2 atributos son los importantes. Tienes que desmarcarlos.

Por lo pronto te adjunto el proyecto que viene en el mensaje #9 el cual, entre muchos LED’s, enciende y apaga uno solo.

saludos
a sus ordenes

Vaya, modificaste tu mensaje antes de responderte.
 

Adjuntos

  • On-Off 1 LED.zip
    10 KB · Visitas: 124
Hola inspector gadget

Probablemente al descomprimir esos archivos con tus WINZIP o WINRAR les gregue o no les cambie e atributo llamado Read only.

Al descomprimirlo dale un click con el botón secundario(Derecho) del mouse y selecciona propiedades. Podrás ver que atributos tiene ese archivo.
Por ejemplo puede tener el de solo lectura u oculto. Esos 2 atributos son los importantes. Tienes que desmarcarlos.

Por lo pronto te adjunto el proyecto que viene en el mensaje #9 el cual, entre muchos LED’s, enciende y apaga uno solo.

saludos
a sus ordenes

Vaya, modificaste tu mensaje antes de responderte.
MrCarlos , gracias por ayudarme, dichas casillas están desmarcadas, no entiendo porque a pesar de descomprimirse no aparecen desde proteus, ni en PBP o desde mi programador, el archivo que incluyes en tu ultimo mensaje descomprime igual que los otros, pero a este si lo puedo llamar desde proteus y los demás programas, no se que pasa, o que versiones debo usar para poder llamarlos, que versiones tienes tu, ya que a ti si te funcionan? gracias por tu interés.
 
Hola inspector gadget

La versión que tengo es la 7.8 SP2.

No podríamos decir que tu versión sea anterior a la de mecatrodatos pues entonces no podrías abrir los que te he enviado.
No sé a que se deba ese problema, sin embargo si nesesitas algún otro diseño lo puedo “acomodar” como el anterior que subí para que lo puedas manejar.
Ahorra mensajes mencionando en qué # está y de que trata.

saludos
a sus ordenes
 
MrCarlos, otra vez te agradezco, mira si puedes hacerme el favor, los archivos que necesito son: No.23,24,25,26 y 40 que tratan d ejercicios que involucran LCD. Necesito investigar y usar como base estos archivos y ver si despejan mis dudas, de todas maneras ya posteare lo que pretendo, no sin antes realizar los avances para solicitar la valiosa ayuda de este foro, gracias por tu tiempo.
 
hola, me podrían explicar como le hago una rutina de comprobar errores el siguiente programa tengo una secuencia de led que se enciendes al conectar un cableado utp par entrenando ,lo que quiero es saber como hacer que me muestre cuando hay error y cuando este bueno



saludes
 
Hola inspector gadget

Espero no haber omitido nada y que no tengas problemas con estos archivos.

saludos
a sus ordenes
 

Adjuntos

  • Mensaje23.zip
    11.6 KB · Visitas: 103
  • Mensaje24.zip
    16.2 KB · Visitas: 88
  • Mensaje25.zip
    13.5 KB · Visitas: 81
  • Mensaje26.zip
    14.2 KB · Visitas: 85
  • Mensaje40.zip
    18 KB · Visitas: 92
Saliendome un poquito del tema que llevan ahora en este hilo.. pero creo que es algo que aca puedo preguntar..:LOL: jeje.. alguien me podria decir si hay alguna forma de programar un pic en micro code studio y despues incorporarlo a la biblioteca de livewire para simularlo en un circuito?
 
Hola Milesatra

Creo que no hay forma de modificar las bibliotecas de LiveWire.
Sin embargo este simulador trae un dispositivo llamado Word Generator.
Este generador lo puedes incorporar en tu diseño, en LiveWire,
Luego editar sus propiedades para programarle unos o ceros en sus 16 salidas.
Eso que le programes lo puedes guardar como un archivo yyy.DAT para posteriormente re-utilizarlo.

saludos
a sus ordenes
 

Adjuntos

  • Word Generator.jpg
    Word Generator.jpg
    166.1 KB · Visitas: 48
Hola buenas tardes!!
Tengo un proyecto con un PIC16F628A , 3 botones , 2 leds y un Display 7 seg.

Velocidad.jpg


Consiste en que cada vez que el botón conteo se pulsa el numero va ir cambiando del 1-9.
cada numero va tener un ciclo distinto.
el botón START va activar ese ciclo dependiendo en el numero que se encuentre va ir ejecutando ese ciclo.
ejemplo:
Si el conteo esta en el numero 1 hace lo siguiente:
se prenden los 2 les después hace una pausa de 100 mili segundos se apaga el led2 y hace otra pausa 100 mili segundos y repite el ciclo infinitamente hasta que el botón RESETse apriete empezara todo.
y así sucesivamente con cada numero con la diferencia que cada numero cambia el timpo de espera.
Numero:
1------- 9 mili segundos
2------- 8 mili segundos
3------- 7 mili segundos
4------- 6 mili segundos
5------- 5 mili segundos
6------- 4 mili segundos
7------- 3 mili segundos
8------- 2 mili segundos
9------- 1 mili segundos

yo realice este código que aun no termino pero si me pudieran echar una manita por favor.

Código:
'*******************************************************************************
' DEFINICIÓN DE FUSES Y OSILADOR
@ device  pic16F628A, intrc_osc, pwrt_on, wdt_off, mclr_on, lvp_off, protect_off
DEFINE OSC 4
'*******************************************************************************
CMCON = 7
TRISA = %00000011
TRISB = %00000000
PORTA = 0
PORTB = 0
'*******************************************************************************
dI1 var byte
dI2 var byte
B0 var byte
B1 VAR BYTE
SUMA var byte
SUMA = 0
B0 = 0
B1 = 0
PORTB = 121
'*******************************************************************************
INICIO:
Button PORTA.0,1,255,0,B0,1,ESTADO
Button PORTA.1,1,255,0,B1,1,CLOCK
GOTO INICIO 

ESTADO:
suma = suma+1
if suma = 9 then suma = 0
di1 = suma
LOOKUP di1, [121,36,48,25,18,2,120,0,16], di2
PORTB = di2
pause 10
goto inicio

CLOCK:
PORTA.2 = 1
PAUSE 100
GOTO CLOCK1

CLOCK1:
END
que función me recomiendan para activar con un IF o con un CASE son las dos formas que se me ocurre para la activación del START.
Gracias y espero me puedan ayudar ;)
 
Última edición:
que función me recomiendan para activar con un IF o con un CASE son las dos formas que se me ocurre para la activación del START.
Gracias y espero me puedan ayudar

Buenas Noches!
aquí pongo una de las formas con la cual esta trabajando el proyecto bien!!

con la función Select Case:

Código:
'*******************************************************************************
' DEFINICIÓN DE FUSES Y OSILADOR
@ device  pic16F628A, intrc_osc, pwrt_on, wdt_off, mclr_on, lvp_off, protect_off
DEFINE OSC 4
'*******************************************************************************
CMCON = 7
TRISA = %00000011
TRISB = %00000000
PORTA = 0
PORTB = 0
'*******************************************************************************
dI1 var byte
dI2 var byte
B0 var byte
B1 VAR BYTE
SUMA var byte
SUMA = 0
B0 = 0
B1 = 0
PORTB = 121
'*******************************************************************************
INICIO:
Button PORTA.0,1,255,0,B0,1,ESTADO
Button PORTA.1,1,255,0,B1,1,CLOCK
GOTO INICIO 

ESTADO:
PAUSE 200
suma = suma+1
if suma = 9 then suma = 0
di1 = suma
LOOKUP di1, [121,36,48,25,18,2,120,0,16], di2
PORTB = di2
pause 10
goto inicio

CLOCK:
PORTA.2 = 1
GOTO CLOCK1

CLOCK1:
PAUSE 200
Select Case PORTB
case 121
goto NUM1
case 36
goto NUM2
case 48
goto NUM3
case 25
goto NUM4
CASE 18
goto NUM5
CASE 2
goto NUM6
CASE 120
goto NUM7
CASE 0
goto NUM8
CASE 16
goto NUM9
End Select 

NUM1:
PORTA.7 = 1
PAUSE 9
PORTA.7 = 0
PAUSE 9
GOTO NUM1

NUM2:
PORTA.7 = 1
PAUSE 8
PORTA.7 = 0
PAUSE 8
GOTO NUM2

NUM3:
PORTA.7 = 1
PAUSE 7
PORTA.7 = 0
PAUSE 7
GOTO NUM3

NUM4:
PORTA.7 = 1
PAUSE 6
PORTA.7 = 0
PAUSE 6
GOTO NUM4

NUM5:
PORTA.7 = 1
PAUSE 5
PORTA.7 = 0
PAUSE 5
GOTO NUM5

NUM6:
PORTA.7 = 1
PAUSE 4
PORTA.7 = 0
PAUSE 4
GOTO NUM6

NUM7:
PORTA.7 = 1
PAUSE 3
PORTA.7 = 0
PAUSE 3
GOTO NUM7

NUM8:
PORTA.7 = 1
PAUSE 2
PORTA.7 = 0
PAUSE 2
GOTO NUM8

NUM9:
PORTA.7 = 1
PAUSE 1
PORTA.7 = 0
PAUSE 1
GOTO NUM9
end

de esta manera hace los ciclos que necesito hasta que el reset reinicia todo.

Saludos y si a alguien le interesa el Código con gusto adjunto los archivos.
 

Adjuntos

  • Control-Velocidad.zip
    310.2 KB · Visitas: 145
Buenas Saludos a todos. soy nuevo en programación picbasic pro, quiero hacer un programa que active por un pin del pic16f628a una bomba de agua por 4 horas continuas. no encuentro instruccion que active un pulso por largo tiempo y posteriormente de desactive. Gracias por adelantado
 
Gracias D@rkbytes pero no entiendo la logica de
t2 = 300 ; 5 x 60 = 300 segundos (5 Minutos)

entiendo que los retardos son de 500ms como son dos es igual a 1sg pero, por que el contador tiene que ser hasta 300?



para 60 segundos seria:

LEDENCENDIDO VAR PORTB.0
SW1 var porta.0
I VAR BYTE
T var word
T1 var word

INICIO:

T=60
t1=0

If sw1=0 then goto PRENDERBOMBA
goto inicio


PRENDERBOMBA:
high ledencendido

TIEMPO:
if t1<T then
t1=t1+1
PAUSE 1000
Goto tiempo
ENDIF

low ledencendido
goto inicio:
END



Ok gracias ya entendi
 
Última edición:
Hola, una pregunta, estoy planenando hacer un sensor de luz para abrir y cerrar las ventanas de mi casa por medio de 1 solo motor, el problema es que me necesito usar el comparador analogico digital del pic 12f683, pero no se cuales sean los defines que necesito poner, si me pudieran ayudar con eso se los agradeceria mucho.
 
Hola, una pregunta, estoy planenando hacer un sensor de luz para abrir y cerrar las ventanas de mi casa por medio de 1 solo motor, el problema es que me necesito usar el comparador analogico digital del pic 12f683, pero no se cuales sean los defines que necesito poner, si me pudieran ayudar con eso se los agradeceria mucho.
Definiciones hay muchas, vienen en la ayuda de MicroCode Studio.
Tan solo escribe define y con el cursor sobre la palabra presiona la tecla F1, aparecerá la ayuda de PBP
Para empezar debes leer la hoja de datos del PIC en la sección 8.3 (Comparator Configuration)
Verás que los registros asociados son CMCON0, CMCON1 y VRCON

Suerte.
 
Última edición:
Atrás
Arriba