Sei sulla pagina 1di 1

#include <18F4550.

h>
#device adc=8
#fuses HSPLL,PLL5,USBDIV,VREGEN,CPUDIV1,PUT,MCLR,WRTB,NOWDT,NOPROTECT,NOPBADEN
#use DELAY(clock=48000000)
#include <bootloader.h>
#byte portb = 0x0F81
#byte porta = 0x0F80
void main(void)
{
int8 adato;
float rdato, setp, error;
float Ti, esum;
set_tris_a(0xFF);
set_tris_b(0x00);
setup_adc(ADC_CLOCK_DIV_64);
setup_adc_ports(AN0_TO_AN1);
set_adc_channel(1);
setp = 1.0;
esum = 0;
Ti = 0.1857;
while (TRUE)
{
if(!bit_test(porta.2))
{
delay_us(1000);
adato = read_adc();
rdato = ((float)adato)/51.0;
error = setp-rdato;
esum = esum + ((0.001*error)/Ti);
portb = (int8)(51.0*esum);
}
else
{
esum = 0;
portb = 0;
}
}
}

Potrebbero piacerti anche