Curso de programación de PIC en PICBasic Pro

Biker2k3


En PROTON+ Compiler Development Suite debes utilizar la sentencia:

Código:
SLEEP [[I][COLOR=royalblue]tiempo[/COLOR][/I]]
Que encontraras en la página 371 de 405 del archivo Proton Users Guide.
donde tiempo es un número de 1 a 65535 y donde cada unidad representa 1 seg. Esta función en PROTON+ usa el WatchDogTimer que tu has deshabilitado.


También puedes utilizar la función Sleep directamente en ASM colocada dentro de tu programa en PROTON de la siguiente manera:

Código:
ASM
[[I]label[/I]] SLEEP
ENDASM
Para lo cual deberas leer en la Datasheet del Pic12F683 la página N° 110 de 176.

El Proton+ no soporta la función NAP que posee el PicBasicPro que además solo coloca al Pic en Sleep por un maximo de 2,304 Segundos (menos de 2 seg. y medio).



Saludos, JuanKa.-


Hola gracia spor la respuesta. Yo mire el manual del proton que tengo yo y dice que poniendo solo "sleep" el pic queda dormido hasta que ocurra una interrupcion. Tambien dice que hay que activar las pull-up pero mi programa y placa ya esta armado con pull-dowm. Y no se porque dice que hay que poner en cero las interrupciones globales, osea INTCON.7

Ahora me esta consumiendo 4.27mA osea que con la CR2032 me duraria 56horas con suerte y sin usarlo.

Igual yo en la protoboard lo tengo alimentado con una bateria de celular, y ahi no me consume nada, porque el positivo del pic esta desconectado, entra por el pulsador cuando lo apreto. Pero si le pongo la CR2032 es como que no le da la potencia y prende muy poco el infrarrojo y no anda.

Probe poner una pilita de 12v con un 78L05 pero el regulador me comio la pila en una noche
 
Última edición:
buenos dias amigos, necesito ayuda o consejos con respecto a que estoy realizando una caminadora con control de pulsación cardíaca, necesito saber que comando puedo utilizar para ir variando la velocidad del motor dependiendo a las pulsaciones que tenga a la entrada. un ejemplo: si en la entrada tengo 120 pulsaciones por min necesito que el motor baje su velocidad.
y necesito hacer por lo menos 4 velocidades. si tienen algun ejemplo mejor. espero su ayuda.
 
Hola!
Recientemente estoy aprendiendo a programar en PICBASIC y me gustaría que me ayudaran a aclarar unas dudas que tengo.

Ahí va la primera:

Si deseo mostrar un mensaje en una Pantalla LCD es algo fácil y sin misterio pero mi pregunta es, es posible mostrar variables sin alargar mucho el código. me explico

Queremos mostrar en una pantalla 20x4 en la ultima fila la variable VOLUME:

Definimos VOLUME = 31.5 − [0.5 • (255 − N)]

N en este caso es una variable de longitud de BYTE (8) que es mandada a través del comando SHIFTOUT.

mi interés en este caso seria que cuando cambiara N se calculara en la ecuación y se mostrara en pantalla. También pensé en definir cada numero N y corresponderlo con un mensaje diferente pero me gustaría saber si esto es posible.

Ahí va la siguente:

Si queremos definir un pulsador que al ser pulsado encienda un PIN usamos la siguiente sintaxis

SI el puerto A.0 = 1 entonces Puerto B.0 =1

esta sintaxis entiendo que es un pulsador como tal que solo muestra estado lógico en el Pin B.0 alto cuando el pin A.0 es Alto también.

mi pregunta es, como podría hacer para definir un interruptor, es decir, si pulso una vez mantiene el estado alto y si vuelvo a pulsarle mas tarde vuelva a el bajo

Espero que me ayuden, muchas gracias desde ya.
 
