Curso de programación de PIC en PICBasic Pro

Sobre este mismo tema puedes encontrar varios ejemplos sobre el uso de interrupciones.
Lo más conveniente en el receptor sería el uso de la interrupción por recepción del módulo USART.
Lee la hoja de datos del PIC16F628A y encontrarás todo lo referente a su uso.

Y sobre lo de mejorar el código, ya te mencioné algunas cosas que puedes hacer.
 
Acaso creen que copie el codigo, no saben lo que me costo hacer la comunicacion, como vi que explican a otros cosas mas elementales hasta le dan ejemplos hasta realizan su codigo, yo solo pedi una idea o ejemplo donde yo lo pudiera modificar o agregar ya que no sabia por donde empezar, pero estoy leendo y buscando segun las sugerencias, antes de emitir un comentario insensato, primero ai que valorar el esfuerzo de los que recien se inician, pero vale la acotacion como les dije estoy investigando y leendo ojala lo consiga gracias igual D@rkbytes que fue el unico que emitio un comentario con aportes
 
No te molestes, pero es que primero debes cambiar tu programa con lo que se te ha sugerido.
Cuando lo hagas, y si tienes problemas, se podrá revisar para encontrar posibles errores.

Tu programa actual no es muy grande, pero sí bastante mal elaborado, y es un hecho que se puede mejorar.
Así qué, realiza los cambios con lo que se te ha sugerido y si tienes problemas, lo publicas, mencionando tus problemas.

Si no eres tú quien realice esas mejoras, nadie lo hará por tí.
Y si nadie más ha sugerido mejoras a tu programa, es porque no has hecho caso sobre lo que se te ha dicho, y seguramente están esperando a que lo hagas.
 
Hola...Aunque no es un ejemplo de PBP ya que no lo tengo instalado, es en Proton Basic.
Enciende un led después de 100 mili segundos y cuando cualquiera de los botones del puerto B desde 4 a 7 cambie de estado(de alto a bajo o de bajo a alto) durante 1 segundo lo mantiene encendido para después mandar a dormir al micro controlador hasta que ocurra el próximo cambio de estado en dichos pines.
No lo probé en físico pero en el simulador funciona y a fin de tener una ejemplo(era lo que buscabas) te servirá.
Saludos.

Ric.
 

Adjuntos

gracias, si lo estoy haciendo sabia que mi programa estaba muy mal elaborado es uno de los primeros que realizo siguiendo mi propio criterio, es muy dificil para mi ya tengo problemas con el ingles estoy leendo el manual y tratando de entender como activar las interrupciones usar la interrupcion RCIE: USART Receive Interrupt Enable bit, y la otra TXIE: USART Transmit Interrupt Enable bit, del registro PIE, voy realizar la activacion, hacer la declaracion en microcode, y tratar de acomodar el programa, para este en reposo el RX/TX cuando no se este pulsando nada, y que solo trasmita cuando se pulse cualquiera de las 4 entradas.

El tema del alto consumo tambien creo que pasa por usar el regulador 7805 con bateria de 9V, mucha enerjia se pierde en calor, optare por usar los modulos reguladores de voltaje step down, no se si sera la mejor opcion.
 
Última edición:
Si continuas así, vas por muy buen camino. Porque usar las interrupciones es algo imprescindible.
Mejoran bastante el desempeño de un programa.

En cuanto al consumo de un PIC, es mínimo, lo que consume energía son los dispositivos que controla.
Y puedes controlar cargas de la potencia que requieras. (Previa Interfaz)
Un PIC puede funcionar correctamente con un regulador 78L05 (100 mA Max)
Pero lo que debes ver, es el consumo externo requerido y optar por una fuente de poder bien diseñada.
Puede ser, Step-Up "Boost Converter" o Step-Down "Buck Converter"
Ambos métodos son aceptables y son mucho mejor que una fuente de poder con transformador.
Reducen tamaño y consumo, por ende, mejor rendimiento. Y si es Off-Line, mejor, pero depende el tipo de sistema.
 
