Comparación de variables en PICBasic

Amigo Torres gracias por su ayuda pero una preguntita, por que al programita le agregas:

#Config
__CONFIG _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _BOREN_OFF & _LVP_OFF
#EndConfig

si el proyecto trabaja con cristal de 4 Mhz. y esto "_INTRC_OSC" creo que es crystal interno. ademas mi pbp, no lo compila asi declarado.
Tengo win 7 de 64 bytes compilo con mpasm.

otra cosita, en el pin ra3 tengo conectado un led, estara bien ese led ahi o me afecta en la interrupt por B0, y mas bien deberia llevar una res de 10k a positivo?.
 
Última edición:
Ni idea del basic ese... pero
¿Después de RESUME se ejecuta algo? Yo creo que debería de ir:

ENABLE
RESUME

Y no al revés como está.
 
Si el proyecto trabaja con cristal de 4 Mhz. y esto "_INTRC_OSC" creo que es cristal interno.
Además mi pbp, no lo compila así declarado.
Tengo win 7 de 64 bytes compilo con mpasm.
No es cristal interno, sino oscilador interno.
Esa palabra de configuración es para el compilador PBPX 3, que es el que actualmente se usa para sistemas x64
En el pin RA3 tengo conectado un led. ¿Estará bien ese led ahí o me afecta en la interrupción por RB0?
El pin RA3 en el PIC16F628A es un pin análogo, parte del comparador CMP1 y se convierte en digital cuando el registro CMCON tiene el valor 7
CM2 = 1, CM1 = 1, CM0 = 1
Así que estando en modo digital lo puedes usar sin problemas para el LED y no tiene por qué afectar la interrupción externa por RB0
¿Después de RESUME se ejecuta algo? Yo creo que debería de ir:

ENABLE
RESUME

Y no al revés como está.
No. En PICBasic es así. Primero la instrucción Resume, seguida de la instrucción Enable.

El correcto control de una o varias interrupciones, sería de esta forma: (En este caso, interrupción externa por el pin RB0)

Código:
    OPTION_REG.6 = 1        ; Interrupción por flanco de subida.
    INTCON.4 = 1            ; Habilitar interrupción externa por RB0
    INTCON.7 = 1            ; Habilitar interrupciones globales.
  
    On Interrupt GoTo Servicio_Interrupciones

    ; Programa, rutinas, etc.

Servicio_Interrupciones:
    Disable
    ; Servicio de interrupción externa por RB0
    If INTCON.1 = 1 Then        ; Ocurrió una interrupción por RB0
        ; Código a ejecutar.
        INTCON.1 = 0            ; Retornar a 0 el bit INTF (RB0/INT External interrupt flag bit)
    EndIf
  
    ; Aquí se puede colocar el control de otras interrupciones.
  
    Resume
    Enable

Adjunto un ejemplo de un contador programable hasta 65535 (Max size Word variable)
El conteo se establece por medio de pulsadores y la cuenta se realiza por interrupción externa (RB0)
Es bastante simple, pero puede servir de base.
 

Adjuntos

  • 16F628A Contador Programable (Push Buttons).rar
    74 KB · Visitas: 8
si el proyecto trabaja con cristal de 4 Mhz. y esto "_INTRC_OSC" creo que es crystal interno. ademas mi pbp, no lo compila asi declarado.
Tengo win 7 de 64 bytes compilo con mpasm.
Disculpa, es que en el esquemático no había un cristal asumí que utilizabas el oscilador interno, para un cristal externo de hasta 4Mz en PBP 3.0 es asi:
Código:
#Config
    __CONFIG _XT_OSC & _WDT_OFF & _PWRTE_ON & _BOREN_OFF & _LVP_OFF
#EndConfig

Los fuses también puedes configurarlo con tu grabador. Si quieres hacerlo con tu compilador (pbp 2.60 o inferior) te recomiendo que pases por aquí: Compilar en pbp windows 64bits
 
Última edición:
No es cristal interno, sino oscilador interno.
Esa palabra de configuración es para el compilador PBPX 3, que es el que actualmente se usa para sistemas x64

El pin RA3 en el PIC16F628A es un pin análogo, parte del comparador CMP1 y se convierte en digital cuando el registro CMCON tiene el valor 7
CM2 = 1, CM1 = 1, CM0 = 1
Así que estando en modo digital lo puedes usar sin problemas para el LED y no tiene por qué afectar la interrupción externa por RB0

No. En PICBasic es así. Primero la instrucción Resume, seguida de la instrucción Enable.

El correcto control de una o varias interrupciones, sería de esta forma: (En este caso, interrupción externa por el pin RB0)

Código:
    OPTION_REG.6 = 1        ; Interrupción por flanco de subida.
    INTCON.4 = 1            ; Habilitar interrupción externa por RB0
    INTCON.7 = 1            ; Habilitar interrupciones globales.
 
    On Interrupt GoTo Servicio_Interrupciones

    ; Programa, rutinas, etc.

