Curso de programación de PIC en PICBasic Pro

No conozco el sensor ese ya que hace mucho que trato en lo posible de no trabajar con sensores analógicos habiendo digitales para evitar un montón de problemas que surgen de la comunicación, ruidos, etc.

Sí el problema es de estabilidad, te sugiero que hagas varias mediciones en un determinado tiempo y luego promedies el resultado para mostrarlo siempre que el valor halla cambiado.

También puede ser debido a ruido que se "cuele" durante la medición debido a la longitud entre sensor-microcontrolador y un sinnúmero de etc que no nos comentas.

No es lo mismo algo armado en un PCB diseñado bien y con el uso de cables apantallados para evitar interferencias que un prototipo armado en un protoboard con cables largos y sin blindaje, etc.

Como implementaste el programa siempre mides y muestras, lo que te estoy sugiriendo es que almacenes el valor anterior en una variable y antes de mostrar el valor actual lo compares y solo lo muestras si es diferente al anterior, de esa forma es mas estable todo y mas rápido ya que si no hubo variación no pierdes el tiempo mostrando algo que ya esta en el display.
 
Buenas noches, saludos.
Acudo a este foro con la finalidad de interactuar con ustedes y lograr superar un inconveniente con un pic y su programa, el cual paso a describir así.
Tengo un calentador de agua a gas, al cual, se le dañó (quemó) la tarjeta de control.
Menciono que esta tarjeta quemada posee como elemento de control un PIC12C509.
Yo analicé el funcionamiento del aparato y diseñé un código en microcode pero basado en el PIC16F84A y funciona sin problema en la simulación de proteus.
El inconveniente se presenta por el tamaño de la tarjeta con el PIC16F84A, que no cabe en el espacio destinado en el calentador, sin menoscabar que sobran pines sin uso.
A partir de ahí, decido pasar previas modificaciones a un pic enano, el PIC12F629, dado a sus bondades, el proyecto necesita solo tres entradas y tres salidas y este pic me ofrece eso.
Ya realizado el cambio o modificaciones al programa del PIC16F84A para compilarlo para el PIC12F629 no logro que funcione y el defecto está en los fuses de ese PIC.
Una de las fallas o error que presenta la simulación es que, no convierte el pin GP.3 en entrada y continúa siendo el pin del MCLR, tampoco se configura el oscilador interno.
Sin más, muestro el código hecho para el PIC16F84A y la simulación en proteus.
Cabe destacar que está realizado en microcode studio

1614306568818.png

Código:
'*  Version : 1.0                                               *

'*  Notes   : control calentador agua con pic 16f84a                                                  *

'*          :                                                   *

'****************************************************************

                                                        'pic 16F84A

define osc 4                                    'defino frec osc en 4mhz

    trisa=%00000                             'configuro puerto A como salidas

    trisb=%00111000                       'configuro puerto RB0-RB2 salidas y RB3-RB5 entradas

    portb=0                                      'inicializo las salidas a 0 logico

symbol  TEMP    = portb.3              'nombro el pin RB3 como TEMP

symbol  LLAMA  = portb.4              'nombro el pin RB4 como LLAMA

symbol  FLUJO    = portb.5             'nombro el pin RB5 como FLUJO

symbol  GAS       = portb.0             'nombro el pin RB0 como GAS

symbol  PILOT     = portb.1             'nombro el pin RB1 como PILOT

symbol  ALAR     = portb.2             'nombro el pin RB2 como ALAR


INICIO:                                           'comienzo de programa

    if TEMP = 0 then                        'pregunto si TEMP es 0 si es cierto

    goto ALARM                              'salto a ALARM

    endif                                           'fin del if

    if FLUJO =1 then                        'pregunto si FLUJO es 1 si es cierto

    pause 200                                  'pausa de 200 ms

    goto PRENDER                          'salto a PRENDER

    else                                            'de lo contrario

    goto inicio                                'salto a inicio

    endif                                         'fin del if

  

PRENDER:                                    'subrutina PRENDER

    pause 1000                             'pausa de 1 seg

    IF temp = 0 THEN                   'pregunto si TEMP es 0 si es cierto

    GOTO ALARM                         'salto a ALARM

    endif                                      'fin del if

    if FLUJO =0 THEN                  'pregunto si FLUJO es 0 si es cierto

    GOSUB INICIO                       'salto a INICIO

    ENDIF                                    'fin del if

    high GAS                               'enciendo GAS

    pause 500                             'pausa de 500 ms

    high PILOT                            'enciendo PILOT

    pause 500                             'pausa de 500 ms

  

    if LLAMA = 0 then               'pregunto si LLAMA es 1 si es cierto

    pause 1000                          'pausa de 1 seg

    else                                      'de lo contrario

    low PILOT                            'apago PILOT

    goto MANTENER                 'salto a MANTENER

    endif                                    'fin del if

  

    if LLAMA = 0 then               'pregunto si LLAMA es 1 si es cierto

    pause 1000                          'pausa de 1 seg

    goto APAGAR                      'salto a APAGAR

    else                                     'de lo contrario

    low PILOT                            'apago PILOT

    goto MANTENER               'salto a MANTENER

    endif                                   'fin de if

  

