desktop

Curso de programación de PIC en PICBasic Pro

Hola alguien que me pueda ayudarcon la palabra de onfiguracion de un pic 18f4520 aca les dejo los archivos del programa y la simulacion en proteus es una matriz 6x6 que va sumando.
 

Adjuntos

  • TECL6X6 PIC18F4520.rar
    85.4 KB · Visitas: 74
Última edición:
Hola alguien que me pueda ayudarcon la palabra de onfiguracion de un pic 18f4520
Para establecer la palabra de configuración en ese PIC o en otros de la serie 18, tienes que hacer lo siguiente.

1.- Buscar dentro de la carpeta de instalación del compilador PBP, el archivo 18F4520.INC y realizas una copia de seguridad de ese archivo, ya que tendrá que ser modificado.
2.- Para saber que fuses están disponibles para el PIC18F4520 se necesita el archivo P18F4520.INC que se encuentra en la carpeta MPASM Suite en la carpeta de instalación de MPLAB.
Por defecto en: C:\Archivos de programa\Microchip\MPASM Suite
Dentro del archivo que será editado (18F4520.INC) está el siguiente código:
Código:
;****************************************************************
;*  18F4520.INC                                                 *
;*                                                              *
;*  By        : Leonard Zerman, Jeff Schmoyer                   *
;*  Notice    : Copyright (c) 2010 microEngineering Labs, Inc.  *
;*              All Rights Reserved                             *
;*  Date      : 05/21/10                                        *
;*  Version   : 2.60a                                           *
;*  Notes     :                                                 *
;****************************************************************
        NOLIST
    ifdef PM_USED
        LIST
        "Error: PM does not support this device.  Use MPASM."
        NOLIST
    else
        LIST
        LIST p = 18F4520, r = dec, w = -311, w = -230, f = inhx32
        INCLUDE "P18F4520.INC"   ; MPASM  Header
        __CONFIG    _CONFIG1H, _OSC_HS_1H & _FCMEN_OFF_1H & _IESO_OFF_1H
        __CONFIG    _CONFIG2H, _WDT_ON_2H & _WDTPS_512_2H
        __CONFIG    _CONFIG3H, _CCP2MX_PORTC_3H & _PBADEN_OFF_3H & _LPT1OSC_OFF_3H & _MCLRE_ON_3H
        __CONFIG    _CONFIG4L,  _STVREN_ON_4L & _LVP_OFF_4L & _XINST_OFF_4L
        NOLIST
    endif
        LIST
EEPROM_START    EQU    0F00000h
BLOCK_SIZE    EQU    32
5.- El código que contiene ese archivo deberá ser modificado en la parte que contiene la palabra de configuración.
Por ejemplo, de esta forma:
Código:
        NOLIST
    ifdef PM_USED
        LIST
        "Error: PM does not support this device.  Use MPASM."
        NOLIST
    else
        LIST
        LIST p = 18F4520, r = dec, w = -311, w = -230, f = inhx32
        INCLUDE "P18F4520.INC"   ; MPASM  Header
        [B]CONFIG OSC = XT, WDT = OFF, PWRT = ON, LVP = OFF, BOREN = OFF[/B]
        NOLIST
    endif
        LIST
EEPROM_START    EQU    0F00000h
BLOCK_SIZE    EQU    32
En este ejemplo utilicé la palabra de configuración que requiere tu programa, y puedes modificarla utilizando los fuses que se encuentran disponibles en el archivo P18F4520.INC

Nota importante:

Este tipo de palabra de configuración tiene que ser soportada por MPASM, por lo cual se tiene que tener actualizado MPLAB ya que en el archivo P18F4520.INC se menciona lo siguiente...
; IMPORTANT: For the PIC18 devices, the __CONFIG directive has been
; superseded by the CONFIG directive.

Traducción:
IMPORTANTE: Para los dispositivos PIC18, la directiva __ CONFIG ha sido sustituida por la directiva CONFIG.

De esta forma es como he agregado la nueva palabra de configuración al archivo de PBP, 18F4520.INC

Teniendo este detalle en cuenta, no debes tener problema para compilar tu programa con la palabra de configuración.

Suerte.
 
