Estuve renegando con el oscilador interno de un PIC 18F2550, pero logre solucionarlo.
este es el código para un oscilador a 8MHz
// VERSION SOFT: " PCWHD CCS C Compiler 5.010 "
#include <18F2550.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES INTRC_IO //OSCILADOR INTERNO SIN SALIDA DE CLOCK OUT
#FUSES NOPUT //No Power Up Timer
#FUSES NOMCLR //Master Clear pin Un-enabled
#FUSES PROTECT //Code not protected from reading
#FUSES CPD //No EE protection
#FUSES NOBROWNOUT //Reset when brownout detected
#FUSES NOLVP //No Low Voltage Programming
#FUSES NODEBUG //No Debug mode for ICD
#use delay (clock=8000000)
//#define OSC_8MHZ 0x70 // no es necesario definirlo, esta incluido en la cabecera del pic.
#include <D:\MARIO\- ELECTRONICA -\- PROYECTOS EN CCS TERMINADOS -\PROYECTOS CON TONES\Melodias TONES completo\XTONES.c> // buzzer=RB3
#include <D:\MARIO\- ELECTRONICA -\- PROYECTOS EN CCS TERMINADOS -\PROYECTOS CON TONES\Melodias TONES completo\XLCD.c> //RC0=E,RC1=RS,RC3=RW; data=RB4,RB5,RB6,RB7.
//------------------- INTRO SE HA TOMADO TODO EL VINO -----------------------
void MONA()
{
generate_tone(A_NOTE[1], 185.2);
generate_tone(C_NOTE[2], 185.2);
generate_tone(E_NOTE[2], 375);
generate_tone(A_NOTE[1], 185.2);
generate_tone(C_NOTE[2], 185.2);
generate_tone(E_NOTE[2], 375);
generate_tone(A_NOTE[1], 185.2);
generate_tone(C_NOTE[2], 185.2);
generate_tone(E_NOTE[2], 185.2);
generate_tone(D_NOTE[2], 185.2);
generate_tone(C_NOTE[2], 185.2);
generate_tone(B_NOTE[1], 185.2);
generate_tone(A_NOTE[1], 185.2);
generate_tone(G_NOTE[1], 185.2);
generate_tone(G_NOTE[1], 185.2);
generate_tone(B_NOTE[1], 185.2);
generate_tone(D_NOTE[2], 375);
generate_tone(G_NOTE[1], 185.2);
generate_tone(B_NOTE[1], 185.2);
generate_tone(D_NOTE[2], 375);
}
void F1() // FIN 1 MONA
{
generate_tone(G_NOTE[1], 185.2);
generate_tone(B_NOTE[1], 185.2);
generate_tone(D_NOTE[2], 185.2);
generate_tone(C_NOTE[2], 185.2);
generate_tone(D_NOTE[2], 375);
generate_tone(E_NOTE[2], 1000);
delay_ms(185);
}
void F2() // FIN 2 MONA
{
generate_tone(G_NOTE[1], 185.2);
generate_tone(B_NOTE[1], 185.2);
generate_tone(D_NOTE[2], 185.2);
generate_tone(C_NOTE[2], 185.2);
generate_tone(B_NOTE[1], 375);
generate_tone(A_NOTE[1], 990);
}
/////////////////////// FIN INTRO LA MONA /////////////////////////////
void main()
{
setup_oscillator (OSC_8MHZ|OSC_INTRC); // Lo "PRIMERO QUE HAGO" en el Main es configurar el oscilador, salvo la declaración de variables si hubiese.
lcd_init();
printf (lcd_putc, "\f SE HA TOMADO ");
printf (lcd_putc, "\n TODO EL VINO ");
while(true)
{
MONA();
F1();
MONA();
F2();
}
}