MANTENER:                            'subrutina MANTENER

  

    pause 500                            'pausa de 500 ms

    if TEMP = 0 then                  'pregunto si TEMP es 0 si es cierto

    goto ALARM                        'salto a ALARM

    endif                                     'fin de if

    pause 500                            'pausa de 500 ms

    if LLAMA and FLUJO  =1 then   'pregunta si LLAMA y FLUJO son 1 si es cierto

    gosub MANTENER              'salto a MANTENER de lo contrario

    goto APAGAR                     'salto a APAGAR

    endif                                   'fin del if

  

  

APAGAR:                                'subrutina de APAGAR

    low GAS                            'apago GAS

    low PILOT                         'apago PILOT

    pause 5000                       'pausa 500 ms

    goto  INICIO                     'salto a inicio

  

ALARM:                                'subrutina ALARM

    low gas                             'apago GAS     

    low piloT                           'apago PILOT

    goto LED                            'salto a LED

  

LED:                                      'subrutina LED

    high ALAR                        'prendo ALAR

    pause 100                        'pausa de 100 ms

    low ALAR                         'apago ALAR

    pause 100                        'pausa de 100 ms

    if TEMP =0 then               'pregunto TEMP es 0 si es cierto     

    gosub LED                       'regreso a LED  de lo contrario

    goto INICIO                     'salto a inicio

    endif                               'fin del if

  

    goto inicio                      'ir a inicio

    end                                 'fin del programa

Código:
'*  Version : 1.0                                               *

'*  Notes   : control calentador agua con pic 16f84a                                                  *

'*          :                                                   *

'****************************************************************

                                                        'pic 16F84A

define osc 4                                    'defino frec osc en 4mhz

    trisa=%00000                             'configuro puerto A como salidas

    trisb=%00111000                       'configuro puerto RB0-RB2 salidas y RB3-RB5 entradas

    portb=0                                      'inicializo las salidas a 0 logico

symbol  TEMP    = portb.3              'nombro el pin RB3 como TEMP

symbol  LLAMA  = portb.4              'nombro el pin RB4 como LLAMA

symbol  FLUJO    = portb.5             'nombro el pin RB5 como FLUJO

symbol  GAS       = portb.0             'nombro el pin RB0 como GAS

symbol  PILOT     = portb.1             'nombro el pin RB1 como PILOT

symbol  ALAR     = portb.2             'nombro el pin RB2 como ALAR


INICIO:                                           'comienzo de programa

    if TEMP = 0 then                        'pregunto si TEMP es 0 si es cierto

    goto ALARM                              'salto a ALARM

    endif                                           'fin del if

    if FLUJO =1 then                        'pregunto si FLUJO es 1 si es cierto

    pause 200                                  'pausa de 200 ms

    goto PRENDER                          'salto a PRENDER

    else                                            'de lo contrario

    goto inicio                                'salto a inicio

    endif                                         'fin del if

  

PRENDER:                                    'subrutina PRENDER

    pause 1000                             'pausa de 1 seg

    IF temp = 0 THEN                   'pregunto si TEMP es 0 si es cierto

    GOTO ALARM                         'salto a ALARM

    endif                                      'fin del if

    if FLUJO =0 THEN                  'pregunto si FLUJO es 0 si es cierto

    GOSUB INICIO                       'salto a INICIO

    ENDIF                                    'fin del if

    high GAS                               'enciendo GAS

    pause 500                             'pausa de 500 ms

    high PILOT                            'enciendo PILOT

    pause 500                             'pausa de 500 ms

  

    if LLAMA = 0 then               'pregunto si LLAMA es 1 si es cierto

    pause 1000                          'pausa de 1 seg

    else                                      'de lo contrario

    low PILOT                            'apago PILOT

    goto MANTENER                 'salto a MANTENER

    endif                                    'fin del if

  

    if LLAMA = 0 then               'pregunto si LLAMA es 1 si es cierto

    pause 1000                          'pausa de 1 seg

    goto APAGAR                      'salto a APAGAR

    else                                     'de lo contrario

    low PILOT                            'apago PILOT

    goto MANTENER               'salto a MANTENER

    endif                                   'fin de if

  

