desktop

Curso de programación de PIC en PICBasic Pro

Como siempre amigo Dark muy completos tus aportes, es un buen material para los que nos gusta practicar con contadores sobre dysplays de 7 segmentos.
Gracias. (y)
Esta pregunta va enfocada a cuales son los fuses de programación para un pic 16f84a, lo que sucede es que he venido usando el 16f628a y me he familiarizado con su manejo, pero me ofrecieron venderme varios f84 a buen precio y los compre, y migre un ejemplo de un contador de 0 a 9 que me funciona con f628 y con el f 84 tengo problemas porque hace cosas extrañas en la simulación y que creo sean generadas por una mala configuración y como quiero emplearlos en varios proyectos y aunque se que debe incorporarse cristal y que 13 de sus puertos son E/S como en el f 628, desconozco que fuses tiene, ojala puedan remitirme a algún ejemplo donde pueda ver esta configuración, aclaro que he buscado en este hilo, pero los programas que he visto, parten desde definir el oscilador pero los fuses no se cuales san para definirlos y eso es basico para montar los proyectos en fisico. mil gracias por su tiempo.
Para saber que fuses usa cierto PIC siempre recurro a los templates (plantillas) de Microchip.
Obviamente están escritos para usar lenguaje ensamblador, pero me dan una idea.
Las plantillas se encuentran en la carpeta de instalación de MPLAB, por default dentro de la carpeta:
C:\Archivos de programa\Microchip\MPASM Suite\Template\Code
Ahí se busca el archivo *.asm correspondiente al PIC, y viene la palabra de configuración.

Para saber con que fuses se compila el *.hex de nuestro programa, se puede compilar sin ellos,
y luego leerlos como por ejemplo con el programa WinPic800.
Otra opción, es ver los que usará el compilador por default.
Y se encuentran en la carpeta de instalación del compilador PBP, por default: C:\PBP.
Ahí se busca el archivo *.inc correspondiente al PIC que vamos a usar.

Si queremos saber mas acerca de cierto PIC, abrimos el archivo *.inc del PIC, y veremos una referencia.
Por ejemplo para el PIC16F84A veremos esta línea: include 'M16F8x.INC' ; PM header
Ahora vamos a la carpeta INC y buscamos el archivo M16F8x.INC y lo abrimos para ver que hay dentro.
En ese archivo veremos todos los registros del PIC en cuestión, y obviamente los fuses disponibles.

Espero les sirva esta información.

Como dato adicional, en este documento viene información detallada sobre los PIC de medio rango.
PICmicro Mid-Range MCU Family Reference Manual - Microchip

Suerte.
 
Última edición:
Gracias. (y)

Para saber que fuses usa cierto PIC siempre recurro a los templates (plantillas) de Microchip.
Obviamente están escritos para usar lenguaje ensamblador, pero me dan una idea.
Las plantillas se encuentran en la carpeta de instalación de MPLAB, por default dentro de la carpeta:
C:\Archivos de programa\Microchip\MPASM Suite\Template\Code
Ahí se busca el archivo *.asm correspondiente al PIC, y viene la palabra de configuración.

Para saber con que fuses se compila el *.hex de nuestro programa, se puede compilar sin ellos,
y luego leerlos como por ejemplo con el programa WinPic800.
Otra opción, es ver los que usará el compilador por default.
Y se encuentran en la carpeta de instalación del compilador PBP, por default: C:\PBP.
Ahí se busca el archivo *.inc correspondiente al PIC que vamos a usar.

Si queremos saber mas acerca de cierto PIC, abrimos el archivo *.inc del PIC, y veremos una referencia.
Por ejemplo para el PIC16F84A veremos esta línea: include 'M16F8x.INC' ; PM header
Ahora vamos a la carpeta INC y buscamos el archivo M16F8x.INC y lo abrimos para ver que hay dentro.
En ese archivo veremos todos los registros del PIC en cuestión, y obviamente los fuses disponibles.

