اطلاعیه

Collapse
No announcement yet.

سوال در مورد سورس یک برنامه

Collapse
این موضوع بسته شده است.
X
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    سوال در مورد سورس یک برنامه

    کسی از دوستان میآ‌تونه خط به خط این برنامه رو برام توضیح بده؟
    متاسفانه نه 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,
    }
    }

    #2
    پاسخ : سوال در مورد سورس یک برنامه

    این برنامه تعداد 5 نمونه از Adc با فاصله زمانی 500 میکروثانیه میخواند . سپس میانگین آنها را حساب کرده و توسط ارتباط سریال به کامپیوتر انتقال می دهد .
    خط اول که فایل هدر میکروکنترلر می باشد . خط دوم برای تنظیم دقت یا تعداد بیت های خروجی ماژول ADC می باشد که در اینجا adc ده بیتی انتخاب شده است . دستور fuse در خط بعدی نیز برای تنظیم فیوز بیت های میکروکنترلر می باشد . خط بعدی برای تنظیم فرکانس کریستال متصل شده به میکرو می باشد . دستور use rs232 نیز به منظور پیکربندی پورت سریال به کار گرفته می شود . دستورات setaup ای که بعد از حلقه main نوشته شده اند نیز برای تنظیمات و پیکربندی ماژول های سخت افزاری میکرو مورد استفاده قرار می گیرند . همچون ADC , COMPARATOR , PSP , TIMER ها و .... ./ دستور SET_ADC_CHANNEL نیز برای تنظیم کانال ورودی انالوگ می باشد . در حلقه FOR داخلی تعدا 5 نمونه از aDC خانده شده و مجموع انها محاسبه می شود (در متغیر VALUE) و بعد از محاسبه میانگین ، به کمک دستور PRINTF این اطلاعات توسط RS232 به کامپیوتر منتقل می شوند .

    دیدگاه


      #3
      پاسخ : سوال در مورد سورس یک برنامه

      کد:
       setup_adc_ports(AN0_AN1_AN3);
      یعنی 3 کانال از ADC استفاده شده؟

      کد:
      printf("Q%lu",value);
      Q مربوط به چیه؟ یا معنیش چیه؟

      دیدگاه


        #4
        پاسخ : سوال در مورد سورس یک برنامه

        بله 3 کانال از aDC انتخاب شده است
        Q مربوط به نرم افزار کامپیوتری می باشد (در توضیحات مقابل همسن دستور نوشته شده است) . احتمالا نرم افزار کامپیوتری از حرف Q برای شناسایی مقدار ها استفاده می کند .

        دیدگاه


          #5
          پاسخ : سوال در مورد سورس یک برنامه

          یعنی هر بار قبل از ارسال مقدار متغییر، کاراکتر Q فرستاده میشه؟
          کامپایلرش چیه؟ CCS?

          دیدگاه


            #6
            پاسخ : سوال در مورد سورس یک برنامه

            بله . حرف Q به همراه هر بار ارسال میانگین مقادیر ارسال می شود .
            کامپایلر CCS می باشد .

            دیدگاه


              #7
              پاسخ : سوال در مورد سورس یک برنامه

              پس معادل بسکامش میشه :
              print "Q"
              print value

              پس %lu مربوط به چیه؟

              دیدگاه


                #8
                پاسخ : سوال در مورد سورس یک برنامه

                بسکام رو خبر ندارم! :دییی
                در زبان C شما اگر خواسته باشید توسط دستور PRINTF مقدار یک متغیر را ارسال یا چاپ کنید ، با توجه به نوع متغیر (BYTE, FLOAT , CHAR و ...) باید کاراکتر فرمت وخصوص آن مدل را انخاب کنید و به همراه علامت % بنویسید (مثل D , U ,LU , LD , F ,C و ...)

                دیدگاه

                لطفا صبر کنید...
                X