Última edición:
Hola amigos de los pic:
Estoy intentando hacer un timer regulable (con pot) con el pic12f675 por ser pequeño, he buscado informacion pero solo hay en lenguaje C, y la verdad soy nuevo con esto de los pic, todavia no comprendo como usar el ADC, si alguien me ayuda por favor. El proyecto es para encender 2 luces exteriores, cuando se presiona un pulsador se encienden las dos y luego la una se apaga en 1 min aprox y la otra se apaga en 5min aprox. Lo tengo hecho con tiempos fijos, con pauses y next for, pero me gustaria hacerlo regulable para no estar retirando el pic cada rato para probar un nuevo tiempo. Por cierto estoy practicando con basic. Gracias por su ayuda.
 
Hola LaElectronicaMeOdia, muchas gracias por tu valioso aporte, agradecería mucho me puedas ayudar con una duda que tengo, he bajado tu código y al inicio del programa CyberCtrl.pbp tienes algunas declaraciones que van precedidas de un símbolo aroba @, es necesario poner eso?; porque yo estoy realizando un programa con un PIC18F2550 al cual he conectado 18 LED en los puertos desde el A1 al B7; todo me funciona perfecto y puedo encender y apagar los LEDs desde la PC usando VB.NET 2010 sin uysar esas declaraciones; pero al aumente una parte de código para que una vez encienda el puerto usando DoUSBOut yo lea el puerto que acabo de encender y lo mando hacia la compu la cual me lee si es (1) ó (0) y me da un mensaje de que se encendió correctamente o no; pero al incrementar eso el programa empieza a colgarse y para encender cada led debo esperar entre 3 segundos o 4 no puedo encenderlos de manera seguida porque el PIC deja de funcionar; y en otras ocaciones asi espere ese tiempo ya no responde el PIC, espero ser claro en mi pregunta y gracias de antemano



Hola Torres, me sirvio mucho tu consejo para cambiar la forma de como estaba viendo el flujo del USBIN, y efectivamente se queda "esperando" el valor.

pongo el diagrama de flujo por si a alguien le sirve.



lo que hice fue poner un timer en VB6 que este enviando el Valor cada 1ms y asi "destrabar" la espera y como mencionas otra posibilidad es el uso de interrupciones en lugar del button, pero se me hizo mas facil de esa manera :D

Muchas gracias por tu ayuda!.

ademas anexo el ejemplo de comunicacion bidireccional con usb para quien le pueda servir.
esta probado en PBP 2.5, MCS 3.0, MPASM 5.2 y Proteus 7.8

SAludos y de nuevo gracias.


Hola LaElectronicaMeOdia, muchas gracias por tu valioso aporte, agradecería mucho me puedas ayudar con una duda que tengo, he bajado tu código y al inicio del programa CyberCtrl.pbp tienes algunas declaraciones que van precedidas de un símbolo aroba @, es necesario poner eso?; porque yo estoy realizando un programa con un PIC18F2550 al cual he conectado 18 LED en los puertos desde el A1 al B7; todo me funciona perfecto y puedo encender y apagar los LEDs desde la PC usando VB.NET 2010 sin uysar esas declaraciones; pero al aumente una parte de código para que una vez encienda el puerto usando DoUSBOut yo lea el puerto que acabo de encender y lo mando hacia la compu la cual me lee si es (1) ó (0) y me da un mensaje de que se encendió correctamente o no; pero al incrementar eso el programa empieza a colgarse y para encender cada led debo esperar entre 3 segundos o 4 no puedo encenderlos de manera seguida porque el PIC deja de funcionar; y en otras ocaciones asi espere ese tiempo ya no responde el PIC, espero ser claro en mi pregunta y gracias de antemano
 