MANTENER:                            'subrutina MANTENER

  

    pause 500                            'pausa de 500 ms

    if TEMP = 0 then                  'pregunto si TEMP es 0 si es cierto

    goto ALARM                        'salto a ALARM

    endif                                     'fin de if

    pause 500                            'pausa de 500 ms

    if LLAMA and FLUJO  =1 then   'pregunta si LLAMA y FLUJO son 1 si es cierto

    gosub MANTENER              'salto a MANTENER de lo contrario

    goto APAGAR                     'salto a APAGAR

    endif                                   'fin del if

  

  

APAGAR:                                'subrutina de APAGAR

    low GAS                            'apago GAS

    low PILOT                         'apago PILOT

    pause 5000                       'pausa 500 ms

    goto  INICIO                     'salto a inicio

  

ALARM:                                'subrutina ALARM

    low gas                             'apago GAS     

    low piloT                           'apago PILOT

    goto LED                            'salto a LED

  

LED:                                      'subrutina LED

    high ALAR                        'prendo ALAR

    pause 100                        'pausa de 100 ms

    low ALAR                         'apago ALAR

    pause 100                        'pausa de 100 ms

    if TEMP =0 then               'pregunto TEMP es 0 si es cierto     

    gosub LED                       'regreso a LED  de lo contrario

    goto INICIO                     'salto a inicio

    endif                               'fin del if

  

    goto inicio                      'ir a inicio

    end                                 'fin del programa
Mensaje automáticamente combinado:

Una breve descripción del funcionamiento del programa, al arrancar el programa, se supervisa la entrada TEMP que es un sensor de temperatura por interruptor térmico normalmente cerrado, colocando un 1 lógico en el pin RB.3, cuando es 0 lógico se activa la alarma y evita que siga prendido o que encienda el quemador, al abrir la llave (chorro, regadera) se activa el interruptor del del FLUJO de agua indicando el comienzo del trabajo de calentar, se activa la salida del GAS (electro válvula) y después de 200 ms se activa la salida de PILOT (generador de alta tención) y se enciende el quemador, luego de otra pausa se supervisa la entrada LLAMA la cual detecta que hay llama en el quemador, apagando la salida PILOT y se mantiene hasta que se cierre la llave abierta o que se apague la llama (agotarse el gas) o se elevo la temperatura max del calentador y halla activado el sensor TEMP.
 
Última edición:
Ya realizado el cambio o modificaciones al programa del PIC16F84A para compilarlo para el PIC12F629 no logro que funcione y el defecto está en los fuses de ese PIC.
Una de las fallas o error que presenta la simulación es que, no convierte el pin GP.3 en entrada y continúa siendo el pin del MCLR, tampoco se configura el oscilador interno.
Los fuses para los PIC y otros datos más, se encuentran en los archivos .inc
Por ejemplo, estos son los fuses para el PIC12F629:

Código:
; The following is an assignment of address values for all of the
; configuration registers for the purpose of table reads
_CONFIG          EQU  H'2007'

;----- CONFIG Options --------------------------------------------------
_FOSC_LP             EQU  H'3FF8'    ; LP oscillator: Low power crystal on GP4/OSC2/CLKOUT and GP5/OSC1/CLKIN
_LP_OSC              EQU  H'3FF8'    ; LP oscillator: Low power crystal on GP4/OSC2/CLKOUT and GP5/OSC1/CLKIN
_FOSC_XT             EQU  H'3FF9'    ; XT oscillator: Crystal/resonator on GP4/OSC2/CLKOUT and GP5/OSC1/CLKIN
_XT_OSC              EQU  H'3FF9'    ; XT oscillator: Crystal/resonator on GP4/OSC2/CLKOUT and GP5/OSC1/CLKIN
_FOSC_HS             EQU  H'3FFA'    ; HS oscillator: High speed crystal/resonator on GP4/OSC2/CLKOUT and GP5/OSC1/CLKIN
_HS_OSC              EQU  H'3FFA'    ; HS oscillator: High speed crystal/resonator on GP4/OSC2/CLKOUT and GP5/OSC1/CLKIN
_FOSC_EC             EQU  H'3FFB'    ; EC: I/O function on GP4/OSC2/CLKOUT pin, CLKIN on GP5/OSC1/CLKIN
_EC_OSC              EQU  H'3FFB'    ; EC: I/O function on GP4/OSC2/CLKOUT pin, CLKIN on GP5/OSC1/CLKIN
_FOSC_INTRCIO        EQU  H'3FFC'    ; INTOSC oscillator: I/O function on GP4/OSC2/CLKOUT pin, I/O function on GP5/OSC1/CLKIN
_INTRC_OSC_NOCLKOUT  EQU  H'3FFC'    ; INTOSC oscillator: I/O function on GP4/OSC2/CLKOUT pin, I/O function on GP5/OSC1/CLKIN
_FOSC_INTRCCLK       EQU  H'3FFD'    ; INTOSC oscillator: CLKOUT function on GP4/OSC2/CLKOUT pin, I/O function on GP5/OSC1/CLKIN
_INTRC_OSC_CLKOUT    EQU  H'3FFD'    ; INTOSC oscillator: CLKOUT function on GP4/OSC2/CLKOUT pin, I/O function on GP5/OSC1/CLKIN
_FOSC_EXTRCIO        EQU  H'3FFE'    ; RC oscillator: I/O function on GP4/OSC2/CLKOUT pin, RC on GP5/OSC1/CLKIN
_EXTRC_OSC_NOCLKOUT  EQU  H'3FFE'    ; RC oscillator: I/O function on GP4/OSC2/CLKOUT pin, RC on GP5/OSC1/CLKIN
_FOSC_EXTRCCLK       EQU  H'3FFF'    ; RC oscillator: CLKOUT function on GP4/OSC2/CLKOUT pin, RC on GP5/OSC1/CLKIN
_EXTRC_OSC_CLKOUT    EQU  H'3FFF'    ; RC oscillator: CLKOUT function on GP4/OSC2/CLKOUT pin, RC on GP5/OSC1/CLKIN