Espero les sirva esta información.

Como dato adicional, en este documento viene información detallada sobre los PIC de medio rango.
PICmicro Mid-Range MCU Family Reference Manual - Microchip

Suerte.

claro que la informacion me sirve, muchisimas gracias
 
:)
Hola:Estoy empezando a desarrollar un programa para juegos con PIC, en la que al insertar una moneda, empiece el tiempo de juego. Mi primer programa lo hice con el pic16F628A y su correspondiente simulación y todo funciona bien, pero al migrar al pic 16F877A (por necesidad de mas puertos) el programa se salta al INICIO, sin necesidad de pulsar el botón (moneda). No entiendo en que me equivoqué, alguien tiene idea? O es una deficiencia de PROTEUS
Descarguen los archivos y prueben la simulación para ambos casos.
 

Adjuntos

  • un pulsador un temporizador un led.rar
    32.6 KB · Visitas: 134
  • completo16f877A.rar
    36 KB · Visitas: 119
UUUffff Hermano sos un "MONSTRUO" (y) con esta vaina te felicito y gracias por tu ayuda voy a ver como escribo el programa siguiendo tu consejo y me perdonas por tu trasnochada muchas gracias está super tu analisis :apreton:
Tengo un ejemplo de marito saco por si te interesa... Lo unico que tiene, es que esta en PICBASIC (se entiende perfectamente y es sencillo como hay que hacer los cambios)...
aca lo cito:

Código:
'****************************************************************
'*  Name    : ENCODER.BAS                                      *
'*  Author  : Mario G. Sacco                                    *
'*  Notice  : Copyright (c) 2011  - NeoTeo                      *
'*          : All Rights Reserved                               *
'*  Date    : 07/07/2011                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************

    'SELECCIONO PIC, CLOCK E INICIALIZACIÓN
    DEVICE = 18F2550        'SELECCIONO PIC Y CLOCK                    
    XTAL = 48                                
    
    'UTILIZO BOOTLOADER
    DECLARE PROTON_START_ADDRESS = $1000 ' INICIO EN DIRECCIÓN  $1000 
    
    CMCON = 7               'APAGO LOS COMPARADORES
    ALL_DIGITAL = True      'Y ANULO LAS ENTRADAS ADC (TODO DIGITAL)
    
    'DECLARO EL LCD
    LCD_DTPIN = PORTB.4        'SETEO EL LCD 16X2 PARA 4 CABLES
    LCD_RSPIN = PORTB.2
    LCD_ENPIN = PORTB.3
    LCD_INTERFACE = 4    
    LCD_LINES = 2
    LCD_TYPE = 0
    
    'REGISTROS DE LA INTERRUEPCIÓN
    SYMBOL BIERB0 = INTCON.1  'BANDERA DE INTERRUPCIÓN EXTERNA POR RB0 
    SYMBOL HEI    = INTCON.4  'HABILITACIÓN EXTERNA DE LA INTERRUPCIÓN POR RB0
    SYMBOL GIE    = INTCON.7  'HABILITACIÓN GLOBAL DE INTERRUPCIONES
    SYMBOL FLANCO = INTCON2.6 'FLAG=0>>>INTERRUPCIÓN POR FLANCO DE BAJADA
                              'FLAG=1>>>INTERRUPCIÓN POR FLANCO DE SUBIDA
    'DECLARO LA INTERRUPCIÓN
    ON_INTERRUPT GOTO SALTO   'SALTO A LA INTERRUPCIÓN

    'PARÁMETROS DE INICIO DE ALGUNOS REGISTROS
    GIE = 1                   'ACTIVO INTERRUPCIONES
    HEI = 1                   'ACTIVO INTERRUPCIÓN EXTERNA POR RB0
    FLANCO = 1                'AL INICIAR ACTIVO LA INTERRUPCIÓN


    DIM NUMERO AS WORD        'VARIABLE DE 0 A 65535         
    
    CLS                       'LIMPIO DISPLAY AL INICIAR
    
    NUMERO=127                'COLOCO LA VARIABLE AL CENTRO AL INICIAR             

