PIC12F509 No parpadea

1

Aquí hay una pregunta relativamente simple: ¿Qué está mal con mi código a continuación?

Estoy tratando de hacer parpadear un LED del pin GP2, pero me estoy confundiendo cuando se trata de configurar los pines y registros GPIO, y también es un poco diferente porque el 509 no tiene un ADC. Realmente agradecería alguna ayuda.

Gracias (código abajo).

#include <xc.h>
#include <pic12f509.h>

#pragma config OSC = IntRC      // Oscillator Selection bits (internal RC oscillator)
#pragma config WDT = OFF        // Watchdog Timer Enable bit (WDT disabled)
#pragma config CP = OFF         // Code Protection bit (Code protection off)
#pragma config MCLRE = ON       // GP3/MCLR Pin Function Select bit (GP3/MCLR pin function is MCLR)

#define _XTAL_FREQ 4000000
#define LED GPIObits.GP2

int main()
{
    TRISGPIO = 0x00;

    while(1)
    {
        LED = 1;
        __delay_ms(1000);
        LED = 0;
        __delay_ms(1000);
    }
}
    
pregunta ezra_vdj

1 respuesta

2

En la Sección 4.5 de la hoja de datos para este dispositivo, el registro OPTION incluye bit 5, o T0CS : el bit de selección de la fuente del reloj Timer0, que de manera predeterminada está establecido (1).

En este estado, el comentario en las notas de la hoja de datos:

1 = Transición en el pin T0CKI (anula TRIS en el pin T0CKI)

Como GP2 se comparte con T0CKI , debe borrar T0CS antes de borrar los bits de registro TRIS para habilitar GP2 como salida.

int main()
{
    OPTION = 0x00;
    TRISGPIO = 0x00;

    while(1)
    {
        LED = 1;
        __delay_ms(1000);
        LED = 0;
        __delay_ms(1000);
    }
}
    
respondido por el Roger Rowland

Lea otras preguntas en las etiquetas