Última edición:
Hola amigo D@rkbytes
Agradezco mucho tu ayuda hice lo que me dijiste y le meti el codigo para mi programa como tu me lo escribiste y todo funcionaba bien excepto que el no leia el portb, como te comentaba desconozco lo referente a editar la palabra de configuracion y no se el significado de los fuses quisiera aprender mas de esto si pudieras decirme o recomendarme donde aprender mas de esto te lo agradeceria.
Al ver que mi puerto b no lo leia me meti al archivo que me mencionaste y comence a leer un poco y por un golpe de suerte me encontre con la instruccion de PBADEN = OFF PORTB<4:0> pins are configured as digital I/O on Reset, y decidi agregarsela al programa que tu me enviaste y pum funciono mi programa al menos en la simulacion en proteus, espero que funcione fisicamente. Nuevamente te agradezco y pongo como quedo el programa. Saludos y espero me recomiendes donde aprender mas de esto.
Saludos
Código:
;****************************************************************
;*  18F4520.INC                                                 *
;*                                                              *
;*  By        : Leonard Zerman, Jeff Schmoyer                   *
;*  Notice    : Copyright (c) 2010 microEngineering Labs, Inc.  *
;*              All Rights Reserved                             *
;*  Date      : 05/21/10                                        *
;*  Version   : 2.60a                                           *
;*  Notes     :                                                 *
;****************************************************************
                    NOLIST
    ifdef PM_USED
        LIST
        "Error: PM does not support this device.  Use MPASM."
        NOLIST
    else
        LIST
        LIST p = 18F4520, r = dec, w = -311, w = -230, f = inhx32
        INCLUDE "P18F4520.INC"   ; MPASM  Header
        CONFIG OSC = XT, WDT = OFF, PWRT = ON, MCLRE = ON, PBADEN = OFF, LVP = OFF, BOREN = OFF
        NOLIST
    endif
        LIST
EEPROM_START    EQU    0F00000h
BLOCK_SIZE    EQU    32

Para establecer la palabra de configuración en ese PIC o en otros de la serie 18, tienes que hacer lo siguiente.

1.- Buscar dentro de la carpeta de instalación del compilador PBP, el archivo 18F4520.INC y realizas una copia de seguridad de ese archivo, ya que tendrá que ser modificado.
2.- Para saber que fuses están disponibles para el PIC18F4520 se necesita el archivo P18F4520.INC que se encuentra en la carpeta MPASM Suite en la carpeta de instalación de MPLAB.
Por defecto en: C:\Archivos de programa\Microchip\MPASM Suite
Dentro del archivo que será editado (18F4520.INC) está el siguiente código:
Código:
;****************************************************************
;*  18F4520.INC                                                 *
;*                                                              *
;*  By        : Leonard Zerman, Jeff Schmoyer                   *
;*  Notice    : Copyright (c) 2010 microEngineering Labs, Inc.  *
;*              All Rights Reserved                             *
;*  Date      : 05/21/10                                        *
;*  Version   : 2.60a                                           *
;*  Notes     :                                                 *
;****************************************************************
        NOLIST
    ifdef PM_USED
        LIST
        "Error: PM does not support this device.  Use MPASM."
        NOLIST
    else
        LIST
        LIST p = 18F4520, r = dec, w = -311, w = -230, f = inhx32
        INCLUDE "P18F4520.INC"   ; MPASM  Header
        __CONFIG    _CONFIG1H, _OSC_HS_1H & _FCMEN_OFF_1H & _IESO_OFF_1H
        __CONFIG    _CONFIG2H, _WDT_ON_2H & _WDTPS_512_2H
        __CONFIG    _CONFIG3H, _CCP2MX_PORTC_3H & _PBADEN_OFF_3H & _LPT1OSC_OFF_3H & _MCLRE_ON_3H
        __CONFIG    _CONFIG4L,  _STVREN_ON_4L & _LVP_OFF_4L & _XINST_OFF_4L
        NOLIST
    endif
        LIST
EEPROM_START    EQU    0F00000h
BLOCK_SIZE    EQU    32
5.- El código que contiene ese archivo deberá ser modificado en la parte que contiene la palabra de configuración.
Por ejemplo, de esta forma:
Código:
        NOLIST
    ifdef PM_USED
        LIST
        "Error: PM does not support this device.  Use MPASM."
        NOLIST
    else
        LIST
        LIST p = 18F4520, r = dec, w = -311, w = -230, f = inhx32
        INCLUDE "P18F4520.INC"   ; MPASM  Header
        [B]CONFIG OSC = XT, WDT = OFF, PWRT = ON, LVP = OFF, BOREN = OFF[/B]
        NOLIST
    endif
        LIST
EEPROM_START    EQU    0F00000h
BLOCK_SIZE    EQU    32
En este ejemplo utilicé la palabra de configuración que requiere tu programa, y puedes modificarla utilizando los fuses que se encuentran disponibles en el archivo P18F4520.INC

Nota importante:

