Tengo un PIC16F877A y yo escribimos 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);
}
}
He compilado correctamente, pero cuando voy a cargar el hex archivo en PICKit2v2 , se mostrará una advertencia como la siguiente :
Y también cuando traté de escribir que hex archivo en el MCU, Se mostrará el siguiente mensaje de error :
Así que volví a abrir mi proyecto en MPLAB X IDE V2.26 y trató de agregar los datos de configuración a mi código, con el asistente de Windows --> PIC vista de Memoria --> Configuración de Bits Pero cuando hago clic en él, veo que esta debajo de la ventana en la parte inferior de la pantalla :
Pregunta 1 : ¿por Qué la mayoría de la memoria es igual a 3FFF
en la primera y segunda imagen que he adjuntado arriba? ¿Eso significa que mi programa es sólo alrededor de 6 bytes? (Los seis primeros bytes son diferentes)
Pregunta 2 : El error que he recibido, es acerca de la configuración de los bits? O es algo más?!
Pregunta 3 : ¿cuál de esta opción, debe seleccionar para el reloj interno? No quiero usar cualquier reloj externo o de cristal o RC.
Pregunta 4 : ¿Cuál es la diferencia entre htc.h y xc.h bibliotecas? Algunos de código de ejemplo en el internet vi htc.h incluido en el sobre de programa? Para qué es esto? Que las bibliotecas se delay() la función?
Pregunta 5 : Es la segunda línea en mi programa obligatorio (me refiero #define _XTAL_FREQ 6000000
) lo Hace por externa del cristal? o ...?
Soy nuevo en el PIC MCU de la programación. Ruegos arrojar alguna luz sobre esta cuestión, para mí y para los futuros espectadores.
Actualización :
He añadido la opción de configuración de mi programa : Ahora este es mi programa :
/*
* File: newmain.c
* Author: Amir Ebrahim
*
* Created on January 3, 2015, 1:42 PM
*/
#include <xc.h>
#define _XTAL_FREQ 12000000
#pragma config FOSC = HS // Oscillator Selection bits (HS oscillator)
#pragma config WDTE = ON // Watchdog Timer Enable bit (WDT enabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOREN = ON // Brown-out Reset Enable bit (BOR enabled)
#pragma config LVP = ON // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3/PGM pin has PGM function; low-voltage programming enabled)
#pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
#pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)
#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)
void main()
{
TRISB7 = 0;
while(1)
{
RB7=1;
__delay_ms(1000);
RB7=0;
__delay_ms(1000);
}
}
Cuando puedo cargar el hex archivo en PICKit2v2 he recibido éxito de carga :
Pero cuando quiero escribir el archivo en el MCU, recibo el mismo error anterior!
Por qué?! :(