'INICIO EL PROGRAMA PRINCIPAL  
INICIO:                       
     
     PRINT AT 1,1,"Encoder 18F2550 "
     PRINT AT 2,2,"      ",DEC NUMERO,"    "    'ESCRIBO EN PANTALLA 
     IF NUMERO <= 0 THEN NUMERO = 0     'TOPE MÍNIMO EN 0
     IF NUMERO >= 255 THEN NUMERO = 255 'TOPE MÁXIMO EN 255
     
     
GOTO INICIO                   'REINICIO EL CICLO 
'FIN DEL PROGRAMA PRINCIPAL             


'INTERRUPCIÓN                                
SALTO:                        'LEO EL ENCODER
       
 CONTEXT SAVE                 'GUARDA EL CONTEXTO DE LOS REGISTROS ANTES 
                              'DE EMPEZAR A TRABAJAR CON LA INTERRUPCIÓN
    IF PORTB.0 = 1    THEN    'SI RB0 ESTÁ EN 1
       FLANCO  = 0            'ACTIVO INTERRUPCIÓN POR FLANCO DE BAJADA
       IF PORTB.1 = 1 THEN    'CUANDO RB1 LLEGA A 1
          INC NUMERO          'INCREMENTO EL CONTADOR
       ENDIF
    ELSE                      'SI RB0 ESTÁ A 0  
       FLANCO  = 1            'ACTIVO INTERRUPCIÓN POR FLANCO DE SUBIDA
       IF PORTB.1 = 1 THEN    'CUANDO RB1 LLEGA A 1
          DEC NUMERO          'DECREMENTO EL CONTADOR
       ENDIF
    ENDIF
     
  BIERB0 = 0                  'BORRO LA BANDERA PARA HABILITAR NUEVAMENTE  
                              'LA INTERRUPCIÓN
 CONTEXT RESTORE              'REESTABLECE EL CONTEXTO DE LOS REGISTROS COMO  
                              'ESTABAN ANTES DE UTILIZAR LA INTERRUPCIÓN

Voy a ver si me siento esta noche con mas tiempo y lo pasamos a PICBASIC PRO, Yo tenia un ejemplo mio de un encoder, pero no tengo ni la mas remota idea en que disco y en que carpeta esta :rolleyes:
Lo use para hacer la version pbp de la fuente de baldeborre :unsure: pero con un 18F2550 (use el mismo hardware por que es compatible pin a pin)....
Nos vemos Ferdy



Saludos.
Les traigo dos ejemplos de contadores 0-99 automáticos (Sin pulsador), usando el sistema multiplex.
En el primero utilice la conexión directa de los displays por el puerto B y dos displays de cátodo común.
En el segundo utilice un CI 7447 para la conexión de los displays y usando displays con ánodo común.
El ejemplo con el IC 7447 es más sencillo que el de conexión directa, ya que no requiere tabla de conversión.
Los ejemplos están comentados para su comprensión, y también adjunto los vídeos durante la simulación.

Muy buenos ejemplos... Otra de las maneras de realizar un contador de 0-99 o de 0-999 con tan solo dos pines, es implementando el CD4026 (Decade Counter / Decoder and Driver)... este trabaja por pulsos, lo cual, requiere un puerto para el clock y otro para el reset...
En la teoria, la hokja de datos comenta que se pueden controlar hasta 6 decoder, pero en la practica, yo personalmente en un cronometro, pude hacer funcionar a la perfeccion solo 5.
la conexion es mas que sencilla y para conectarlos en serie, tan solo hay que poner en carry los clock de los demas decoder... el MR (master reset) de cada integrado, van ligados todos juntos ...
Prometo subir algun diagrama y parte de la programacion.... saludos
 
