¿El primer programa PIC que usa PIC16F877A y sus bits de configuración para el reloj interno?

4

Tengo un PIC16F877A y escribí un programa en MPLAB X IDE para hacer parpadear un LED.

Este es mi programa:

#include <xc.h>
#define _XTAL_FREQ 6000000
void main()
{
    TRISB7 = 0;
   while(1)
   {
         RB7=1;
      __delay_ms(1000);
          RB7=0;
       __delay_ms(1000);
   }
}

Lo compilé con éxito, pero cuando cargo el archivo hex en PICKit2v2 , muestra una advertencia como la siguiente:

YtambiéncuandointentéescribiresearchivohexenMCU,muestraelsiguienteerror:

Así que volví a abrir mi proyecto en MPLAB X IDE V2.26 e intenté agregar datos de configuración a mi código, usando el asistente en Windows - > Vista de memoria PIC - > Bits de configuración Pero cuando hago clic en él, veo la siguiente ventana en la parte inferior de la pantalla:

Pregunta1:¿Porquélamayoríadelamemoriaesiguala3FFFenlaprimeraylasegundaimagenqueadjuntéarriba?¿Esosignificaquemiprogramaesdeaproximadamente6bytes?(Losprimerosseisbytessondiferentes)

Pregunta2:¿Elerrorquerecibíessobrelosbitsdeconfiguración?¿Oesalgomás?!

Pregunta3:¿Cuáldeestasopcionesdeboseleccionarpararelojinterno?NoquierousarningúnrelojexternoocristaloRC.

Pregunta4:¿Cuálesladiferenciaentrelasbibliotecashtc.hyxc.h?¿AlgúncódigodeejemploenInternetquevihtc.hincluidoenelprogramaanterior?¿Paraquésirve?¿Québibliotecassonparalafunciónretraso()?

Pregunta5:¿Esobligatorialasegundalíneademiprograma(merefieroa#define_XTAL_FREQ6000000)?¿Esparauncristalexterno?o...?

SoynuevoenlaprogramacióndePICMCU.Pleasarrojóalgunaluzsobreestetemaparamíyparafuturosespectadores.

Actualización:

Heagregadolaconfiguraciónamiprograma:Ahoraesteesmiprograma:

/**File:newmain.c*Author:AmirEbrahim**CreatedonJanuary3,2015,1:42PM*/#include<xc.h>#define_XTAL_FREQ12000000#pragmaconfigFOSC=HS//OscillatorSelectionbits(HSoscillator)#pragmaconfigWDTE=ON//WatchdogTimerEnablebit(WDTenabled)#pragmaconfigPWRTE=OFF//Power-upTimerEnablebit(PWRTdisabled)#pragmaconfigBOREN=ON//Brown-outResetEnablebit(BORenabled)#pragmaconfigLVP=ON//Low-Voltage(Single-Supply)In-CircuitSerialProgrammingEnablebit(RB3/PGMpinhasPGMfunction;low-voltageprogrammingenabled)#pragmaconfigCPD=OFF//DataEEPROMMemoryCodeProtectionbit(DataEEPROMcodeprotectionoff)#pragmaconfigWRT=OFF//FlashProgramMemoryWriteEnablebits(Writeprotectionoff;allprogrammemorymaybewrittentobyEECONcontrol)#pragmaconfigCP=OFF//FlashProgramMemoryCodeProtectionbit(Codeprotectionoff)voidmain(){TRISB7=0;while(1){RB7=1;__delay_ms(1000);RB7=0;__delay_ms(1000);}}

CuandocarguéelarchivohexenPICKit2v2,recibíunacargaexitosa:

¡Pero cuando quiero escribir el archivo en la MCU, recibo el mismo error anterior!

¡¿Por qué ?! :(

    
pregunta Abraham

1 respuesta

5
  

Pregunta 1: ¿Por qué la mayoría de la memoria es igual a 3FFF en la primera y la segunda imagen que adjunté arriba? ¿Eso significa que mi programa es de aproximadamente 6 bytes? (Los primeros seis bytes son diferentes)

Desplácese hacia abajo: verá más que solo esos. El primer bit es "saltar a tu código", luego está la tabla de vectores para las interrupciones, luego está tu código.

  

Pregunta 2: ¿El error que recibí es sobre los bits de configuración? ¿O es algo más ?!

Eso es lo que dice, ¿no es así? Sin los bits de configuración no funcionará.

  

Pregunta 3: ¿Cuál de estas opciones debo seleccionar para reloj interno? No quiero usar ningún reloj externo, cristal o RC.

El PIC16F877A no tiene oscilador interno. Para eso quieres elegir un chip más moderno.

  

Pregunta 4: ¿Cuál es la diferencia entre las bibliotecas htc.h y xc.h? ¿Algún código de ejemplo en Internet que vi htc.h incluido en el programa anterior? ¿Para qué sirve? ¿Qué bibliotecas es para la función delay ()?

htc.h es para el compilador Hi-Tec. xc.h es para el compilador XC8. Elige el que sea para tu compilador.

  

Pregunta 5: ¿Es obligatoria la segunda línea de mi programa (me refiero a #define _XTAL_FREQ 6000000)? ¿Es para cristal externo? o ...?

Se puede usar para el tiempo de __delay_ms() dependiendo de la implementación de su compilador. Si es así, debe coincidir con el cristal que se adjunta al chip.

    
respondido por el Majenko

Lea otras preguntas en las etiquetas