_WDTE_OFF            EQU  H'3FF7'    ; WDT disabled
_WDT_OFF             EQU  H'3FF7'    ; WDT disabled
_WDTE_ON             EQU  H'3FFF'    ; WDT enabled
_WDT_ON              EQU  H'3FFF'    ; WDT enabled

_PWRTE_ON            EQU  H'3FEF'    ; PWRT enabled
_PWRTE_OFF           EQU  H'3FFF'    ; PWRT disabled

_MCLRE_OFF           EQU  H'3FDF'    ; GP3/MCLR pin function is digital I/O, MCLR internally tied to VDD
_MCLRE_ON            EQU  H'3FFF'    ; GP3/MCLR pin function is MCLR

_BOREN_OFF           EQU  H'3FBF'    ; BOD disabled
_BODEN_OFF           EQU  H'3FBF'    ; BOD disabled
_BOREN_ON            EQU  H'3FFF'    ; BOD enabled
_BODEN_ON            EQU  H'3FFF'    ; BOD enabled

_CP_ON               EQU  H'3F7F'    ; Program Memory code protection is enabled
_CP_OFF              EQU  H'3FFF'    ; Program Memory code protection is disabled

_CPD_ON              EQU  H'3EFF'    ; Data memory code protection is enabled
_CPD_OFF             EQU  H'3FFF'    ; Data memory code protection is disabled

Y la palabra de configuración para el PIC12629 en PBPX >= 3.0, sería así:

Código:
; Palabra de configuración:
#Config
    __CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _MCLRE_OFF & _PWRTE_ON
#EndConfig
 
@dafer ¿ Que programador/quemador usas ?... Lo pregunto porque muchos de ellos te permite "ajustar"/modificar la palabra de configuración. Por lo que, en vez de hacerlo en el programa, lo haces ahí. (No es lo mejor pero es otra opción que te puede sacar de apuros).

Ya que no has puesto el esquema con el PIC12f629, por las dudas, te advierto que el pin 4 (GPIO 3) no tiene resistencia de pull-up interna, ojo como usas ese pin.
 
Buen día foro, agradecido por la orientación darkbytes y switchxxi , la probare en la tarde y lo del pin GP.4 que funciona como MCLR siempre a menos que por los fuses se configure como entrada, y cuando les enviae al cod y el circuito con el pi12F629 ese detalle lo tome en cuenta.
mil gracias

Ser ignorante en algo, no te hace bruto a menos que nunca intentes saber mas de eso. DAFER
Mensaje automáticamente combinado:

disculpen se me olvidaba uso microcode studio, pickit2 y quemador DT2090 por usb.
 
Buenas noches, saludos.
Acudo a este foro con la finalidad de interactuar con ustedes y lograr superar un inconveniente con un pic y su programa, el cual paso a describir así.
Tengo un calentador de agua a gas, al cual, se le dañó (quemó) la tarjeta de control.
Menciono que esta tarjeta quemada posee como elemento de control un PIC12C509.
Yo analicé el funcionamiento del aparato y diseñé un código en microcode pero basado en el PIC16F84A y funciona sin problema en la simulación de proteus.
El inconveniente se presenta por el tamaño de la tarjeta con el PIC16F84A, que no cabe en el espacio destinado en el calentador, sin menoscabar que sobran pines sin uso.
A partir de ahí, decido pasar previas modificaciones a un pic enano, el PIC12F629, dado a sus bondades, el proyecto necesita solo tres entradas y tres salidas y este pic me ofrece eso.
Ya realizado el cambio o modificaciones al programa del PIC16F84A para compilarlo para el PIC12F629 no logro que funcione y el defecto está en los fuses de ese PIC.
Una de las fallas o error que presenta la simulación es que, no convierte el pin GP.3 en entrada y continúa siendo el pin del MCLR, tampoco se configura el oscilador interno.
Sin más, muestro el código hecho para el PIC16F84A y la simulación en proteus.
Cabe destacar que está realizado en microcode studio

