#include <16f877a.h>
#use delay(clock=2000000)
//#fuses hs
#include <lcd.c>
#byte portc=7
#byte portb=6
#use fast_io(b)
int val1,val2,val3,setp,val_med,xn;
int a0,a1,a2,xn_1,xn_2,yn,yn_1,kp,k1,kd,ts;
main(){
setup_adc_ports(all_analog);
setup_adc(adc_clock_div_32);
setup_ccp1(ccp_pwm);
setup_ccp2(ccp_pwm);
setup_timer_2(t2_div_by_1,255,1);
lcd_init();
//while(true){
while((input(pin_b0))){
set_adc_channel(2);
val1=read_adc();
delay_us(10);
set_adc_channel(3);
val2=read_adc();
delay_us(10);
set_adc_channel(4);
val3=read_adc();
delay_us(10);
kp=val1;
k1=val2;
kd=val3;
ts=0,01;
set_pwm1_duty(0);
lcd_gotoxy(1,1);
printf(lcd_putc,"p:%1.1u,i:%1.1u,
d:%1.1u",kp,k1,kd
);}lcd_putc("f"
;
while(true){
while((!input(pin_b0))){
set_adc_channel(0);
setp=read_adc();
delay_us(1);
set_adc_channel(0);
setp=read_adc();
kp=10;
ts=4.16;
xn=0.62;
while(true){
set_adc_channel(1);
val_med=read_adc();
lcd_gotoxy(1,1);
printf(lcd_putc,"v:%1.1u,
s%1.1u,kp:%u",val_med,setp,kp);
if(val_med<setp){
kp=kp++;
yn=kp*(1+1/ts+xn);
set_pwm1_duty(yn);}
if(val_med>=setp){
kp=kp-1;
yn=kp*(1+1/ts+xn);
set_pwm1_duty(yn);
}
}
}
}
}
ESTE ES EL CODIGO QUE ME DIO EL PROFE DE LA U NO SE SI ESTA BIEN ES SOLO PARA EL CONTROL PROPORCIONAL LO REVISAMOS ENTRE TODOS