Servicio_Interrupciones:
    Disable
    ; Servicio de interrupción externa por RB0
    If INTCON.1 = 1 Then        ; Ocurrió una interrupción por RB0
        ; Código a ejecutar.
        INTCON.1 = 0            ; Retornar a 0 el bit INTF (RB0/INT External interrupt flag bit)
    EndIf
 
    ; Aquí se puede colocar el control de otras interrupciones.
 
    Resume
    Enable

Adjunto un ejemplo de un contador programable hasta 65535 (Max size Word variable)
El conteo se establece por medio de pulsadores y la cuenta se realiza por interrupción externa (RB0)
Es bastante simple, pero puede servir de base.
Estimado D@rkbyte aqui te adjunto dos archivos uno protón y el otro en pbp, quisiera pasar registros de proton a picbasic, he estado intandolo pero en la simulacion del hex picbasic no realiza nada, con el proton no hay problema, espero tu respuesta, gracias de antemano.
 

Adjuntos

  • TestSleep.rar
    142 KB · Visitas: 1
  • TestSleep.rar
    153.5 KB · Visitas: 2
No mencionas los errores, pero puedo comprender que tienes problemas con declaración de registros.
Si es eso, no lo veo complicado, hasta en el ejemplo tienes la clave.
Por ejemplo:
Aquí da el error en esto...
Error PBP.jpg
Pero más arriba se puede ver cómo se declaran los registros...
Declaración.jpg
¿Qué tienes que hacer? Leer la hoja de datos y ver a qué registro pertenece el bit GIE
La hoja de datos te dirá que el bit GIE pertenece al registro INTCON en el bit 7
INTCON.GIE.jpg
Así que lo declaras y asunto resuelto.
GIE bit.jpg
 
No mencionas los errores, pero puedo comprender que tienes problemas con declaración de registros.
Si es eso, no lo veo complicado, hasta en el ejemplo tienes la clave.
Por ejemplo:
Aquí da el error en esto...
Ver el archivo adjunto 278601
Pero más arriba se puede ver cómo se declaran los registros...
Ver el archivo adjunto 278603
¿Qué tienes que hacer? Leer la hoja de datos y ver a qué registro pertenece el bit GIE
La hoja de datos te dirá que el bit GIE pertenece al registro INTCON en el bit 7
Ver el archivo adjunto 278604
Así que lo declaras y asunto resuelto.
Ver el archivo adjunto 278605
Gracias por responder estimado D@rkbytes, registros que se declaran en proton y parece ser tambien compatible en PBP logre compilarlo, el problema es al simularlo no enciende el led, no hace nada, donde estaría mi error, adjunto archivo pbp que logre compilar
 

Adjuntos

  • prueba.rar
    15.2 KB · Visitas: 2
Y me pregunto... ¿Qué es lo que quieres hacer? Ese código no lo veo nada bien, si es que se trata de aprender.
Yo te recomiendo que uses Proton IDE, es mucho mejor que MicroCode Studio.
 
Y me pregunto... ¿Qué es lo que quieres hacer? Ese código no lo veo nada bien, si es que se trata de aprender.
Yo te recomiendo que uses Proton IDE, es mucho mejor que MicroCode Studio.
Lo que pasa tengo un proyecto de sensor infrarojo en pbp, ahi mismo se genera los 38 khz, no tengo idea como hacerlo en protón.

Lo que quería era pasar esos registros de proton a picbasic para incrustarlo en el codigo infrarrojo, para darle un descanso cuando no haya actividad externa en en el sensor, así el infrarrojo emisor pueda durarme por mas tiempo.. por que sabemos que toda fuente emisión de luz tiene
un periodo de vida, te agradezco por la informacion que me puedas brindar.

PD. tendras un proton id ya crakeado, el mio ya no funciona el crack
 
Lo que quería era pasar esos registros de proton a picbasic para incrustarlo en el código infrarrojo, para darle un descanso cuando no haya actividad externa en en el sensor, así el infrarrojo emisor pueda durarme por mas tiempo.. por que sabemos que toda fuente emisión de luz tiene
un periodo de vida, te agradezco por la información que me puedas brindar.
En MicroCode Studio la instrucción Sleep tiene como parámetro el periodo. Sleep Period
Por ejemplo: Sleep 60 ; Esto duerme al microcontrolador por 60 segundos.
Si quieres hacer un Sleep prolongado, usa lo siguiente:
Asm
Sleep
EndAsm
PD. ¿Tendrás un proton id ya crackeado? Al mío ya no le funciona el crack.
No. Eso está prohibido por las Normas del Foro.

2.9 Los usuarios no pueden publicar, solicitar ni difundir información que promueva el plagio, la piratería, la divulgación de números de serie, crack o similares, ni copias no autorizadas de material protegido por derechos de autor.
 
Atrás
Arriba