Ver el archivo adjunto 262955

Código:
'*  Version : 1.0                                               *

'*  Notes   : control calentador agua con pic 16f84a                                                  *

'*          :                                                   *

'****************************************************************

                                                        'pic 16F84A

define osc 4                                    'defino frec osc en 4mhz

    trisa=%00000                             'configuro puerto A como salidas

    trisb=%00111000                       'configuro puerto RB0-RB2 salidas y RB3-RB5 entradas

    portb=0                                      'inicializo las salidas a 0 logico

symbol  TEMP    = portb.3              'nombro el pin RB3 como TEMP

symbol  LLAMA  = portb.4              'nombro el pin RB4 como LLAMA

symbol  FLUJO    = portb.5             'nombro el pin RB5 como FLUJO

symbol  GAS       = portb.0             'nombro el pin RB0 como GAS

symbol  PILOT     = portb.1             'nombro el pin RB1 como PILOT

symbol  ALAR     = portb.2             'nombro el pin RB2 como ALAR


INICIO:                                           'comienzo de programa

    if TEMP = 0 then                        'pregunto si TEMP es 0 si es cierto

    goto ALARM                              'salto a ALARM

    endif                                           'fin del if

    if FLUJO =1 then                        'pregunto si FLUJO es 1 si es cierto

    pause 200                                  'pausa de 200 ms

    goto PRENDER                          'salto a PRENDER

    else                                            'de lo contrario

    goto inicio                                'salto a inicio

    endif                                         'fin del if

 

PRENDER:                                    'subrutina PRENDER

    pause 1000                             'pausa de 1 seg

    IF temp = 0 THEN                   'pregunto si TEMP es 0 si es cierto

    GOTO ALARM                         'salto a ALARM

    endif                                      'fin del if

    if FLUJO =0 THEN                  'pregunto si FLUJO es 0 si es cierto

    GOSUB INICIO                       'salto a INICIO

    ENDIF                                    'fin del if

    high GAS                               'enciendo GAS

    pause 500                             'pausa de 500 ms

    high PILOT                            'enciendo PILOT

    pause 500                             'pausa de 500 ms

 

    if LLAMA = 0 then               'pregunto si LLAMA es 1 si es cierto

    pause 1000                          'pausa de 1 seg

    else                                      'de lo contrario

    low PILOT                            'apago PILOT

    goto MANTENER                 'salto a MANTENER

    endif                                    'fin del if

 

    if LLAMA = 0 then               'pregunto si LLAMA es 1 si es cierto

    pause 1000                          'pausa de 1 seg

    goto APAGAR                      'salto a APAGAR

    else                                     'de lo contrario

    low PILOT                            'apago PILOT

    goto MANTENER               'salto a MANTENER

    endif                                   'fin de if

 

MANTENER:                            'subrutina MANTENER

 

    pause 500                            'pausa de 500 ms

    if TEMP = 0 then                  'pregunto si TEMP es 0 si es cierto

    goto ALARM                        'salto a ALARM

    endif                                     'fin de if

    pause 500                            'pausa de 500 ms

    if LLAMA and FLUJO  =1 then   'pregunta si LLAMA y FLUJO son 1 si es cierto

    gosub MANTENER              'salto a MANTENER de lo contrario

    goto APAGAR                     'salto a APAGAR

    endif                                   'fin del if

 

 

APAGAR:                                'subrutina de APAGAR

    low GAS                            'apago GAS

    low PILOT                         'apago PILOT

    pause 5000                       'pausa 500 ms

    goto  INICIO                     'salto a inicio

 

ALARM:                                'subrutina ALARM

    low gas                             'apago GAS    

    low piloT                           'apago PILOT

    goto LED                            'salto a LED

 

LED:                                      'subrutina LED

    high ALAR                        'prendo ALAR

    pause 100                        'pausa de 100 ms

    low ALAR                         'apago ALAR

    pause 100                        'pausa de 100 ms

    if TEMP =0 then               'pregunto TEMP es 0 si es cierto    

    gosub LED                       'regreso a LED  de lo contrario

    goto INICIO                     'salto a inicio

    endif                               'fin del if

 

    goto inicio                      'ir a inicio

    end                                 'fin del programa