buenos dias amigos, necesito ayuda o consejos con respecto a que estoy realizando una caminadora con control de pulsación cardíaca, necesito saber que comando puedo utilizar para ir variando la velocidad del motor dependiendo a las pulsaciones que tenga a la entrada. un ejemplo: si en la entrada tengo 120 pulsaciones por min necesito que el motor baje su velocidad.
y necesito hacer por lo menos 4 velocidades. si tienen algun ejemplo mejor. espero su ayuda.

Hola mejor seria que tu colocaras un ejemplo y a partir de allí ir ayudándote, por lo menos la parte de las pulsaciones, ya que si ni siquiera eso puedes hacerlo no podrás hacer el resto del código.



Hola!
Recientemente estoy aprendiendo a programar en PICBASIC y me gustaría que me ayudaran a aclarar unas dudas que tengo.

Ahí va la primera:

Si deseo mostrar un mensaje en una Pantalla LCD es algo fácil y sin misterio pero mi pregunta es, es posible mostrar variables sin alargar mucho el código. me explico

Queremos mostrar en una pantalla 20x4 en la ultima fila la variable VOLUME:

Definimos VOLUME = 31.5 − [0.5 • (255 − N)]

N en este caso es una variable de longitud de BYTE (8) que es mandada a través del comando SHIFTOUT.

mi interés en este caso seria que cuando cambiara N se calculara en la ecuación y se mostrara en pantalla. También pensé en definir cada numero N y corresponderlo con un mensaje diferente pero me gustaría saber si esto es posible.

Ahí va la siguente:

Si queremos definir un pulsador que al ser pulsado encienda un PIN usamos la siguiente sintaxis

SI el puerto A.0 = 1 entonces Puerto B.0 =1

esta sintaxis entiendo que es un pulsador como tal que solo muestra estado lógico en el Pin B.0 alto cuando el pin A.0 es Alto también.

mi pregunta es, como podría hacer para definir un interruptor, es decir, si pulso una vez mantiene el estado alto y si vuelvo a pulsarle mas tarde vuelva a el bajo

Espero que me ayuden, muchas gracias desde ya.

Hola para la primera pregunta no estoy seguro si puedes efectuar la operación con decimales, pero de poderlo hacer, para lo que comentas puedes realizar igual una condicional con otra varibale digamos que se llame N1 y la variable N, vas a ir guardando el valor de N en N1 luego preguntas si N es distinto <> de N1 entonces muestras en la LCD y luego N1 = N

La otra pregunta hay una manera facil con el comando toggle, cambias el estado del pin, y seria asi:

SI el puerto A.0 = 1 entonces toggle Puerto B.0

Si colocas una simulación y un código base de lo que pretendes hacer es mas fácil la ayuda :apreton:
 
Última edición:
Amigo pull1988, no me funciono tu codigo aun no logro conectarlo bien con la configuración del virtual terminal del proteus, mas sin embargo como te indico lubeck pienso igual la única manera es hacer una especie de enlace y luego un menu, para poder saber en donde estas parado, me explico, tu sistema esta a miles de kilometros y lo vas a comandar por mensajes, digamos que quieres activar uno de los reles, como sabes el estatus actual del rele? esta activado o esta desactivado el rele que quieres usar?, entonces para eso seria el menú, aparte de tener una selección para activar y otra para desactivar. Entonces lo primero seria establecer una cabecera para tener acceso al sistema.
Cuando te indique que activar en el comando serout2 era una bandera, es porque de eso se trata, para poder diferenciar entre todo lo que vaya llegando utilizas la bandera, en el primer código la utilizas para activar, y en el segundo codigo hiciste lo mismo, la diferencia es que colocaste un tiempo de espera para esa bandera y si no llegaba esperas la otra bendera por x tiempo, de esa forma lo que haces es distraer al sistema en ves de que este atento a los comandos, para evitar eso, haces la cabecera de enlace o conexión, que sirve para mantener al sistema atento a un solo comando, luego de que le llegue ese comando entonces en funcion a lo que viene junto a ese comando el espera la siguiente bandera y así sucesivamente.
Entonces digamos que la cabecera es CONECTAR, el sistema no va hacer nada hasta que llegue ese comando, cuando llegue ese comando el siguiente le va indicar que va hacer, digamos que tienes 3 opciones, si es 1 se va a una subrutina a esperar el comando activar, si es 2 a otra subrutina a esperar el comando desactivar y todos los que se necesiten, luego de eso en cada una de las subrutinas se queda esperando pues el comando correspondiente mas el dato, y según el dato hace una cosa o otra. Hice un video de ejemplo para que te inspires en el me llevo 30min y es parte del mismo que hicimos la diferencia es que copie y pegue varias subrutinas y cambie los comandos.


