// ****************************************************************************************************************************************************
// oscilador senoidal
//
// Data: 21/10/2008
// Autores: Aguivone
// Descrição: oscilador senoidal de 60hZ saida no pino RA2
//
// ****************************************************************************************************************************************************
#include <16F877A.h>
#FUSES NOWDT, XT, PUT, NOPROTECT, NOBROWNOUT, NOLVP, NOCPD
#use delay(clock=4M)
void senoide(void)
{
setup_vref(VREF_LOW | VREF_A2 | 1);//0,208
delay_us(160);
setup_vref(VREF_LOW | VREF_A2 | 2);//0,416
delay_us(155);
setup_vref(VREF_LOW | VREF_A2 | 3);//0,625
delay_us(157);
setup_vref(VREF_LOW | VREF_A2 | 4);//0,833
delay_us(163);
setup_vref(VREF_LOW | VREF_A2 | 5);//1,044
delay_us(161);
setup_vref(VREF_LOW | VREF_A2 | 6);//1,25
delay_us(154);
setup_vref(VREF_LOW | VREF_A2 | 7);//1,45
delay_us(97);
setup_vref(VREF_HIGH | VREF_A2 | 2);//1,56
delay_us(80);
setup_vref(VREF_LOW | VREF_A2 | 8);//1,667
delay_us(44);
setup_vref(VREF_HIGH | VREF_A2 | 3);//1,718
delay_us(133);
setup_vref(VREF_LOW | VREF_A2 | 9);//1,87
delay_us(142);
setup_vref(VREF_HIGH | VREF_A2 | 5);//2,03
delay_us(44);
setup_vref(VREF_LOW | VREF_A2 | 10);//2,08
delay_us(60);
setup_vref(VREF_HIGH | VREF_A2 | 6);//2,18
delay_us(135);
setup_vref(VREF_LOW | VREF_A2 | 11);//2,29
delay_us(45);
setup_vref(VREF_HIGH | VREF_A2 | 7);//2,34
delay_us(168);
setup_vref(VREF_LOW | VREF_A2 | 12);//2,5
delay_us(159);
setup_vref(VREF_HIGH | VREF_A2 | 9);//2,656
delay_us(63);
setup_vref(VREF_LOW | VREF_A2 | 13);//2,708
delay_us(110);
setup_vref(VREF_HIGH | VREF_A2 | 10);//2,81
delay_us(130);
setup_vref(VREF_LOW | VREF_A2 | 14);//2,916
delay_us(62);
setup_vref(VREF_HIGH | VREF_A2 | 11);//2,96
delay_us(230);
setup_vref(VREF_LOW | VREF_A2 | 15);//3,125
delay_us(258);
setup_vref(VREF_HIGH | VREF_A2 | 13);//3,28
delay_us(328);
setup_vref(VREF_HIGH | VREF_A2 | 14);//3,437
delay_us(771);
setup_vref(VREF_HIGH | VREF_A2 | 15);//3,59
delay_us(35);
//até aqui é 90°///////////////////////////////////////////////////////////////
setup_vref(VREF_HIGH | VREF_A2 | 14);
delay_us(771);
setup_vref(VREF_HIGH | VREF_A2 | 13);
delay_us(328);
setup_vref(VREF_low | VREF_A2 | 15);
delay_us(258);
setup_vref(VREF_HIGH | VREF_A2 | 11);
delay_us(230);
setup_vref(VREF_LOW | VREF_A2 | 14);
delay_us(62);
setup_vref(VREF_HIGH | VREF_A2 | 10);
delay_us(130);
setup_vref(VREF_LOW | VREF_A2 | 13);
delay_us(110);
setup_vref(VREF_HIGH | VREF_A2 | 9);
delay_us(63);
setup_vref(VREF_LOW | VREF_A2 | 12);
delay_us(159);
setup_vref(VREF_HIGH | VREF_A2 | 7);
delay_us(168);
setup_vref(VREF_LOW | VREF_A2 | 11);
delay_us(45);
setup_vref(VREF_HIGH | VREF_A2 |6);
delay_us(135);
setup_vref(VREF_LOW | VREF_A2 | 10);
delay_us(60);
setup_vref(VREF_HIGH | VREF_A2 |5);
delay_us(44);
setup_vref(VREF_LOW | VREF_A2 | 9);
delay_us(142);
setup_vref(VREF_HIGH | VREF_A2 | 3);
delay_us(133);
setup_vref(VREF_LOW | VREF_A2 | 8);
delay_us(44);
setup_vref(VREF_HIGH | VREF_A2 |2);
delay_us(80);
setup_vref(VREF_LOW | VREF_A2 | 7);
delay_us(97);
setup_vref(VREF_LOW | VREF_A2 | 6);
delay_us(154);
setup_vref(VREF_LOW | VREF_A2 | 5);
delay_us(161);
setup_vref(VREF_LOW | VREF_A2 | 4);
delay_us(163);
setup_vref(VREF_LOW | VREF_A2 | 3);
delay_us(157);
setup_vref(VREF_LOW | VREF_A2 | 2);
delay_us(155);
setup_vref(VREF_LOW | VREF_A2 | 1);
delay_us(150);
}
void main()
{
Set_tris_b(0);
Set_tris_a(0);
setup_comparator(NC_NC_NC_NC);//desabilita os comparadores
// se vref no modo hight=vdd/4+vdd*valor/32
// se vref no modo low=vdd*valor/24
// se vref no modo false desligado
//o valor 10 é o valor usado na formula
//sendo que este pode variar ate 15
for(;;)
{
senoide();
}
}
Engenheiro eletricista - Desenvolvedor de hardware. Protótipos e projetos. Desenvolvimento de software de interface.(aguivone@gmail.com)
quarta-feira, 8 de setembro de 2010
Assinar:
Postar comentários
(
Atom
)
Muito bom, só que o vp está desiqual, mas mesmo assim muito legal.
ResponderExcluirmarcos vc tem um projeto com pic para inversor
Excluironda senoidal .
amigo me envie o arquivo hex desse projeto vox.edu@hotmail.com
ResponderExcluir
ExcluirOlá! este arquivo foi gerado para o compilador da CCS já tem um bom tempo que não uso este compilador mas se eu tiver um tempo futuramente faço um código similar para o XC8.
amigo preciso que saia a senoide de 60htz em dois pinos do ci tem como fazer me envie o arquivo e em hex . eduardo vox.edu@hotmail.com
ResponderExcluirOlá tudo bem! tem como gerar mais de 1 saída se vc usar amplificadores operacionais, dai vc pode inclusive gerar ondas invertida em 180° se quiser,pode ainda usar transistores para isso também.
Excluir