He escrito un programa simple que enciende y apaga los LED de diferentes colores a diferentes intervalos. Cuando programo el chip (un PIC16F819), el programa se ejecuta perfectamente y todo está bien. Sin embargo, en el momento en que desconecto mi ICD3 de la configuración, parece que el programa se detiene (o el circuito se satura, o algo está sucediendo con MCLR, no estoy seguro) y todos los LED se encienden y permanecen allí. El programa es el siguiente:
#include "pic.h" // load pin names
#include <htc.h> // load delay library
#ifndef _XTAL_FREQ
// Unless already defined assume 4MHz system frequency
// This definition is required to calibrate __delay_us() and __delay_ms()
#define _XTAL_FREQ 31250
#endif
void main() // this is the main program
{
TRISB=0B00000000; // set all pins on port B as output
// XXXBXPRX
while(1) // execute the following code block forever
{
PORTB = 0b11111111; // turn all port B pins ON
__delay_ms(5000); // pause 1 second
PORTB = PORTB & 0b00010100; //turn off Red
__delay_ms(7000);
PORTB = PORTB & 0b00010000; //turn off Purple
__delay_ms(7000);
PORTB = PORTB & 0b00000000; //all off
PORTB = PORTB | 0b00000010; //turn on Red
__delay_ms(7000);
PORTB = PORTB | 0b00010100; //turn on Blue and Purple
PORTB = PORTB & 0b00010100; //turn off Red
__delay_ms(7000);
PORTB = PORTB & 0b00000100; //turn off Blue
__delay_ms(7000);
PORTB = PORTB & 0b00000000; //all off
PORTB = PORTB | 0b00010010; //turn on Red and Blue
__delay_ms(7000);
PORTB = 0b00000000; // turn all port B pins OFF
__delay_ms(3000); // pause 1 second
}
}
Y mis bits de configuración están configurados de esta manera:
Tengounaresistenciade10KentreMCLRyVDD,ylaconfiguracióndecompilaciónestáconfiguradaen"Release".