Hola bueno me han pasado la sig programacion y no le entiendo mucho si hubiera alguien que me la pudiera explicar linea por linea se los agradeceria...
#include<16F883.h>
#fuses INTRC_IO,NOMCLR,NOWDT,NOPROTECT,PUT,NOLVP,NOBROWNOUT
#use delay(clock=8000000)
#use fast_io(A)
#use fast_io(B)
#use fast_io(C)
#use fast_io(E)
#byte PUERTO_A=0x05
#byte PUERTO_B=0x06
#byte PUERTO_C=0x07
#byte PUERTO_E=0x09
#bit RA0=0x05.0
#bit RA1=0x05.1
#bit RA2=0x05.2
#bit RA3=0x05.3
#bit RA4=0x05.4
#bit RA5=0x05.5
#bit RA6=0x05.6
#bit RA7=0x05.7
#bit RBO=0x06.0
#bit RB1=0x06.1
#bit RB2=0x06.2
#bit RB3=0x06.3
#bit RB4=0x06.4
#bit RB5=0x06.5
#bit RB6=0x06.6
#bit RB7=0x06.7
#bit RC0=0x07.0
#bit RC1=0x07.1
#bit RC2=0x07.2
#bit RC3=0x07.3
#bit RC4=0x07.4
#bit RC5=0x07.5
#bit RC6=0x07.6
#bit RC7=0x07.7
int16 Velocidad=0;
int16 i=0;
int16 Tiempo=0;
int Bandera_1=0;
int Bandera_2=0;
int En_stop=1;
void inicializar(void)
{
setup_adc(ADC_CLOCK_INTERNAL);
setup_port_a(sAN0);
set_adc_channel(0);
set_tris_a(0b11111111);
set_tris_b(0b00000000);
set_tris_c(0b11100011);
PUERTO_B=0;
RC3=0;
RC4=0;
setup_ccp1(CCP_PWM);
setup_timer_2(T2_DIV_BY_4,255,1);
set_pwm1_duty(0);
}
void Rampa(void)
{
Velocidad=read_adc();
if(Velocidad>0)
{
Tiempo=3000/Velocidad;
}
for(i=0;i<Velocidad;i++)
{
set_pwm1_duty(i<<2);
PUERTO_B=i;
delay_ms(Tiempo);
}
}
void Stop(void)
{
set_pwm1_duty(0);
RC3=0;
RC4=0;
En_Stop=1;
PUERTO_B=0;
}
//Rutina Principal
void main (void)
{
inicializar();
while (TRUE)
{
if ((RC0==1)&&(Bandera_1==0))
{
Bandera_1=1;
if((En_Stop==11)||(En_Stop==1))
{
En_Stop=10;
RC3=1;
RC4=0;
Rampa();
}
else
{
Stop();
}
}
else
{
if(RC0==0)
{
Bandera_1=0;
delay_ms(100);
}
}
if ((RC1==1)&&(Bandera_2==0))
{
Bandera_2=1;
if((En_Stop==10)||(En_Stop==1))
{
En_Stop=11;
RC3=0;
RC4=1;
Rampa();
}
else
{
Stop();
}
}
else
{
if(RC1==0)
{
Bandera_2=0;
delay_ms(100);
}
}
}//Fin del While
}//Fin del Mai
#include<16F883.h>
#fuses INTRC_IO,NOMCLR,NOWDT,NOPROTECT,PUT,NOLVP,NOBROWNOUT
#use delay(clock=8000000)
#use fast_io(A)
#use fast_io(B)
#use fast_io(C)
#use fast_io(E)
#byte PUERTO_A=0x05
#byte PUERTO_B=0x06
#byte PUERTO_C=0x07
#byte PUERTO_E=0x09
#bit RA0=0x05.0
#bit RA1=0x05.1
#bit RA2=0x05.2
#bit RA3=0x05.3
#bit RA4=0x05.4
#bit RA5=0x05.5
#bit RA6=0x05.6
#bit RA7=0x05.7
#bit RBO=0x06.0
#bit RB1=0x06.1
#bit RB2=0x06.2
#bit RB3=0x06.3
#bit RB4=0x06.4
#bit RB5=0x06.5
#bit RB6=0x06.6
#bit RB7=0x06.7
#bit RC0=0x07.0
#bit RC1=0x07.1
#bit RC2=0x07.2
#bit RC3=0x07.3
#bit RC4=0x07.4
#bit RC5=0x07.5
#bit RC6=0x07.6
#bit RC7=0x07.7
int16 Velocidad=0;
int16 i=0;
int16 Tiempo=0;
int Bandera_1=0;
int Bandera_2=0;
int En_stop=1;
void inicializar(void)
{
setup_adc(ADC_CLOCK_INTERNAL);
setup_port_a(sAN0);
set_adc_channel(0);
set_tris_a(0b11111111);
set_tris_b(0b00000000);
set_tris_c(0b11100011);
PUERTO_B=0;
RC3=0;
RC4=0;
setup_ccp1(CCP_PWM);
setup_timer_2(T2_DIV_BY_4,255,1);
set_pwm1_duty(0);
}
void Rampa(void)
{
Velocidad=read_adc();
if(Velocidad>0)
{
Tiempo=3000/Velocidad;
}
for(i=0;i<Velocidad;i++)
{
set_pwm1_duty(i<<2);
PUERTO_B=i;
delay_ms(Tiempo);
}
}
void Stop(void)
{
set_pwm1_duty(0);
RC3=0;
RC4=0;
En_Stop=1;
PUERTO_B=0;
}
//Rutina Principal
void main (void)
{
inicializar();
while (TRUE)
{
if ((RC0==1)&&(Bandera_1==0))
{
Bandera_1=1;
if((En_Stop==11)||(En_Stop==1))
{
En_Stop=10;
RC3=1;
RC4=0;
Rampa();
}
else
{
Stop();
}
}
else
{
if(RC0==0)
{
Bandera_1=0;
delay_ms(100);
}
}
if ((RC1==1)&&(Bandera_2==0))
{
Bandera_2=1;
if((En_Stop==10)||(En_Stop==1))
{
En_Stop=11;
RC3=0;
RC4=1;
Rampa();
}
else
{
Stop();
}
}
else
{
if(RC1==0)
{
Bandera_2=0;
delay_ms(100);
}
}
}//Fin del While
}//Fin del Mai