Moderadores: andre_luis, 51, guest2003, Renie
fabim escreveu:de uma olhada no site do mikroe, exemplo do mikrobasic.
o cara fez esse sistema para 8 servomotores.
acho que vai dar certinho para o que você quer, o exemplo é para 18f, mais fica facil portar para 16f "se for o caso".
Fabim
rebelk escreveu:vê se isso da para vc ?
// progama pwm po soft
// para alterar a frequencia do pwm é só alterar o cristal
//#include <16f84a.h>
#include <16f876a.h>
//#device adc=10 // Configura o compilador para conversor A/D de 10 bits
#use delay(clock=10000000)
#fuses XT,NOWDT,PUT,NOPROTECT
#define pwm_1 pin_b7
#define pwm_2 pin_b6
#define pwm_3 pin_b5
#define pwm_4 pin_b4
#define pwm_5 pin_b3
#define pwm_6 pin_b2
#define pwm_7 pin_b1
#define pwm_8 pin_b0
int8 set_pwm_1=10;
int8 set_pwm_2=20;
int8 set_pwm_3=30;
int8 set_pwm_4=40;
int8 set_pwm_5=50;
int8 set_pwm_6=60;
int8 set_pwm_7=70;
int8 set_pwm_8=70;
int8 serra=0;
//**********************************************************************
//**********************************************************************
#int_timer0
void trata_t0 ()
{
if(serra < set_pwm_1 ){output_high(pwm_1);}
else{ output_low(pwm_1);}
//////////////////////////////////
if(serra < set_pwm_2 ){output_high(pwm_2); }
else { output_low(pwm_2);}
////////////////////////////////////
if(serra < set_pwm_3 ){output_high(pwm_3);}
else{ output_low(pwm_3);}
//////////////////////////////////
if(serra < set_pwm_4 ){output_high(pwm_4); }
else { output_low(pwm_4);}
////////////////////////////////////
if(serra < set_pwm_5 ){output_high(pwm_5);}
else{ output_low(pwm_5);}
//////////////////////////////////
if(serra < set_pwm_6 ){output_high(pwm_6); }
else { output_low(pwm_6);}
////////////////////////////////////
if(serra < set_pwm_7 ){output_high(pwm_7);}
else{ output_low(pwm_7);}
//////////////////////////////////
if(serra < set_pwm_8 ){output_high(pwm_8); }
else { output_low(pwm_8);}
serra++;
if(serra >= 100)
{
serra=0;
}
set_timer0(190); // recarrega o timer 0 + - 100 HERTS
}
//**********************************************************************
//**********************************************************************
main()
{
set_timer0(190); // carrega o timer 0 com 155
setup_timer_0 ( RTCC_INTERNAL );// configura o timer 0 para clock interno
enable_interrupts ( global | int_timer0 ); // habilita interrupções
// setup_ADC_ports (RA0_RA1_RA3_ANALOG);
// setup_adc(ADC_CLOCK_INTERNAL );
while (true)
{
set_pwm_1++;
if( set_pwm_1 > 100 ){ set_pwm_1 = 0; }
set_pwm_2++;
if( set_pwm_2 > 100 ){ set_pwm_2 = 0; }
set_pwm_3++;
if( set_pwm_3 > 100 ){ set_pwm_3 = 0; }
set_pwm_4++;
if( set_pwm_4 > 100 ){ set_pwm_4 = 0; }
set_pwm_5++;
if( set_pwm_5 > 100 ){ set_pwm_5 = 0; }
set_pwm_6++;
if( set_pwm_6 > 100 ){ set_pwm_6 = 0; }
set_pwm_7++;
if( set_pwm_7 > 100 ){ set_pwm_7 = 0; }
set_pwm_8++;
if( set_pwm_8 > 100 ){ set_pwm_8 = 0; }
delay_ms(50);
}
}
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante