کسی از دوستان میآتونه خط به خط این برنامه رو برام توضیح بده؟
متاسفانه نه C بلد هستم و نه تا به حال با PIC کار کردم
#include <16F877A.h>
#device adc=10
#fuses NOWDT,HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=10000000) // PIC's external Freq is 10MHz, and internal freq is
// 2.5 MHz, that means every instruction takes 400nS
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8) //Serial Configuraion
void main()
{
unsigned int16 value;
int i;
setup_adc_ports(AN0_AN1_AN3); // set analog pins
setup_adc(ADC_CLOCK_INTERNAL);
setup_psp(PSP_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
disable_interrupts(GLOBAL);
//Set channel 0 for read value
set_adc_channel(0);
for(;
{ // read 5 times analog value and
for(i=0;i<5;i++)
{
value=value+read_adc(); //add them to get mean of 5 value
delay_us(500); //wait 500 uS to wait ADC get prepare
}
value=value/5;
value=value+1000; //Divide value 5 for get mean and add 1000 for 4 digit(computer software substracts 1000 again)
printf("Q%lu",value); // Q is header of data for computer software
value=0; // Reset value for new reading
delay_ms(20); //set sample rate,
}
}
متاسفانه نه C بلد هستم و نه تا به حال با PIC کار کردم
#include <16F877A.h>
#device adc=10
#fuses NOWDT,HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=10000000) // PIC's external Freq is 10MHz, and internal freq is
// 2.5 MHz, that means every instruction takes 400nS
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8) //Serial Configuraion
void main()
{
unsigned int16 value;
int i;
setup_adc_ports(AN0_AN1_AN3); // set analog pins
setup_adc(ADC_CLOCK_INTERNAL);
setup_psp(PSP_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
disable_interrupts(GLOBAL);
//Set channel 0 for read value
set_adc_channel(0);
for(;

{ // read 5 times analog value and
for(i=0;i<5;i++)
{
value=value+read_adc(); //add them to get mean of 5 value
delay_us(500); //wait 500 uS to wait ADC get prepare
}
value=value/5;
value=value+1000; //Divide value 5 for get mean and add 1000 for 4 digit(computer software substracts 1000 again)
printf("Q%lu",value); // Q is header of data for computer software
value=0; // Reset value for new reading
delay_ms(20); //set sample rate,
}
}
دیدگاه