Última edición:
Hola:
Estoy empezando a desarrollar un programa para juegos con PIC, en la que al insertar una moneda, empiece el tiempo de juego. Mi primer programa lo hice con el pic16F628A y su correspondiente simulación y todo funciona bien, pero al migrar al pic 16F877A (por necesidad de mas puertos) el programa se salta al INICIO, sin necesidad de pulsar el botón (moneda). No entiendo en que me equivoqué, alguien tiene idea? O es una deficiencia de PROTEUS
Descarguen los archivos y prueben la simulación para ambos casos.

Saludos Mushito
tu codigo esta bien!!
lo unico que te faltaria es deshabilitar las salidas analogicas para que queden los puertos como digitales!
añadele esto a tu codigo y pruebalo.
ADCON1=7

Saludos y seguimos en contacto
 
Continuando con el proyecto aquí los adjuntos, pero necesito ideas para que con un evento externo (como una palanca mecánica y un switch, por ejemplo) se extienda el tiempo de juego, cargando el tiempo de juego nuevamente a 20 seg.
Aquí las simulaciones y el programa, pero no logro mi cometido.
:)
 

Adjuntos

  • semi_completo16f877A.rar
    37 KB · Visitas: 91
Así como tienes el programa no funcionará el contador del puerto D.
Y recuerda que los programas son secuenciales, primero verás el conteo de 0 a 9 en el puerto B,
y luego comenzara el conteo de 9 a 0 en el puerto D, y se repite el ciclo.
Para que funcione el contador del puerto D, solo tenías que hacerlo así...
Código:
inicio:
       for i = 0 to 9
       portb = i
       pause 100
       next i
              
       for i2 = 9 to 0 [B]step - 1[/B]
       portd = i2
       pause 100
       next i2
       goto inicio
La palabra de configuración que utilicé fue ésta:
@ DEVICE HS_OSC, PWRT_ON, WDT_OFF, BOD_OFF

Para que te ahorres los dos decodificadores y trabajes los displays directamente, adjunto un ejemplo.

Suerte.

hola amigos, en estas vacaciones de semana santa ademas de orar, tambien le seguimos el ciclo al aprendizaje, y es por esto que me gustaria oir opinion de expertos sobre como es la estructura de un programa en la que tienen que leerse varias variables ya que como dijo Dark, el programa primero termina una tarea para despues encargarse de otra, y es por eso que no seria factible realizar un programa con 2 o 3 contadores al mismo tiempo y que cada uno lleve sus propios controles como inicio, reset etc, pero entonces como funcionan aquellos dispositivos que leen simultaneamete por ejemplo 5 temperaturas diferntes y la info la despliegan en una sola pantalla lcd, acaso son programas con otra estructura u otro lenguaje, no se podria realizar algo parecido para que cuenten 5 tiempos diferentes en un solo chip? talvez esto le este dando vueltas en la cabeza a muchos......agradezco mucho el aporte de varios foreros sobre los contadores, hay bastante para practicar y aprender.



Tengo un ejemplo de marito saco por si te interesa... Lo unico que tiene, es que esta en PICBASIC (se entiende perfectamente y es sencillo como hay que hacer los cambios)...
aca lo cito:

Código:
'****************************************************************
'*  Name    : ENCODER.BAS                                      *
'*  Author  : Mario G. Sacco                                    *
'*  Notice  : Copyright (c) 2011  - NeoTeo                      *
'*          : All Rights Reserved                               *
'*  Date    : 07/07/2011                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************

    'SELECCIONO PIC, CLOCK E INICIALIZACIÓN
    DEVICE = 18F2550        'SELECCIONO PIC Y CLOCK                    
    XTAL = 48                                
    
    'UTILIZO BOOTLOADER
    DECLARE PROTON_START_ADDRESS = $1000 ' INICIO EN DIRECCIÓN  $1000 
    
    CMCON = 7               'APAGO LOS COMPARADORES
    ALL_DIGITAL = True      'Y ANULO LAS ENTRADAS ADC (TODO DIGITAL)
    
    'DECLARO EL LCD
    LCD_DTPIN = PORTB.4        'SETEO EL LCD 16X2 PARA 4 CABLES
    LCD_RSPIN = PORTB.2
    LCD_ENPIN = PORTB.3
    LCD_INTERFACE = 4    
    LCD_LINES = 2
    LCD_TYPE = 0
    
    'REGISTROS DE LA INTERRUEPCIÓN
    SYMBOL BIERB0 = INTCON.1  'BANDERA DE INTERRUPCIÓN EXTERNA POR RB0 
    SYMBOL HEI    = INTCON.4  'HABILITACIÓN EXTERNA DE LA INTERRUPCIÓN POR RB0
    SYMBOL GIE    = INTCON.7  'HABILITACIÓN GLOBAL DE INTERRUPCIONES
    SYMBOL FLANCO = INTCON2.6 'FLAG=0>>>INTERRUPCIÓN POR FLANCO DE BAJADA
                              'FLAG=1>>>INTERRUPCIÓN POR FLANCO DE SUBIDA
    'DECLARO LA INTERRUPCIÓN
    ON_INTERRUPT GOTO SALTO   'SALTO A LA INTERRUPCIÓN

    'PARÁMETROS DE INICIO DE ALGUNOS REGISTROS
    GIE = 1                   'ACTIVO INTERRUPCIONES
    HEI = 1                   'ACTIVO INTERRUPCIÓN EXTERNA POR RB0
    FLANCO = 1                'AL INICIAR ACTIVO LA INTERRUPCIÓN


    DIM NUMERO AS WORD        'VARIABLE DE 0 A 65535         
    
    CLS                       'LIMPIO DISPLAY AL INICIAR
    
    NUMERO=127                'COLOCO LA VARIABLE AL CENTRO AL INICIAR             

'INICIO EL PROGRAMA PRINCIPAL  
INICIO:                       
     
     PRINT AT 1,1,"Encoder 18F2550 "
     PRINT AT 2,2,"      ",DEC NUMERO,"    "    'ESCRIBO EN PANTALLA 
     IF NUMERO <= 0 THEN NUMERO = 0     'TOPE MÍNIMO EN 0
     IF NUMERO >= 255 THEN NUMERO = 255 'TOPE MÁXIMO EN 255
     
     
GOTO INICIO                   'REINICIO EL CICLO 
'FIN DEL PROGRAMA PRINCIPAL             


'INTERRUPCIÓN                                
SALTO:                        'LEO EL ENCODER
       
 CONTEXT SAVE                 'GUARDA EL CONTEXTO DE LOS REGISTROS ANTES 
                              'DE EMPEZAR A TRABAJAR CON LA INTERRUPCIÓN
    IF PORTB.0 = 1    THEN    'SI RB0 ESTÁ EN 1
       FLANCO  = 0            'ACTIVO INTERRUPCIÓN POR FLANCO DE BAJADA
       IF PORTB.1 = 1 THEN    'CUANDO RB1 LLEGA A 1
          INC NUMERO          'INCREMENTO EL CONTADOR
       ENDIF
    ELSE                      'SI RB0 ESTÁ A 0  
       FLANCO  = 1            'ACTIVO INTERRUPCIÓN POR FLANCO DE SUBIDA
       IF PORTB.1 = 1 THEN    'CUANDO RB1 LLEGA A 1
          DEC NUMERO          'DECREMENTO EL CONTADOR
       ENDIF
    ENDIF
     
  BIERB0 = 0                  'BORRO LA BANDERA PARA HABILITAR NUEVAMENTE  
                              'LA INTERRUPCIÓN
 CONTEXT RESTORE              'REESTABLECE EL CONTEXTO DE LOS REGISTROS COMO  
                              'ESTABAN ANTES DE UTILIZAR LA INTERRUPCIÓN