Nota: El tamaño del codigo es de casi 2k (1980), por lo que sugiero utilizar uno de mas capacidad o unas rutinas mas simples para lograr lo mismo o algo similar...saludosss :apreton:
 
Biker2k3


En PROTON+ Compiler Development Suite debes utilizar la sentencia:

Código:
SLEEP [[I][COLOR=royalblue]tiempo[/COLOR][/I]]
Que encontraras en la página 371 de 405 del archivo Proton Users Guide.
donde tiempo es un número de 1 a 65535 y donde cada unidad representa 1 seg. Esta función en PROTON+ usa el WatchDogTimer que tu has deshabilitado.


También puedes utilizar la función Sleep directamente en ASM colocada dentro de tu programa en PROTON de la siguiente manera:

Código:
ASM
[[I]label[/I]] SLEEP
ENDASM
Para lo cual deberas leer en la Datasheet del Pic12F683 la página N° 110 de 176.

El Proton+ no soporta la función NAP que posee el PicBasicPro que además solo coloca al Pic en Sleep por un maximo de 2,304 Segundos (menos de 2 seg. y medio).



Saludos, JuanKa.-



En ese mismo manual dice que se puede usar solo la funcion sleep y tene que reactivarse al detectar una interrupcion en alguna entrada, hay un ejemplo en la pagina 372.

Otra opcion seria bajar la velocidad del pic pero tampoco pude hacerlo. Tiene que seguir funcionando el serin y serout.



Asi estan conectadas las entradas y salidas

GP5 (Boton A)
GP4 (Boton B)
GP1 (Boton C)
GP2 +LED IR
GP0 -LED IR
 
Última edición:
amigos del foro, saludo cordial. Mi pregunta tiene que ver con una matriz de leds 7x32 con pic 16f628,publicada en este foro, pero que como su programa esta hecho en picbasic y como su autor no responde los mensajes, me atrevo a solicitarles a ustedes que manejan este lenguaje, por medio de este hilo, nos ayuden a entender el porque SOLO funciona en la simulacion, el hex que el autor coloca para dicha simulacion, siendo que supuestamente su autor nos brinda el programa (sin egoismos como el mismo lo dice)para que hagamos modificaciones, pero si lo tomamos el supuesto programa original y lo compilamos, no muestra ningun error en este proceso y mas aun en la simulacion en proteus comienza a correr el codigo sin mostrar errores pero tampoco muestra el mensaje en la matriz 7x32. Repito que no le he hecho modificaciones al programa original, pero si corro el hex del archivo, simula los mensajes sin nigun problema, claro que se ven al reves pero imagino que ¿ sera cuestion de ordenar datos? . Ayudennos a entender por que no muestra los mensajes la matriz y asi comprender donde esta el problema de este programa, no le he podido encontrar el detalle... muchas gracias.
 

Adjuntos

  • Inter matriz.rar
    19.7 KB · Visitas: 148
hola gente tanto tiempo jeje...
amigo reyvilla: este ejemplo de matriz esta posteada en el foro pero en este momento no me acuerdo donde jeje... es verdad lo que dice el amigo inspector gadgets, yo ya la habia bajado y probado y ami tampoco me funciono ¿como hiciste para que te funcionara? ¿no es que simplemente habia que cambiar el texto 'crsto viene pronto...'? porque yo hice exactamente eso y no me funciono. saludosss
 
