1. Yöntem Opampla halledebilirsin zaten 16f877 gerilim karşılaştırıcı modül var bilgi içinCCs C ile pic programlama yazar: Serdar ÇİÇEK(Ccs için mükemmel tavsiye ederim)
2.Yöntem pic'in adc modülüyle ama önce analoga gelebilecek max. gerilimi pot. ile 5V a düşür RA3 bacağına gireceğin ref. gerilimide aynı yöntemle ayarlayabilirsin aşağıda sana CCS kodlarını veriyorum kendine göre İf döngülerini ayarla ben bu programı kendim için yazdığım farklı bi devreden alıyorum kendine uyarla
#include <16f877.h>
#device ADC=10
#fuses xt,nowdt,noprotect,nobrownout,nolvp,noput,nowrt,nodebug,nocpd
#use delay(clock=12000000)
#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)
#use fast_io(e)
const int digit[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x6f};
int32 bilgi=0,
#int_ad
void adc_kesme ()
{
if(bilgi>"değerin")
{
}
if(bilgi<"değerin")
{
void main()
{
setup_psp(psp_disabled);
setup_spi(spi_ss_disabled);
setup_timer_1(t1_disabled);
setup_timer_2(t2_disabled,0,1);
setup_CCP1(CcP_OFF);
setup_ccp2(ccp_off);
set_tris_a(0x03);
set_tris_b(0x00);
set_tris_c(0x00);
set_tris_d(0x00);
set_tris_e(0x00);
output_a(0x00);
output_b(0x00);
output_c(0x00);
output_d(0x00);
output_e(0x00);
setup_adc(adc_clock_div_2);
setup_adc_ports(an0_an1_vss_vref);
enable_interrupts(int_ad);
enable_interrupts(global);
output_high(pin_d0);
while(1)
{
set_adc_channel(0);
delay_us(20);
bilgi=read_adc();
}
}