اطلاعیه

Collapse
No announcement yet.

نظر و کمک درباره ی برنامه نویسی با زبان إ¾c

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    نظر و کمک درباره ی برنامه نویسی با زبان إ¾c

    سلام دوستان
    من یه مشکلی دارم....من تا الان با زبان c کار نکردم و نمیدونم این برنامه های این زیر یعنی چی
    اگه کسی لطف کنه یه توضیح کامل و خط به خط بده ممنون میشم
    #include <mega8.h>
    #include <delay.h>
    #include <math.h>
    // Alphanumeric LCD functions
    #include <alcd.h>
    #include <stdio.h>
    #define ADC_VREF_TYPE 0xC0
    //---------------Defines
    #define green PORTC.2
    #define blue PORTC.3
    #define red PORTC.4

    //---------------Functions

    // Read the AD conversion result
    unsigned int read_adc(unsigned char adc_input)
    {
    unsigned int sum=0,i;
    sum=0;
    for(i=0;i<10;i++)
    {
    ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
    delay_us(10);
    ADCSRA|=0x40;
    while ((ADCSRA & 0x10)==0);
    ADCSRA|=0x10;
    sum+=ADCW;
    }
    return sum/10;
    }


    void main(void)
    {
    DDRC =0b011100;//tanzime port baraye khorooji shodan baraye ledha
    // USART initialization
    // Communication Parameters: 8 Data, 1 Stop, No Parity
    // USART Receiver: Off
    // USART Transmitter: On
    // USART Mode: Asynchronous
    // USART Baud Rate: 9600
    UCSRA=0x00;
    UCSRB=0x08;
    UCSRC=0x86;
    UBRRH=0x00;
    UBRRL=0x33;
    // ADC initialization
    // ADC Clock frequency: 1000.000 kHz
    // ADC Voltage Reference: Int., cap. on AREF
    ADMUX=ADC_VREF_TYPE & 0xff;
    ADCSRA=0x83;

    while (1)
    {
    int vGreen,vBlue,vRed,M;

    red=1;green=0;blue=0;
    delay_ms(2);
    vRed =read_adc(1)*1.000000;
    /////
    red=0;green=1;blue=0;
    delay_ms(2);
    vGreen=read_adc(1)*1.02;
    /////
    red=0;green=0;blue=1;
    delay_ms(2);
    vBlue =read_adc(1)*1.128272;
    /////
    printf("R%3d G%3d B%3d ",vRed,vGreen,vBlue);

    M=max(vRed,max(vGreen,vBlue));
    lcd_gotoxy(0,1);
    if(M==vRed )putsf("Red \n"
    if(M==vGreen)putsf("Green \n"
    if(M==vBlue )putsf("Blue \n"


    }
    }

    و این یکی هم هست

    #include <mega8.h>
    #include <delay.h>
    #include <math.h>
    // Alphanumeric LCD functions
    #include <alcd.h>
    #include <stdio.h>
    //---------------Variables
    char str[32];
    //---------------Func
    void main(void)
    {
    // USART initialization
    // Communication Parameters: 8 Data, 1 Stop, No Parity
    // USART Receiver: On
    // USART Transmitter: Off
    // USART Mode: Asynchronous
    // USART Baud Rate: 9600
    UCSRA=0x00;
    UCSRB=0x10;
    UCSRC=0x86;
    UBRRH=0x00;
    UBRRL=0x33;
    lcd_init(16);

    while (1)
    {
    lcd_gotoxy(0,0);
    gets(str,32);
    lcd_puts(str);

    }
    }


    #2
    پاسخ : نظر و کمک درباره ی برنامه نویسی با زبان إ¾c

    دوست عزیز اگه تا حالا با زبان c کار نکردین روش جالبی برای یادگیری اون اتخاذ نکردین تحلیل برنامه های دیگران میتونه مفید باشه اما زمانی که به دستورات و الگوریتم c تسلط داشته باشین.

    اگه بخوام خط به خط برنامه رو توضیح بدم باید یه کتاب متلب بنویسم اما بااین حال یه کلیتی از کار برنامه رو توضیح میدم.

    اگه امکام داره از برنامه عکس بگیر و بذار اینجا چون اون قسمت آخر درست مشخص نیست.

    دو برنامه هست برای دو میکرو که یکی از میکروها فرستنده و دیگری گیرنده.

    در فرستنده از واحد ADC استفاده شده که بعد از هر بار فراخوانی زیر تابع مقدار adc ده بار خونده میشه و میانگین اون گرفته میشه برای مقدار نهایی خونده شده.

    در هر بار اجرا مقدار در عددی ضرب میشه و در متغییرهای جداگانه ذخیره میشه این مقادیر به طور مستقیم با دستور
    printf از طریق پورت سریال میکرو برای گیرنده ارسال میشه. بعد اون توسط تابع ریاضی max ماکزیمم این سه متغییر گرفته میشه و با شرط در lcd نمایش داده میشه.

    در گیرنده مقدار این سه متغییر گرفته شده بر روی lcd نمایش داده میشه.



    [glow=red,2,300]گرد هم آمدن شروع است.با هم ماندن پيشرفت است.با هم کار کردن موفقيت است.[/glow]
    [img width=98 height=100]http://s3.picofile.com/file/7407857311/icon3.png[/img]

    دیدگاه


      #3
      پاسخ : نظر و کمک درباره ی برنامه نویسی با زبان إ¾c

      مرسی....ولی من باید به استاد توضیح بدم....برا همین خط به خط میخوام....
      عکسشم که باید تو پروتئوس طراحی کنم رو بلد نیستم :cry2:

      دیدگاه

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