el problema fue que el programa como esta lo deje conectado un dia entero en el receptor solo tengo leds conectados, pero durante el dia no pulse nada y la bateria de 9v recargable se me descargo en un solo dia, lo cual me parece que es muy poco tiempo. Estoy usando bateria recargable de 9v en trasmisor y receptor igual. teniendo en cuenta lo que dices en cuanto al consumo del pic es muy poco no entiendo porque me duro tan poco la bateria.
 
consulta talves sea elemental para ustedes pero a mi esta dando unos problemas esta duda:

realizando el codigo del pic en microcode studio especificamente del 16F628A.
1. Sino hago uso del las declaraciones de los puertos para que sean entradas ni saldidas en los 2 puertos
osea no hago uso de TRISA ni TRISB como lo asume el programa.
2.Si declaro TRISB = %00000000 enque estado se pone los pines que no se les programa tarea alguna, osea que quedaran libres.
3.Los pines libres como es combeniente dejarlos, en cuanto a consumo, ruidos, interferencias o falsos.
 
Al usar las instrucciones TRISX = %00000000 (Todo el puerto será configurado como salidas)
Y con TRISX = %11111111 (Todo el puerto será configurado como entradas)
Un 1 establece entrada y un 0, salida.

El valor que tomen si no se establece alguno, se puede ver en la hoja de datos, y se da en el POR (Power On Reset)

Ahora, cuando se usan las instrucciones Low Pin y High Pin, no tiene caso hacer uso de TRIS.
Porque esas instrucciones hacen al pin indicado, salida.

PD: El programa de Ricbevi está más orientado al PBP que a Proton.
Porque en Proton Basic no hay motivo de declarar los bits de los registros, ya que se pueden usar directamente.
Por ejemplo:
INTCONbits_GIE = 1

Y ya orientado al Basic de Proton...
PHP:
    INTCONbits_GIE = 1      ' Activar las interrupciones globales
    INTCONbits_PEIE = 1     ; Activar la interrupción de los periféricos.
    OPTION_REGbits_RBPU = 0 ' Habilita las resistencias Pull-up del puerto B
    INTCONbits_RBIE = 1     ' Habilta las interrupciones por cambio de estado PORTB[4..7]
 
El programita que subí esta basado en el ejemplo que trae el mismo Proton en su instalación.
Efectivamente si Proton reconoce el nombre puesto como el de un registro, cambia de color en el editor y no sería necesaria su declaración previa ya que fue reconocido.
Al mismo pin lo puedes usar como entrada y salida (si el micro lo permite y depende de la función que le darás).
Generalmente el compilador cambia solo el estatus del registro TRIS según interprete que lo estas usando como entrada o salida.
Para no dejar dudas al respecto a mi personalmente me gusta declara todo y dejar lo menos posible a la libre interpretación.


Ric.
 
Para no dejar dudas al respecto, a mi personalmente me gusta declarar todo y dejar lo menos posible a la libre interpretación.
Lo cual es muy correcto sin entrar en redundancias que a final de cuentas nada más nos hacen escribir código extra sin función útil.
Es correcto que se declaren cosas que no están definidas, pero las que ya son nativas, ni al caso, se usan y se ejecutan directamente.

Y te voy a ser sincero al hablar de PBP a Proton, Proton es mucho mejor al PBP.
Proton cuenta con una optimización de código superior a PBP. (Y hasta permite el uso de variables Float)
Tiene muchas más instrucciones, porque su estructura está orientada al Visual Basic.
Ambos disponen el uso directo de los registros y también se puede agregar lenguaje ensamblador.
Pero, Proton es más amigable es éste aspecto, porque ya los tiene declarados como algo nativo.
Al igual que usar XC o al mismo ensamblador.

Ventajas entre los varios lenguajes hay muchas, lo que se debe tener en cuenta es saber usar lo que se tiene o se sabe.