#include <16f877A.h> // PIC utilizado
#fuses XT,NOWDT,NOPROTECT,NOLVP // Configuramos los fuses
#use delay (clock=4000000) // Oscilador a 4Mhz
#use fast_io(b) // Optimizamos E/S del PORTB
float const data[65]={127,139.44,151.77,163.86,175.6,186.86,197.55,207.56,216.8,225.17,232.59,239,244.33,248.53,
251.55,253.38,254,253.38,251.55,248.53,244.33,239,232.59,225.17,216.8,207.56,197.55,186.86,
175.6,163.86,151.77,139.44,127,114.55,102.22,90.13,78.399,67.13,56.44,46.43,37.19,28.82,21.4,
14.99,9.66,5.46,2.44,0.61,0,0.61,2.44,5.46,9.66,14.99,21.4,28.82,37.19,46.43,56.44,67.13,78.399,
90.13,102.22,114.55,127};
int i=0;
#int_TIMER0
void TIMER0_isr(void)
{
set_timer0(126); // desbordando el timer cada 260 Useg
output_bit(PIN_B0,data[i]);
if(i>64){i=0;};i++;
}
void main(void)
{
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2|RTCC_8_bit);
set_timer0(126); // desbordando el timer cada 260 Useg
enable_interrupts(INT_TIMER0); // Habilita la interrupcion
enable_interrupts(GLOBAL);
set_tris_b (0x00); // Puerto b como salidas
output_b(0x00); // Limpiamos el puerto b
while(true);
{
}
}