Voy a ver si me siento esta noche con mas tiempo y lo pasamos a PICBASIC PRO, Yo tenia un ejemplo mio de un encoder, pero no tengo ni la mas remota idea en que disco y en que carpeta esta :rolleyes:
Lo use para hacer la version pbp de la fuente de baldeborre :unsure: pero con un 18F2550 (use el mismo hardware por que es compatible pin a pin)....
Nos vemos Ferdy





Muy buenos ejemplos... Otra de las maneras de realizar un contador de 0-99 o de 0-999 con tan solo dos pines, es implementando el CD4026 (Decade Counter / Decoder and Driver)... este trabaja por pulsos, lo cual, requiere un puerto para el clock y otro para el reset...
En la teoria, la hokja de datos comenta que se pueden controlar hasta 6 decoder, pero en la practica, yo personalmente en un cronometro, pude hacer funcionar a la perfeccion solo 5.
la conexion es mas que sencilla y para conectarlos en serie, tan solo hay que poner en carry los clock de los demas decoder... el MR (master reset) de cada integrado, van ligados todos juntos ...
Prometo subir algun diagrama y parte de la programacion.... saludos

Torres, esperamos ansiosamente tu aporte sobre contadores con 4026, mientras a chequear los datasheet de este cmos.
 
Última edición:
Continuando con el proyecto aquí los adjuntos, pero necesito ideas para que con un evento externo (como una palanca mecánica y un switch, por ejemplo) se extienda el tiempo de juego, cargando el tiempo de juego nuevamente a 20 seg.
Aquí las simulaciones y el programa, pero no logro mi cometido.
:)
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.

¿como funcionan aquellos dispositivos que leen simultaneamete por ejemplo 5 temperaturas diferentes y la info la despliegan en una sola pantalla lcd,?
¿acaso son programas con otra estructura u otro lenguaje, no se podría realizar algo parecido para que cuenten 5 tiempos diferentes en un solo chip?
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.
 

Adjuntos

  • Mushito timer Corregido.rar
    19.8 KB · Visitas: 137
  • Pseudo Multitasking.rar
    45.7 KB · Visitas: 112
Torres, esperamos ansiosamente tu aporte sobre contadores con 4026, mientras a chequear los datasheet de este cmos.

Bueno, aca te subo el circuito basico que lo saque del manual que escribi para micros picaxe... basicamente es lo mismo... Como ejemplo, un programa para un picaxe 18X (pic16F88)

CD4026.jpg

Un ejemplo sencillo de como se trabaja el CD4026:

Código:
;*****************************************************************
;*Proyecto: *
;*Timmer 60 segundos para calentamientos de ruedas en pruebas de 1/4 MILLA *
;*Desarrollado por: *
;*Ing. Martin A. Torres Fortelli *
;*****************************************************************
main:
if pin2 = 1 then main2         
goto main
main2:
let b2 = 60
gosub clock
goto main2
clock:
if b3 = b2 then endclk
for b3 = 1 to 60
pulsout 0,200          ;Pone en alto el pin del Clock
pause 1000
next b3
endclk:
pulsout 1,200            ; Pone en alto el pin del Reset
end
;*****************************************
;*************** Fin del programa ********
;*****************************************

Como veras, es re sencillo el programa y pasarlo a PBP, es copiuar y pegar nada mas...
acá el circuito del programa de ejemplo:
CD4026_contador60_OFF.png
 
Bueno, aca te subo el circuito basico que lo saque del manual que escribi para micros picaxe... basicamente es lo mismo... Como ejemplo, un programa para un picaxe 18X (pic16F88)

Ver el archivo adjunto 89844

Un ejemplo sencillo de como se trabaja el CD4026:

Código:
;*****************************************************************
;*Proyecto: *
;*Timmer 60 segundos para calentamientos de ruedas en pruebas de 1/4 MILLA *
;*Desarrollado por: *
;*Ing. Martin A. Torres Fortelli *
;*****************************************************************
main:
if pin2 = 1 then main2         
goto main
main2:
let b2 = 60
gosub clock
goto main2
clock:
if b3 = b2 then endclk
for b3 = 1 to 60
pulsout 0,200          ;Pone en alto el pin del Clock
pause 1000
next b3
endclk:
pulsout 1,200            ; Pone en alto el pin del Reset
end
;*****************************************
;*************** Fin del programa ********
;*****************************************

Como veras, es re sencillo el programa y pasarlo a PBP, es copiuar y pegar nada mas...
acá el circuito del programa de ejemplo:
Ver el archivo adjunto 89845

uyyyy profe que buen documento, muchas gracias, se lo va aseguir molestando para que nos colabore con documentos similares, a proposito, nos vendria bien a muchos, el conseguir su libro....pero donde....mil gracias



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.

en verdad interesante...esto va a ser productivo....gracias Darkbytes.
 
Última edición:
uyyyy profe que buen documento, muchas gracias, se lo va aseguir molestando para que nos colabore con documentos similares, a proposito, nos vendria bien a muchos, el conseguir su libro....pero donde....mil gracias

subi el link de descarga gratuita en el grupo picaxe que figura en mi firma... igualmente.... es un libro sobre programacion de micros con sistema picaxe...si bien es un basic similar a PBP, no es lo mismo...
 
subi el link de descarga gratuita en el grupo picaxe que figura en mi firma... igualmente.... es un libro sobre programacion de micros con sistema picaxe...si bien es un basic similar a PBP, no es lo mismo...

ahh bueno, lastima que en mi ciudad es bien dificil que traigan los picaxe, en cambio pics es como ir a comprar pan...hay de todas las referencias y el precio tiende a bajar, a proposito porque sera que no hay tanto comercio de los picaxe? he visto programas sencillisimos y faciles de entender, ojala se popularicen con rapidez, al menos donde no han llegado...algun buen libro PBP que nos recomiendenpara los que comenzamos...gracias
 
ahh bueno, lastima que en mi ciudad es bien dificil que traigan los picaxe, en cambio pics es como ir a comprar pan...hay de todas las referencias y el precio tiende a bajar, a proposito porque sera que no hay tanto comercio de los picaxe? he visto programas sencillisimos y faciles de entender, ojala se popularicen con rapidez, al menos donde no han llegado...algun buen libro PBP que nos recomiendenpara los que comenzamos...gracias

Por eso mismo deje de escribir sobre estos micros... son costosos... no se consiguen en todos lados y practicamente, ya estan quedando medios obsoletos para proyectos mas avanzados....
En Argentina, ahora se esta tratando de incluir en el sistema educativo, ASM + CSS.... asi que me propuse arrancar a escribir un nuevo libro justamente de PicBasic Pro, pero con la alternancia de que los estoy enfocando a un nivel un poco mas avanzado de lo que ya hay dando vuelta por internet, ya que enseño como mejorar nuestros proyectos insertando rutinas, interrupciones, entre otras cosas mas en ASM...
Saludos y gracias por tu comentario
 
Por eso mismo deje de escribir sobre estos micros... son costosos... no se consiguen en todos lados y practicamente, ya estan quedando medios obsoletos para proyectos mas avanzados....
En Argentina, ahora se esta tratando de incluir en el sistema educativo, ASM + CSS.... asi que me propuse arrancar a escribir un nuevo libro justamente de PicBasic Pro, pero con la alternancia de que los estoy enfocando a un nivel un poco mas avanzado de lo que ya hay dando vuelta por internet, ya que enseño como mejorar nuestros proyectos insertando rutinas, interrupciones, entre otras cosas mas en ASM...
Saludos y gracias por tu comentario

