pic16f628a programado con éxito pero no funciona

0

Quiero parpadear led con pic16f628a usando pickit2 Generé el archivo hexadecimal y lo escribo con éxito, De acuerdo con el código, los RB son ingresados, pero cuando pongo el led entre RB0,1,2,3 .. y lo conecto a tierra, se enciende. Todos los pines encienden el led, estoy usando una salida de 5 voltios

código:

#include<htc.h>

// Config word
__CONFIG(FOSC_HS & WDTE_OFF & PWRTE_ON & CP_OFF);

// Define LED pin
#define LED  RA1

#define _XTAL_FREQ   8000000

void main()
{
    TRISA1 = 0;                // Make RA1 pin output
        TRISB = 1;
        LED    = 0;                // Make RA1 low

    while(1)
    {
        __delay_ms(500);       // Half sec delay
        LED = 0;               // LED off
        __delay_ms(500);       // Half sec delay
        LED = 1;               // LED on
    }
}

esquema:

    
pregunta Makhlouf GHARBI

3 respuestas

4

Estás configurando A0 para que sea una salida, luego estás parpadeando A1. Cual es A0 o A1? Decídete y luego haz que ambos sean iguales.

Otra cosa que noté en tu esquema. Está configurando el oscilador para que sea HS, pero no estoy viendo el cristal de hormigas ni las tapas de carga en su esquema. ¿Acaba de omitirlos de ese dibujo o realmente no existen?

Lo mismo ocurre con el condensador de desacoplamiento obligatorio (faltante) en el pin de alimentación.

    
respondido por el Majenko
1
  1. Como señaló Majenko, configuró los bits de configuración para usar un cristal de alta velocidad (FOSC_HS), pero no agregó un cristal a su esquema. Tenga en cuenta que "#define _XTAL_FREQ" no define realmente la velocidad del oscilador del microcontrolador. Es simplemente un valor constante que utilizan las funciones de retardo para calcular los tiempos de retardo. Debe agregar un cristal o simplemente usar el oscilador interno (mucho más simple). Si no sabe cómo hacerlo, solo pregunte.

  2. Usted debe poner una resistencia de pull-up a VDD en el pin MCLR. Una resistencia de 10k es típica. Si deja MCLR flotando, el chip nunca se ejecutará o se reiniciará aleatoriamente. Puede evitar la resistencia de pull-up si borra el bit MCLRE en los ajustes de configuración, pero no lo recomendaría necesariamente ahora.

respondido por el Dan Laks
0

Si este es uno de sus primeros proyectos con 16f628a, siempre apague el comparador (CMCON = 0x07) y / o use PortB primero. También adjunte algunos leds en diferentes pines y cambie los valores en todo el puerto como PortB = 0x00 y PortB = 0xFF de esa manera, incluso si hay algún conflicto que no sepa acerca de algún pin parpadeará algún led. De esa manera, puedes aprender sobre lo que deberías prestar atención en el futuro. No tiene que preocuparse por MCLR, solo use la palabra de configuración que la apaga y estará bien. Nunca usé ninguna resistencia en ese pin y nunca tuve problemas.

Acabo de notar en tu foto del programador de pickit2 que escribió con éxito, pero creo que algo está mal con tu código hexadecimal: parece que solo hay datos en la primera ubicación. Asegúrate de comprobar eso también.

    
respondido por el Recurzive

Lea otras preguntas en las etiquetas