Código:
'*  Version : 1.0                                               *

'*  Notes   : control calentador agua con pic 16f84a                                                  *

'*          :                                                   *

'****************************************************************

                                                        'pic 16F84A

define osc 4                                    'defino frec osc en 4mhz

    trisa=%00000                             'configuro puerto A como salidas

    trisb=%00111000                       'configuro puerto RB0-RB2 salidas y RB3-RB5 entradas

    portb=0                                      'inicializo las salidas a 0 logico

symbol  TEMP    = portb.3              'nombro el pin RB3 como TEMP

symbol  LLAMA  = portb.4              'nombro el pin RB4 como LLAMA

symbol  FLUJO    = portb.5             'nombro el pin RB5 como FLUJO

symbol  GAS       = portb.0             'nombro el pin RB0 como GAS

symbol  PILOT     = portb.1             'nombro el pin RB1 como PILOT

symbol  ALAR     = portb.2             'nombro el pin RB2 como ALAR


INICIO:                                           'comienzo de programa

    if TEMP = 0 then                        'pregunto si TEMP es 0 si es cierto

    goto ALARM                              'salto a ALARM

    endif                                           'fin del if

    if FLUJO =1 then                        'pregunto si FLUJO es 1 si es cierto

    pause 200                                  'pausa de 200 ms

    goto PRENDER                          'salto a PRENDER

    else                                            'de lo contrario

    goto inicio                                'salto a inicio

    endif                                         'fin del if

 

PRENDER:                                    'subrutina PRENDER

    pause 1000                             'pausa de 1 seg

    IF temp = 0 THEN                   'pregunto si TEMP es 0 si es cierto

    GOTO ALARM                         'salto a ALARM

    endif                                      'fin del if

    if FLUJO =0 THEN                  'pregunto si FLUJO es 0 si es cierto

    GOSUB INICIO                       'salto a INICIO

    ENDIF                                    'fin del if

    high GAS                               'enciendo GAS

    pause 500                             'pausa de 500 ms

    high PILOT                            'enciendo PILOT

    pause 500                             'pausa de 500 ms

 

    if LLAMA = 0 then               'pregunto si LLAMA es 1 si es cierto

    pause 1000                          'pausa de 1 seg

    else                                      'de lo contrario

    low PILOT                            'apago PILOT

    goto MANTENER                 'salto a MANTENER

    endif                                    'fin del if

 

    if LLAMA = 0 then               'pregunto si LLAMA es 1 si es cierto

    pause 1000                          'pausa de 1 seg

    goto APAGAR                      'salto a APAGAR

    else                                     'de lo contrario

    low PILOT                            'apago PILOT

    goto MANTENER               'salto a MANTENER

    endif                                   'fin de if

 

MANTENER:                            'subrutina MANTENER

 

    pause 500                            'pausa de 500 ms

    if TEMP = 0 then                  'pregunto si TEMP es 0 si es cierto

    goto ALARM                        'salto a ALARM

    endif                                     'fin de if

    pause 500                            'pausa de 500 ms

    if LLAMA and FLUJO  =1 then   'pregunta si LLAMA y FLUJO son 1 si es cierto

    gosub MANTENER              'salto a MANTENER de lo contrario

    goto APAGAR                     'salto a APAGAR

    endif                                   'fin del if

 

 

APAGAR:                                'subrutina de APAGAR

    low GAS                            'apago GAS

    low PILOT                         'apago PILOT

    pause 5000                       'pausa 500 ms

    goto  INICIO                     'salto a inicio

 

ALARM:                                'subrutina ALARM

    low gas                             'apago GAS    

    low piloT                           'apago PILOT

    goto LED                            'salto a LED

 

LED:                                      'subrutina LED

    high ALAR                        'prendo ALAR

    pause 100                        'pausa de 100 ms

    low ALAR                         'apago ALAR

    pause 100                        'pausa de 100 ms

    if TEMP =0 then               'pregunto TEMP es 0 si es cierto    

    gosub LED                       'regreso a LED  de lo contrario

    goto INICIO                     'salto a inicio

    endif                               'fin del if

 

    goto inicio                      'ir a inicio

    end                                 'fin del programa
Mensaje automáticamente combinado:

Una breve descripción del funcionamiento del programa, al arrancar el programa, se supervisa la entrada TEMP que es un sensor de temperatura por interruptor térmico normalmente cerrado, colocando un 1 lógico en el pin RB.3, cuando es 0 lógico se activa la alarma y evita que siga prendido o que encienda el quemador, al abrir la llave (chorro, regadera) se activa el interruptor del del FLUJO de agua indicando el comienzo del trabajo de calentar, se activa la salida del GAS (electro válvula) y después de 200 ms se activa la salida de PILOT (generador de alta tención) y se enciende el quemador, luego de otra pausa se supervisa la entrada LLAMA la cual detecta que hay llama en el quemador, apagando la salida PILOT y se mantiene hasta que se cierre la llave abierta o que se apague la llama (agotarse el gas) o se elevo la temperatura max del calentador y halla activado el sensor TEMP.
podrias optmizar varias lineas con el comando "while" y hasta quizas con un timmer para verificar temperatura.
 
Buenas noches foro, coloque la palabra de configuración y aun sin compilar, me da error, indicando que hay ERROR SINTAXIS (syntax error), sigo haciendo pruebas ye intentos, al amigo torres le comento buena opción pero no aplicable a mi proyecto con el 12F629 que carece de entradas analógicas.

Sé perseverante con tus objetivos y flexible con tus métodos.
 
¿ Cual sería el error que da el compilador ? ¿ Probaste tal cual como te dijo D@rkbytes ? Por lo que leí, las palabras de configuración deben estar en mayúsculas "_wdt_off" no es lo mismo que "_WDT_OFF", revisa si no viene por ahí el problema.

el 12F629 que carece de entradas analógicas.

Ojo con esa asunción, el 12f629 si que tiene entradas análogas. No te olvides del comparador análogo que deberás apagar si es que el compilador no lo hace, no manejo ese lenguaje.
 
Buenas noches foro, coloque la palabra de configuración y aun sin compilar, me da error, indicando que hay ERROR SINTAXIS (syntax error), sigo haciendo pruebas ye intentos, al amigo torres le comento buena opción pero no aplicable a mi proyecto con el 12F629 que carece de entradas analógicas.

:facepalm:Tenes razón, hable pensando en el el 675 :p Igualmente, antes que nada, te recomiendo que leas estos dos hilos por las dudas:

:tu: No me anda GPIO.0 en pic 12f629 con pbp

:tu: No me anda GPIO.0 en pic 12f629 con pbp

En fin; Ahi lo manoseé un poco lo que tenias; En un rato armo algo en proteus y te comento si funcionó

;@ DEVICE PIC12F629 ;@ DEVICE INTRC_OSC_NOCLKOUT,PROTECT_OFF,CPD_OFF,WDT_OFF,MCLR_OFF,PWRT_ON,BOD_OFF DEFINE OSC 4 ; Definir que se trabajará con 4MHz. CMCON = 7 ; Comparadores analógicos OFF TRISIO = %1111000 ; Solo GP1 como salida symbol TEMP = GPIO.3 'nombro el pin RB3 como TEMP symbol LLAMA = GPIO.4 'nombro el pin RB4 como LLAMA symbol FLUJO = GPIO.5 'nombro el pin RB5 como FLUJO symbol GAS = GPIO.0 'nombro el pin RB0 como GAS symbol PILOT = GPIO.1 'nombro el pin RB1 como PILOT symbol ALAR = GPIO.2 'nombro el pin RB2 como ALAR GPIO.0 = 0 : GPIO.1 = 0 : GPIO.2 = 0 INICIO: 'comienzo de programa if TEMP = 0 then 'pregunto si TEMP es 0 si es cierto goto ALARM 'salto a ALARM endif 'fin del if if FLUJO =1 then 'pregunto si FLUJO es 1 si es cierto pause 200 'pausa de 200 ms goto PRENDER 'salto a PRENDER else 'de lo contrario goto inicio 'salto a inicio endif 'fin del if PRENDER: 'subrutina PRENDER pause 1000 'pausa de 1 seg IF temp = 0 THEN 'pregunto si TEMP es 0 si es cierto GOTO ALARM 'salto a ALARM endif 'fin del if if FLUJO =0 THEN 'pregunto si FLUJO es 0 si es cierto GOSUB INICIO 'salto a INICIO ENDIF 'fin del if high GAS 'enciendo GAS pause 500 'pausa de 500 ms high PILOT 'enciendo PILOT pause 500 'pausa de 500 ms if LLAMA = 0 then 'pregunto si LLAMA es 1 si es cierto pause 1000 'pausa de 1 seg else 'de lo contrario low PILOT 'apago PILOT goto MANTENER 'salto a MANTENER endif 'fin del if if LLAMA = 0 then 'pregunto si LLAMA es 1 si es cierto pause 1000 'pausa de 1 seg goto APAGAR 'salto a APAGAR else 'de lo contrario low PILOT 'apago PILOT goto MANTENER 'salto a MANTENER endif 'fin de if MANTENER: 'subrutina MANTENER pause 500 'pausa de 500 ms if TEMP = 0 then 'pregunto si TEMP es 0 si es cierto goto ALARM 'salto a ALARM endif 'fin de if pause 500 'pausa de 500 ms if LLAMA and FLUJO =1 then 'pregunta si LLAMA y FLUJO son 1 si es cierto gosub MANTENER 'salto a MANTENER de lo contrario goto APAGAR 'salto a APAGAR endif 'fin del if APAGAR: 'subrutina de APAGAR low GAS 'apago GAS low PILOT 'apago PILOT pause 5000 'pausa 500 ms goto INICIO 'salto a inicio ALARM: 'subrutina ALARM low gas 'apago GAS low piloT 'apago PILOT goto LED 'salto a LED LED: 'subrutina LED high ALAR 'prendo ALAR pause 100 'pausa de 100 ms low ALAR 'apago ALAR pause 100 'pausa de 100 ms if TEMP =0 then 'pregunto TEMP es 0 si es cierto gosub LED 'regreso a LED de lo contrario goto INICIO 'salto a inicio endif 'fin del if goto inicio 'ir a inicio end
 
