PIC16f84A No se puede retrasar correctamente

1

Fue uno de mis primeros experimentos relacionados con sistemas integrados. Seguí este documento: enlace El problema surgió en el Tutorial 6. Intenté parpadear el led a un ritmo diferente cuando presioné el botón. Primero, tomé el tutorial que me dio como ejemplo palabra por palabra, sin embargo, no funcionó. Cuando no lo presioné, algunas veces parpadea más lentamente más rápido, cuando presiono el botón parpadea en una frecuencia esperada. Luego, cambié el código al programa a continuación para simplificarlo:

LIST p=16F84A
INCLUDE "p16f84a.inc"


RES_VECT  CODE    0x0000
GOTO    START


MAIN_PROG CODE

TIME equ 0x0f
Delay

COUNT1 equ 0x0c
COUNT2 equ 0x0d
COUNT3 equ 0x0e

    movlw   0xFF
    movwf   COUNT1
LOOP1

    movlw   0xFF
    movwf   COUNT2
LOOP2

    movfw   TIME
    movwf   COUNT3
LOOP3
    decfsz   COUNT3,1
    goto LOOP3

    decfsz   COUNT2,1
    goto LOOP2  

    decfsz   COUNT1,1
    goto LOOP1

    return 

START

    bsf     STATUS,5
    movlw   b'00011111'
    movwf   TRISA
    movlw   0x00
    movwf   TRISB
    bcf     STATUS,5
    movlw   0x00
    movwf   PORTB

MAIN_LOOP

    movlw   0x01
    btfss   PORTA,0
    movlw   0x14
    movwf   TIME

    bsf     PORTB,3
    call    Delay
    bcf     PORTB,3
    call    Delay

    goto MAIN_LOOP

END

Lo mismo sucedió. Mientras parpadeaba irregularmente sin presionar el botón, cuando presioné el botón en RA0, parpadeó más rápido. Quiero que la primera fase sea siempre lenta. Dónde está el problema ? Es el problema en el circuito, en el software o en el propio PIC. Dadas las condiciones físicas, como si btfss no funciona correctamente porque el interruptor es problemático o porque el PIC está quemado. Es más probable que yo sea el fracaso en lugar de ser el hardware. Tal vez exista un error lógico en el software a pesar de que el flujo de un programa similar se expresa con códigos diferentes. ¿No se pudo configurar correctamente el oscilador? Tuve dificultad para configurar un oscilador RC. Cuando agrego su R funciona normal (o creo que sí). Pero después de agregar un capacitor y conectar su otro terminal a un voltaje negativo, el led siempre brilla. ¿Se puede decir exactamente cuál es el problema? ¿Qué está pasando en el fondo?

Información adicional:

Al principio, usé RBO / INT para hacer la prueba de bits con el interruptor. Pero la parte INT era sospechosa para mí. Luego lo cambié a RA0. (Que es lo que se pregunta en la pregunta) El resultado no cambió.

Información adicional 2: Bits de configuración - > __CONFIG _FOSC_EXTRC & _WDTE_OFF & _PWRTE_OFF & _CP_OFF

Información adicional 3: Resulta que no hay ningún restablecimiento involuntario. El problema permanece sin resolver.

    

1 respuesta

4

Según nuestro análisis, parece que el problema se debe a una activación falsa debido a la falta de resistencia de subida / bajada en la entrada del interruptor.

    
respondido por el HandyHowie

Lea otras preguntas en las etiquetas