Esperamos tu libro, grcias profe, exitos en tu actividad.
 
por fa alguien que me ayude con este basic no se que tiene que el proteus me da error; al simularlo sale un error que dice: SIMULATION IS NOT RUNNING IN REAL TIME DUE TO EXCESSIVE CPU LOAD
este es el código:
Código:
'****************************************************************
'           control serie para servo con 16f628a                *
'                         emisor                                *
'****************************************************************
@ DEVICE pic16F628A, PWRT_ON
@ DEVICE pic16F628A, WDT_ON          
@ device xt_osc
define osc 4
   
include "modedefs.bas"

trisb=0
portb=0
posi var word
		
serieout var portb.1 
          
inicio: 
Pot porta.0,127,posi
posi = posi / 2 + 100
serout serieout,T2400,[6,6,"ok",#posi]        
Goto inicio
		
End
a ver si alguien me puede ayudar a ver que tiene mal les agradezco de antemano
 
Última edición:
igual error me da algunas veces cuando quiero simular un programa con displays de 7 segmentos y en mi caso los causa la multiplexacion, es como si se sobrecargara de datos el simulador y no responde, pero al montarlos en protoboard me trabajan, y la verdad no se como configurar el proteus para evitar esto.....necesitamos una opinion de los expertos.
 
Hola, soy nuevo en este foro y verán e desarrollando un programa para el manejo de una puerta de garaje con el pic16f77a en pic basic con microcode, pero verán aquí me surgen dos dudas

1. como alimentar el pic con un 7805, por que como verán este pic tiene 2 puertos de alimentación y pues tengo solo un regulador de voltaje y la cuestión es. si necesito un regulador de voltaje para cada puerto de alimentación o solo con uno basta.


2. verán la programación que hice es automática, pero no me sale para que funcione con pulsador uno para subir y otro para que baje.

ésta es la programación automática, una vez que arranque la simulación sube y baja automáticamente
Código:
trisb=0

izquierda:
   portb=%0001
  pause 100
   portb=%1000
  pause 100
   portb=%0010
  pause 100
   portb=%0100
  pause 100
   portb=%0001
  pause 100
   portb=%1000
  pause 100
   portb=%0010
  pause 100
   portb=%0100
  pause 100
   portb=%0001
  pause 100
   portb=%1000
  pause 100
   portb=%0010
  pause 100
   portb=%0100
  pause 100
   portb=%0001
  pause 100
   portb=%1000
  pause 100
   portb=%0010
  pause 100
   portb=%0100
  pause 5000
   portb=%0010
  pause 100
   portb=%1000
  pause 100
   portb=%0001
  pause 100
   portb=%0100
  pause 100
   portb=%0010
  pause 100
   portb=%1000
  pause 100
   portb=%0001
  pause 100
   portb=%0100
  pause 100
   portb=%0010
  pause 100
   portb=%1000
  pause 100
   portb=%0001
  pause 100
   portb=%0100
  pause 100
   portb=%0010
  pause 100
   portb=%1000
  pause 100
   portb=%0001
  pause 5000
 
goto izquierda:

end


Les agradezco mucho por la ayuda.
 
Última edición por un moderador:
.... como alimentar el pic con un 7805, por que como verán este pic tiene 2 puertos de alimentación y pues tengo solo un regulador de voltaje y la cuestión es. si necesito un regulador de voltaje para cada puerto de alimentación o solo con uno basta.

Se alimentan los dos a la vez con el mismo regulador... Si observas detenidamente todo este topico :( Veras que muchas personas subieron diagramas, diseñosde pcb, etc... el que busca encuentra... Otra cosa... con que o como vas a controlar a nivel hardware el PAP? con que desacoplas ambos dos?
Tene en cuenta que un transformador chino como fuente es mala idea y sumale, a que vas a tener que implementar filtros ya que las intererencias te van a jugar en contra..saludos
 
Atrás
Arriba