#include <16f877.h>
#device ADC=10
#fuses XT,NOWDT,NOPROTECT,NOBROWNOUT,NOLVP,NOPUT,NOWRT,NODEBUG,NOCPD
#use delay (clock=4000000)
#use fast_io(a)
#use fast_io(c)
#define use_portb_lcd TRUE
#include <lcd.c>
#byte ADRESH = 0x1E
#byte ADRESL = 0x9E
#byte ADCON0 = 0x1F
#byte ADCON1 = 0x9F
unsigned long int digdata;
int pwm=0;
int duty=0;
#int_timer0
void kesme()
{
set_timer0(227);
if (pwm==0) output_high(pin_c3);
if (pwm>=duty) output_low(pin_c3);
pwm++;
output_high(pin_c2);
if (pwm>=140) pwm=0;
}
#int_AD
void ADC_kesme()
{
output_high(pin_c1);
}
//****MAIN PROGRAM******
void main()
{
setup_psp(PSP_DISABLED);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_CCP1(CCP_OFF);
setup_CCP2(CCP_OFF);
set_tris_a(0b11111111);
set_tris_c(0b00000000);
ADCON0=0b00001101;
ADCON1=0b00000000;
setup_adc(ADC_CLOCK_INTERNAL);
setup_adc_ports(ALL_ANALOG);
setup_timer_0(RTCC_INTERNAL | RTCC_DIV_4);
set_timer0(227);
enable_interrupts(int_timer0);
enable_interrupts(int_AD);
enable_interrupts(global);
output_c(0b00000000);
lcd_init();
while(1)
{
set_adc_channel(1);
delay_us(20);
digdata=read_adc();
if ((digdata>=0) && (digdata<=93)) duty=5;
if ((digdata>=94) && (digdata<=187)) duty=6;
if ((digdata>=188) && (digdata<=281)) duty=7;
if ((digdata>=282) && (digdata<=375)) duty=8;
if ((digdata>=376) && (digdata<=469)) duty=9;
if ((digdata>=470) && (digdata<=563)) duty=10;
if ((digdata>=564) && (digdata<=657)) duty=11;
if ((digdata>=658) && (digdata<=752)) duty=12;
if ((digdata>=753) && (digdata<=846)) duty=13;
if ((digdata>=847) && (digdata<=940)) duty=14;
if ((digdata>=941) && (digdata<=1023)) duty=15;
printf(lcd_putc,"\fDigData=%lu",digdata);
delay_ms(50);
}
}