Curso de programación de PIC en PICBasic Pro

Gracias por la información muy bueno ese dato, ya revise y efectivamente esta incluido un poco mas abajo en el archivo .INC del 16f88 algo nuevo que aprendí hoy muchas gracias.:D(y)
 
Este PIC tiene dos direcciones para la palabra de configuración: 0x2007 y 0x2008
En la dirección 0x2007 (CONFIG1) se establecen los fuses que muestras, pero en 0x2008 se establecen estos otros:
CONFIG2:
FCMEN = Fail-Safe Clock Monitor Enable bit
IESO = Internal External Switchover bit

Solo se establecen los primeros 2 bits (0 y 1) de los 13 bits del registro CONFIG2.
Por eso los incluí usando @ DEVICE2

No ocurrirá problema en nuestro programa si estos bits al no ser configurados quedan activos, mientras no falle el oscilador principal, pero si llegara a fallar se activaría el oscilador interno a la frecuencia que haya sido configurado en el registro OSCCON que por default será de 4MHz.
Y esto podría prestarse a confusiones sobre los tiempos de trabajo en el programa si se usa otra frecuencia.

Por aquí expuse unos ejemplos demostrando el funcionamiento del sistema "Fail-Safe Clock Monitor"

Saludos.

Hola Darkbytes gracias por tu ayuda esta muy interesante esta información te cuento que puse los fuses como dijiste y en efecto ya no me sale el mensaje de error en el pickit2, y se deja cargar bien en el pic pero no da señales de vida, no logro que el pic arranque, subo el código a ver sí le encuentras donde está el error en la simulación en proteus funciona bien pero en protoboard no hace nada, muchas gracias de antemano:apreton:
 

Adjuntos

  • prueba matriz 8x24 16f88.rar
    26.3 KB · Visitas: 94
Compañero ferdy575 aun otra cosa se me olvido explicarte antes fue las configuraciones de los registros que controlar el hardware del microcontrolador, debes tomar en cuenta que el micro en si tiene una estructura interna que debes conoces bien asi como los fuses, también hay registros de control para los periféricos internos y externos del microcontrolador. En tu caso el micro tiene comparadores A/D y conversores A/D los cuales deben ser desactivados si no se van a utilizar de lo contrario van a estar activados. Estos registros normalmente son el CMCON y el ADCON0 y ADCON1 y ANSEL.
Como no los vas a usar colócalos así:

CMCON = 7 'desactiva modulo comparador
ADCON0 = 0 'desactiva modulos conversores
ADCON1 = 0 'controla modulos conversores
ANSEL = 0 'configura todos los canales del A/D a digitales

ADCON1 no influye si ADCON0 esta desactivado pero igual yo coloco todo a 0 para estar mas tranquilo con respecto a los módulos A/D.

Por otra parte e falto en los fuses

@ DEVICE2 IESO_OFF, FCMEN_OFF

Espero sea la solución a tu problema y si funciona coloca unas imágenes a ver como quedo...saludos
 
Necesitas configurar el puerto A como digital I/O, ya que usas los pines RA2 y RA3.
Utiliza ANSEL = 0 al inicio del programa para que el puerto A sea configurado con entradas y salidas digitales.

Suerte.
Compañero ferdy575 aun otra cosa se me olvido explicarte antes fue las configuraciones de los registros que controlar el hardware del microcontrolador, debes tomar en cuenta que el micro en si tiene una estructura interna que debes conoces bien asi como los fuses, también hay registros de control para los periféricos internos y externos del microcontrolador. En tu caso el micro tiene comparadores A/D y conversores A/D los cuales deben ser desactivados si no se van a utilizar de lo contrario van a estar activados. Estos registros normalmente son el CMCON y el ADCON0 y ADCON1 y ANSEL.
Como no los vas a usar colócalos así:

CMCON = 7 'desactiva modulo comparador
ADCON0 = 0 'desactiva modulos conversores
ADCON1 = 0 'controla modulos conversores
ANSEL = 0 'configura todos los canales del A/D a digitales

ADCON1 no influye si ADCON0 esta desactivado pero igual yo coloco todo a 0 para estar mas tranquilo con respecto a los módulos A/D.

Por otra parte e falto en los fuses

@ DEVICE2 IESO_OFF, FCMEN_OFF

Espero sea la solución a tu problema y si funciona coloca unas imágenes a ver como quedo...saludos
Señores los felicito y les agradezco su ayuda ustedes son unos monstruos para esta vaina segui sus consejos y funciona de maravilla nuevamente muchas gracias:aplauso:
 
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:
Atrás
Arriba