Este tipo de palabra de configuración tiene que ser soportada por MPASM, por lo cual se tiene que tener actualizado MPLAB ya que en el archivo P18F4520.INC se menciona lo siguiente...
; IMPORTANT: For the PIC18 devices, the __CONFIG directive has been
; superseded by the CONFIG directive.

Traducción:
IMPORTANTE: Para los dispositivos PIC18, la directiva __ CONFIG ha sido sustituida por la directiva CONFIG.

De esta forma es como he agregado la nueva palabra de configuración al archivo de PBP, 18F4520.INC

Teniendo este detalle en cuenta, no debes tener problema para compilar tu programa con la palabra de configuración.

Suerte.
 
Hola amigo D@rkbytes
Agradezco mucho tu ayuda hice lo que me dijiste y le metí el código para mi programa como tu me lo escribiste y todo funcionaba bien excepto que el no leía el portb, como te comentaba desconozco lo referente a editar la palabra de configuración y no se el significado de los fuses quisiera aprender mas de esto si pudieras decirme o recomendarme donde aprender mas de esto te lo agradecería.
Al ver que mi puerto b no lo leía me metí al archivo que me mencionaste y comencé a leer un poco y por un golpe de suerte me encontré con la instrucción de PBADEN = OFF PORTB<4:0> pins are configured as digital I/O on Reset, y decidí agregársela al programa que tu me enviaste y pum funciono mi programa al menos en la simulación en proteus, espero que funcione físicamente. Nuevamente te agradezco y pongo como quedo el programa. Saludos y espero me recomiendes donde aprender mas de esto.
Saludos
Lo ves, no es tan complicado modificar el archivo con la palabra de configuración que requiera tu programa.
Tan solo tienes que ver para que sirve cada fuse y determinar si lo necesitas activar o no.

En cuanto a aprender más acerca de la palabra de configuración, hay poca información al respecto,
ya que son muchos tipos de PIC los que hay, y varían los nombres que se usan en la palabra de configuración.
El mejor archivo con la explicación es precisamente el que te mencioné, ahí vienen explicados.
En esa carpeta encontrarás los archivos correspondientes *.INC con mucha información del PIC en cuestión.

Saludos.
 
Hola quiero hacer una suma de variables, quisiera saber si alguien me puede ayudar para simplificar el codigo lo intente con FOR NEXT pero no me quedo en que estare equivocandome
Lo hice asi:

Código:
cuenta = nu[0]+nu[1]+nu[2]+nu[3]+nu[4]+nu[5]+nu[6]+nu[7]+nu[8]+nu[9]+nu[10]+nu[11]+nu[12]+nu[13]+nu[14]+nu[15]

aca esta mi codigo completo.

Código:
CLEAR
trisb = %00111111
trisc = 0
trisd = 0

portb = 0
portc = 0
portd = 0
cuenta var byte
cuentabcd var byte
nu var byte [36]


                           

inicio:

'primera fila
portd = %00000001
if portb = %00000000 then nu[0] = 0
if portb = %00000001 then nu[1] = 1
if portb = %00000010 then nu[2] = 2
if portb = %00000100 then nu[3] = 3
if portb = %00001000 then nu[4] = 4
if portb = %00010000 then nu[5] = 5
if portb = %00100000 then nu[6] = 6
pause 10
'segunda fila
portd = %00000010
if portb = %00000001 then nu[7] = 6
if portb = %00000010 then nu[8] = 5
if portb = %00000100 then nu[9] = 4
if portb = %00001000 then nu[10] = 3
if portb = %00010000 then nu[11] = 2
if portb = %00100000 then nu[12] = 1
pause 10
'tercera fila
portd = %00000100
if portb = %00000001 then nu[13] = 1
if portb = %00000010 then nu[14] = 2
if portb = %00000100 then nu[15] = 3
if portb = %00001000 then nu[16] = 4
if portb = %00010000 then nu[17] = 5
if portb = %00100000 then nu[18] = 6
pause 10
'cuarta fila
portd = %00001000
if portb = %00000001 then nu[19] = 6
if portb = %00000010 then nu[20] = 5
if portb = %00000100 then nu[21] = 4
if portb = %00001000 then nu[22] = 3
if portb = %00010000 then nu[23] = 2
if portb = %00100000 then nu[24] = 1
pause 10
'quinta fila
portd = %00010000
if portb = %00000001 then nu[25] = 1
if portb = %00000010 then nu[26] = 2
if portb = %00000100 then nu[27] = 3
if portb = %00001000 then nu[28] = 4
if portb = %00010000 then nu[29] = 5
if portb = %00100000 then nu[30] = 6
pause 10
'sexta fila
portd = %00100000
if portb = %00000001 then nu[31] = 6
if portb = %00000010 then nu[32] = 5
if portb = %00000100 then nu[33] = 4
if portb = %00001000 then nu[34] = 3
if portb = %00010000 then nu[35] = 2
if portb = %00100000 then nu[36] = 1
pause 10