Buenos días foro, lo sugerido por por switcxxi lo tome en cuenta y aun no trabaja, lo expuesto por torres de igual forma lo sometí a mi programa y aun sin funcionar, con respecto a darkbyte, actualice el pbp a versión 3.7 y si compilo pero no trabaja bien, sigo intentando haciendo pruebas, he leído y estudiado libros de pic Basic y parece mentira no sale nada acerca del uso y programa de los pic enanos
Agrego foto de mi quemador de pic atendiendo a la sugerencia de switchxxi
 

Adjuntos

  • IMG_20210302_074404.jpg
    IMG_20210302_074404.jpg
    346.4 KB · Visitas: 16
  • IMG_20210302_074404.jpg
    IMG_20210302_074404.jpg
    346.4 KB · Visitas: 17
Miraste eh hiciste lo que dice esos dos links? Yo armé en proteus lo que creí entenderte y simule; No presté mucha atención y lo hice rápido, pero parecía funcionar. Querés que te pase el hex?
 
Buenas noches saludos a todos desde Perú, por favor alguien podría pasarme un link para poder instalar correctamente el programa pbp y pic basic, no logro instalarlo, espero grandemente su apoyo
 
Hola a todos. Paso por aquí a contarles que después de muchos años tuve que actualizar mi PC y pasar a Windows 10
No lo había actualizado pensando en la pérdida de mis programas y confirmando mis temores ahora no consigo un Microcode Studio que funcione correctamente en el windows 10
¿Será que alguien me puede ayudar??? ¿Dónde lo podré conseguir???
¿Existe algún otro programa que funcione así de bonito como el microcode??? Ayuda, por favor. :(
 
No lo había actualizado pensando en la pérdida de mis programas y confirmando mis temores ahora no consigo un Microcode Studio que funcione correctamente en el windows 10
Yo tengo instalado el Microcode Studio en Windows 10 x64 y funciona correctamente.
¿Será que alguien me puede ayudar?
¿Qué problema tienes?
¿Dónde lo podré conseguir?
Donde siempre: Mecanique MicroCode Studio
¿Existe algún otro programa que funcione así de bonito como el microcode?
Por supuesto, y mucho mejor... Proton IDE
 
Hola a todos. Paso por aquí a contarles que después de muchos años tuve que actualizar mi PC y pasar a Windows 10
No lo había actualizado pensando en la pérdida de mis programas y confirmando mis temores ahora no consigo un Microcode Studio que funcione correctamente en el windows 10
¿Será que alguien me puede ayudar??? ¿Dónde lo podré conseguir???
¿Existe algún otro programa que funcione así de bonito como el microcode??? Ayuda, por favor. :(
Lo mas práctico es tener instalado Virtual Machine en tu PC o laptop con cualquier S.O., e instalar un disco virtual con W XP 32 bits, Microcode corre muy bien allí.
Saludos
Americo8888
 
Yo tengo instalado el Microcode Studio en Windows 10 x64 y funciona correctamente.

¿Qué problema tienes?

Donde siempre: Mecanique MicroCode Studio

Por supuesto, y mucho mejor... Proton IDE
OFF-TOPIC

Lastima que ya no saldrán nuevas actualizaciones, lo que si es de uno de los programadores de Proton, el Positron.

Hay un repositorio con ejemplos/temas de Proton que estaban en el foro aquí.

Personalmente no me satisface como el Proton pero puede ser dado los años que llevo usándolo y acostumbrándome a la interface, etc.

Saludos.
 
Atrás
Arriba