Allí esta lo interesante del caso, a mi no me tomo mucho tiempo verlo, debe ser por que me gusta saber como funcionan las cosas, es difícil, no estoy diciendo que no me costo pero me resulto fácil conseguirle el problema, primero como ejemplo esta bien para simularlo, pero como practica real le faltan varias cosas, como configuración de fuses, etc...

El detalle esta en la configuración de los pines de los registros de desplazamiento.

Una cosa recordar que si no se declara el microcontrolador a utilizar el microcode puede tomar otro, estar pendiente de elegir el mismo que esta en la simulación a la hora de compilar.
 
Amigo reyvilla, un saludo cordial de un hermano Colombiano, me has dejado boquiabierto ya que he pasado todo el dia intentando entender por que no me funciona la simulacion cuando le hago cambios en el mensaje y luego compilo sin problemas, solo simula si cargo el hex del archivo. Por otro lado hace 5 minutos que revise donde saque el archivo y se encuentra en este foro, en el hilo:matriz de led 7x32 con pic 16f628a y su autor es:fey116. Creeme que ya estaba resignado, pero como decimos por aca ¡llegaste a salvar la patria! no solo a mi me sucedio esto ya que otros foreros tenian el mismo problema con esta matriz, pero no buscaron la respuesta. Dime por favor porque no me funciona, lo que hago es tomar el programa tal y como esta, hasta ahi todo bien, lo compilo y OK, cargo el hex que me genera y no obsrvo caracteres en la matriz, vuelvo y cargo el hex ya compilado osea el que se encuentra en el archivo y zas funciona pero con el mensaje del autor. no se que estoy haciendo mal, orientame y Feliz dia del trabajo!!! aunque me toca trasnochar por una solucion jajaja..
 
Hola como dije arriba el problema esta en la configuracion de los pines de los registros de desplazamiento, el de dato y el del clock
Aparte de eso, si quieres que se vea mejor coloca el oscilador a 20MHZ, tanto en la simulación como en el código.
 
Otra vez aqui, gracias por la observacion reyvilla, detecto que los pines data y clock que salen del micro, estan invertidos respecto al programa..mmm aparte de la declaracion de los fuses no veo mas..a seguir buscando, voy a compilar....
 
jajaja... ni me habia fijado en la coneccion de los pines y no habia tenido en cuenta el tema de los fuses... amigo rey, gracias por la aclaracion. te cuento que a la matriz que hice yo y que postie el link mas atras, la hice porque no le encontraba la vuelta a esta jajaja... aveces el arbol no nos deja ver el bosque jaja... saludosss
por cierto, acomodando eso de los pines y los fuses el programa funciona perfecto. (y)
 
Si eso pasa amenudo incluso haciendo mis propios códigos aveces me enredo que queda para el que realizo otro, solo hay que estar pendiente de todo y de los detalles.(y)
 
inspector gadget dijo:
hola estoy en busca de otro detalle, ya que el mensaje cambia a mi gusto, pero es como si lo sobreescribiera sobre el anterior porque cuando mi mensaje termina, continua parte del que estaba antes. No se poque no puedo borrar el mensaje anterior, Deduzco que tenga que ver con que ademas de los caracteres tambien tenga quee cambiar datos o algo asi... mil gracias por tu aporte reyvilla valiosisimo para el aprendizaje y la observacion detallada, ojala puedas seguirnos colaborando y Dario un saludo y a ver que avances logramos a partir de que la matriz ya despego (efectos,memoria externa,ojala teclado ps2 y demas..), gracias muchachos.

Se puede tener por compañera la fantasía, pero se debe tener como guía a la razón.
Samuel Johnson (1709-1784) Escritor inglés
 
Última edición:
Atrás
Arriba