cuenta = nu[0]+nu[1]+nu[2]+nu[3]+nu[4]+nu[5]+nu[6]+nu[7]+nu[8]+nu[9]+nu[10]+nu[11]+nu[12]+nu[13]+nu[14]+nu[15]+nu[16]+nu[17]+nu[18]+nu[19]+nu[20]+nu[21]+nu[22]+nu[23]+nu[24]+nu[25]+nu[26]+nu[27]+nu[28]+nu[29]+nu[30]+nu[31]+nu[32]+nu[33]+nu[34]+nu[35]+nu[36]

cuentabcd = ((cuenta / 10) << 4) + (cuenta // 10)
portc = cuentabcd


goto inicio

Saludos
 
Saludos erickp, si pudieses colocar el archivo de la simulacion para buscar una solucion, y ver en que te podemos ayudar seria bueno.! Saludos!


Hola te nvio las archivos que me pides, cabe señalar que el codigo si funciona, solo quiero depurar esa parte, ya que soy novato en programacion, agradezco tu interes. saludos
 

Adjuntos

  • tecmatdep.rar
    78.8 KB · Visitas: 66
Hola. A ver si alguien me puede ayudar.
Hice el siguiente código y lo simule en proteus, pero al ponerle 4 mhz en la frecuencia del microcrontrolador, me sale un error de que ADC conversión clock está mal.
El otro problema es. ¿Por qué en la simulación se ven así los displays?
No lo he llevado a cabo a la practica. ¿Me sucederá lo mismo?
Saludos y gracias.
 

Adjuntos

  • ADCSIN7447PIC16F677.rar
    92.7 KB · Visitas: 63
Última edición por un moderador:
al ponerle 4 mhz en la frecuencia del microcrontrolador, me sale un error de que ADC conversión clock está mal.
Eso se debe al utilizar las configuraciones que usa PICBasic Pro en las Definiciones.
No en todos los PIC establece los parámetros adecuados para el conversor analógico.
Por eso es recomendable hacer un debug del programa para ver los valores de los registros en Watch Window
El otro problema es. ¿Por qué en la simulación se ven así los displays?
En la simulación muchas veces debido a la velocidad de conmutación los displays no funcionan bien.
Existen algunos trucos por software y por hardware para disminuir el parpadeo durante la simulación, pero luego al montar el circuito físicamente se tienen que eliminar para que el circuito funcione correctamente.
No lo he llevado a cabo a la practica. ¿Me sucederá lo mismo?
Muy probablemente, ya que en tu código estás utilizando retardos de 10Ms después de cada lectura.
Eso hará que el parpadeo de los displays sea muy notorio, porque estás realizando 6 lecturas.

Te recomiendo que antes de programar un PIC, leas bien sobre los registros con los que vas trabajar.
Así tendrás mayor información sobre lo que tienes que configurar y sabrás mejor lo que estás haciendo.

Adjunto tu programa y simulación funcionando, y si llegas a tener problemas al compilar el programa, puede ser porque agregué la palabra de configuración para usar el oscilador interno que es como lo necesitas en tu proyecto.
Y vi que compilaste tu programa con MPASM y eso te puede causar problemas al compilar.
Cómo es un PIC16 no selecciones utilizar compilar con MPASM y no debes tener problemas.

Notas:
Realicé varios cambios tanto al diseño de simulación como al programa y están comentados.
Al montar el proyecto físicamente, puedes realizar algunas pruebas con los valores de los retardos de conmutación hasta encontrar la mejor respuesta visual en los displays de 7 segmentos.

No tengo ese PIC, por lo tanto, lograr que funcione físicamente, ya corre por tu cuenta. (y)

Suerte.
 

Adjuntos

  • 16F677 ADC.rar
    25.4 KB · Visitas: 64
Eso se debe al utilizar las configuraciones que usa PICBasic Pro en las Definiciones.
No en todos los PIC establece los parámetros adecuados para el conversor analógico.
Por eso es recomendable hacer un debug del programa para ver los valores de los registros en Watch Window

En la simulación muchas veces debido a la velocidad de conmutación los displays no funcionan bien.
Existen algunos trucos por software y por hardware para disminuir el parpadeo durante la simulación, pero luego al montar el circuito físicamente se tienen que eliminar para que el circuito funcione correctamente.

Muy probablemente, ya que en tu código estás utilizando retardos de 10Ms después de cada lectura.
Eso hará que el parpadeo de los displays sea muy notorio, porque estás realizando 6 lecturas.

Te recomiendo que antes de programar un PIC, leas bien sobre los registros con los que vas trabajar.
Así tendrás mayor información sobre lo que tienes que configurar y sabrás mejor lo que estás haciendo.

Adjunto tu programa y simulación funcionando, y si llegas a tener problemas al compilar el programa, puede ser porque agregué la palabra de configuración para usar el oscilador interno que es como lo necesitas en tu proyecto.
Y vi que compilaste tu programa con MPASM y eso te puede causar problemas al compilar.
Cómo es un PIC16 no selecciones utilizar compilar con MPASM y no debes tener problemas.

Notas:
Realicé varios cambios tanto al diseño de simulación como al programa y están comentados.
Al montar el proyecto físicamente, puedes realizar algunas pruebas con los valores de los retardos de conmutación hasta encontrar la mejor respuesta visual en los displays de 7 segmentos.

No tengo ese PIC, por lo tanto, lograr que funcione físicamente, ya corre por tu cuenta. (y)

Suerte.

Hola D@rkbytes:

Como siempre una felicitacion y reconocimento por tu gran ayuda. Te comento que mi pc tiene el windows 7 de 64 bits y por lo que yo se, no puedo compilar si no es con MPASM, ¿habra alguna solucion o necesito definitivamente una maquina de 32 bits?
Saludos y nuevamente gracias por tu gran ayuda a nosotros los novatos.

atte
erickp
 
Te comento que mi pc tiene el windows 7 de 64 bits y por lo que yo sé, no puedo compilar si no es con MPASM, ¿Habrá alguna solución o necesito definitivamente una maquina de 32 bits?
Lo que puedes hacer es realizar el mismo procedimiento que mencioné en el post #2733 para modificar la palabra de configuración en el archivo 16F677.INC y así seguir compilando con MPASM.

En la parte de configuración de fuses lo dejas de esta forma:
Código:
        NOLIST
    ifdef PM_USED
        LIST
        include 'M16F6xx.INC'    ; PM header
        device  pic16F677, intrc_osc_noclkout, wdt_on, mclr_on, protect_off
        XALL
        NOLIST
    else
        LIST
        LIST p = 16F677, r = dec, w = -302
        INCLUDE "P16F677.INC"    ; MPASM  Header
       [B] __config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _BOREN_OFF & _IESO_OFF & _FCMEN_OFF[/B]

        NOLIST
    endif
        LIST
Como siempre una felicitación y reconocimiento por tu gran ayuda.
Saludos y nuevamente gracias por tu gran ayuda a nosotros los novatos.

Atte.
erickp
De nada erickp, y en lo que te podamos ayudar, cuenta con ello.

Suerte.
 
Tu código contiene varios errores, sobre todo en el control de la interrupción por cambio de estado RB4-RB7
Ya los corregí, y ahora al presionar el botón de tiempo extra, se reinicia el conteo a 29.

Suerte.


Leer información de varios sensores y luego mostrar la información en pantalla, no es difícil.
Tan solo se leen los sensores consecutivamente, se guarda la información en variables, se procesa y se muestra.
En el caso de sensores análogos como el LM35, realizar la tarea de leer varios y luego mostrar, es sencillo.
Cuando el proceso de lectura y conversión es semi complicado como el caso de un DS18B20,
entonces si puede demorar un poco la visualización si se usan varios sensores.
Aún así, para ambos casos no se requiere del uso de microcontroladores potentes.

Quizás este ejemplo que adjunto, te parecerá muy interesante, es sobre Pseudo Multitasking con PIC.
Hace ya algún tiempo que lo descubrí, y ahora los enlaces están rotos.
Pero por suerte logré descargar los archivos, y aquí se los dejo.
En el archivo viene la explicación de como funciona, y algunas librerías. "Está en inglés"

Nota:
El proyecto original usaba un PIC16F887A, yo lo adapte a un PIC16F88.
Como quiera dejé el archivo *.bas original sin realizar modificaciones.

Saludos.
Suerte.
Buenas tardes amigo D@rkbytes. Gracias por este circuito.
Me tome el atrevimiento y lo monte en PROTEUS con un 16F628A y 3 displays.
Con un poco más de exactitud en el tiempo con respecto al reloj de PROTEUS en el ejemplo.
Arranca desde 180 y el reloj marca 3 minutos cuando llega a 000 el timer.
Adjunto carpeta con archivos y sigo en el proceso de poder programarlo con pulsadores.
Cualquier ayuda será bien recibida.
 

Adjuntos

  • Nueva carpeta.rar
    27.8 KB · Visitas: 71
Última edición por un moderador:
Suerte.
Buenas tardes amigo D@rkbytes. Gracias por este circuito.
Me tome el atrevimiento y lo monte en PROTEUS con un 16F628A y 3 displays.
Con un poco más de exactitud en el tiempo con respecto al reloj de PROTEUS en el ejemplo.
Arranca desde 180 y el reloj marca 3 minutos cuando llega a 000 el timer.
Adjunto carpeta con archivos y sigo en el proceso de poder programarlo con pulsadores.
Cualquier ayuda será bien recibida.
Si lo que quieres es hacer un contador programable, es mejor que realices otro código.
Ese no está diseñado para eso y tardarás más en modificar el código que en hacer un nuevo programa.

Saludos.
 
Pues no sé si serán los módulos rf los que presenten problema (FSI000A-CDR03A), hasta ahora los veo funcionando bien y como te comenté anteriormente, cuando programo para un solo pin parece funcionar bien por lo que creo que el problema no es tan trivial como parece. Voy a probar con un solo pin durante todo el día a ver si se mantiene y lo estoy comentando aquí nuevamente esta noche, de lo contrario, pues me tocaría desechar la idea del bloqueo con rf y pensarlo con teclado directamente en la moto para mayor seguridad.

Gracias.

Hola compañero, soy nuevo en cuestiones de módulos RF y tengo receptor y emisor como los suyos, la verdad no se como los puedo hacer funcionar y ya he buscado en google pero no hay mucha información para ellos podrías darme una mano con algo de info para este módulo?
 
Pues eso, que gracias a todos ustedes y sin conocimientos de electrónica, pude armarme un controlador que me regula la temperatura del agua (frío y calor) con simulación de amanecer-anochecer por Hwpm y , mediante el motor de una unidad de Cd rota con un tornillo sinfin metida en un bote de comida para peces, les dá de comer 3 veces al día programables. Gracias en particular a reyvilla, por atender a mis cuestiones sobre el módulo CCP.

A quien le pueda interesar le dejo el hex, el archivo pbp y la simulacíon en proteus ( todo un poco caótico y todavía muy mejorable ,pero yo lo tengo funcionando y vá de mil amores ).

Comentar que todo el programa lo hice sobre la base del termostato y el reloj rtc del libro de Carlos A. Reyes y que en la simulación falta un pulsador cuya única función es encender y apagar la luz del Lcd
 

Adjuntos

  • Acuario.rar
    36.8 KB · Visitas: 104
holas una consulta.
Estoy haciendo un proyecto q es mensaje a celular usando un sim900 y el pic 16f873
El sim fundiona con comandos at en el cual no tengo problema alguno, el problema es en el pic cuando hago el programa en pic basic
el programa es:

CONEC VAR BYTE

TESTEO:
SEROUT PORTC.6,N9600,["AT"]
SERIN PORTC.7,N9600,CONEC ;ALMACENADO EN CONEC
IF CONEC ="OK" THEN PASO2 ; COMPARACION SI ESTA OK VA A OTRA FUNC
GOTO TESTEO

El error radica en que en el momento de comparar if CONEC ="OK" me da error
pregunta :cuando yo le envio AT al sim me responde "OK"¿como ago que CONEC me almacen esos dos caracteres?¿como puedo hacer la comparacion en if?
os agradecere en el alma si alguien me ayuda
 
Atrás
Arriba