اطلاعیه

Collapse
No announcement yet.

تحلیل کد C در AVR

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

    تحلیل کد C در AVR

    سلام به همه دوستان عزیزم تصویر:

    یه خسته نباشید هم به مدیران سایت عرض میکنم تصویر:

    یک کد به زبان C دارم که برای میکرو AVR نوشته شده ولی چون من تاحالا با زبان C برای سخت افزار کد ننوشتم نمیدونم چطور کار میکنه تصویر:

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

    ممنون از کمکتون



    #include <mega16.h>
    #include <delay.h>
    #include <lcd.h>
    #include <stdlib.h>
    #include <math.h>

    #asm
    .equ __lcd_port=0x18
    #endasm
    //#############################################
    int key(void);
    float _Main(void);
    void Mohandes(void);
    void Mohasebe(void);
    void Alamat(int,int);
    float Emoji(int);
    //#############################################
    float a = 0 , b = 0 , c = 0 , q , t;
    int i ;
    char y=0 , lcd[25] , z ;
    //#############################################
    void main(void){

    DDRB=0x0F;
    DDRC=0x07;
    DDRD=0x0F;

    lcd_init(16);
    while (1){
    _Main();
    }
    }
    //################################################## ###########
    float _Main(void){
    int Loop = 1 ;
    y = key();
    if( y == 15 ){a = 0 ;b = 0 ;c = 0 ;lcd_clear();return 0 ;}
    if( y < 10 ){
    a = (a*10)+y ;
    itoa(y , lcd);
    lcd_puts(lcd);
    delay_ms(50);
    }



    if( y > 9 && y < 16 ){
    if( y == 15 ){a = 0 ;b = 0 ;c = 0 ;lcd_clear();return 0 ;}
    z = y ;
    Alamat(y,1);
    while(Loop){
    y = key();
    if( y == 15 ){a = 0 ;b = 0 ;c = 0 ;lcd_clear();return 0 ;}
    if( y < 10 ){
    b = (b*10)+y ;
    itoa(y , lcd);
    lcd_puts(lcd);
    delay_ms(50);
    }else if(y == 14){
    lcd_putchar('='
    Mohasebe();
    y = 0 ;
    Loop = 0 ;
    }
    }
    }
    if( y > 15 ){
    lcd_clear();
    a= 0 ; b = 0 ; c = 0;
    Alamat(y , 2);
    z = y ;
    Loop = 1 ;
    while(Loop){
    y = key();
    if( y == 15 ){a = 0 ;b = 0 ;c = 0 ;lcd_clear();return 0 ;}
    if(y < 10){
    a = (a*10) + y ;
    itoa(y , lcd);
    lcd_puts(lcd);
    delay_ms(50);
    }else if ( y == 14){
    lcd_putchar('='
    Mohandes();
    }
    Loop = 1 ;
    }
    }
    return 0;
    }
    //################################################## ########
    void Mohasebe(void){
    if(z == 10)c = a / b ;
    if(z == 11)c = a * b ;
    if(z == 12)c = a - b ;
    if(z == 13)c = a + b ;
    ftoa(c , 3 , lcd);
    lcd_puts(lcd);
    delay_ms(100);
    }
    //################################################## #######
    float Emoji(int rr){
    q=1;
    for(i=0;i<rr;i++)q = q * 2.71728 ;
    return q;
    }
    //################################################## #######
    void Mohandes(void){
    t = (3.1415926535897932384626433832795/180)*a ;
    if(z == 16)c = sin(t) ;
    if(z == 17)c = cos(t) ;
    if(z == 18)c = tan(t) ;
    if(z == 19)c = 1/tan(t) ;
    if(z == 20)c = asin(t) ;
    if(z == 21)c = acos(t) ;
    if(z == 22)c = log(a) ;
    if(z == 23)c = sqrt(a) ;
    if(z == 24)c = Emoji(a) ;
    ftoa(c , 3 , lcd);
    lcd_puts(lcd);
    delay_ms(100);
    }
    //################################################## #######
    void Alamat(int Moji,int Halat){
    if(Halat == 1){
    if(Moji == 10)lcd_putchar('/&#039 ;
    if(Moji == 11)lcd_putchar('*&#039 ;
    if(Moji == 12)lcd_putchar('-&#039 ;
    if(Moji == 13)lcd_putchar('+&#039 ;
    delay_ms(100);
    }
    if(Halat == 2){
    if(Moji == 16)lcd_putsf("Sin &quot ;
    if(Moji == 17)lcd_putsf("Cos &quot ;
    if(Moji == 18)lcd_putsf("Tan &quot ;
    if(Moji == 19)lcd_putsf("Cot &quot ;
    if(Moji == 20)lcd_putsf("aSin&quot ;
    if(Moji == 21)lcd_putsf("aCos&quot ;
    if(Moji == 22)lcd_putsf("Log &quot ;
    if(Moji == 23)lcd_putsf("Sqrt &quot ;
    if(Moji == 24)lcd_putsf("exp &quot ;
    delay_ms(100);

    }
    }
    //################################################## #######
    int key(void){
    char KEY = 1 ;
    while(KEY){

    PORTD.0 = 1 ;
    PORTD.1 = 0 ;
    PORTD.2 = 0 ;
    PORTD.3 = 0 ;
    if(PIND.4 == 1){return 7 ; KEY = 0;delay_ms(50);}
    if(PIND.5 == 1){return 8 ; KEY = 0;delay_ms(50);}
    if(PIND.6 == 1){return 9 ; KEY = 0;delay_ms(50);}
    if(PIND.7 == 1){return 10; KEY = 0;delay_ms(50);}
    //==========================================
    PORTD.0 = 0 ;
    PORTD.1 = 1 ;
    PORTD.2 = 0 ;
    PORTD.3 = 0 ;
    if(PIND.4 == 1){return 4 ; KEY = 0;}
    if(PIND.5 == 1){return 5 ; KEY = 0;}
    if(PIND.6 == 1){return 6 ; KEY = 0;}
    if(PIND.7 == 1){return 11; KEY = 0;}
    //==========================================
    PORTD.0 = 0 ;
    PORTD.1 = 0 ;
    PORTD.2 = 1 ;
    PORTD.3 = 0 ;
    if(PIND.4 == 1){return 1 ; KEY = 0;}
    if(PIND.5 == 1){return 2 ; KEY = 0;}
    if(PIND.6 == 1){return 3 ; KEY = 0;}
    if(PIND.7 == 1){return 12; KEY = 0;}
    //==========================================
    PORTD.0 = 0 ;
    PORTD.1 = 0 ;
    PORTD.2 = 0 ;
    PORTD.3 = 1 ;
    if(PIND.4 == 1){return 15; KEY = 0;}
    if(PIND.5 == 1){return 0 ; KEY = 0;}
    if(PIND.6 == 1){return 14; KEY = 0;}
    if(PIND.7 == 1){return 13; KEY = 0;}

    //================================================== ===========================
    PORTC.0 = 1 ;
    PORTC.1 = 0 ;
    PORTC.2 = 0 ;
    if(PINC.5 == 1){return 16 ; KEY=0;}
    if(PINC.6 == 1){return 17; KEY=0;}
    if(PINC.7 == 1){return 18 ; KEY=0;}
    //================================================== ===
    PORTC.0 = 0 ;
    PORTC.1 = 1 ;
    PORTC.2 = 0 ;
    if(PINC.5 == 1){return 19 ; KEY=0;}
    if(PINC.6 == 1){return 20 ; KEY=0;}
    if(PINC.7 == 1){return 21 ; KEY=0;}
    //================================================== ===
    PORTC.0 = 0 ;
    PORTC.1 = 0 ;
    PORTC.2 = 1 ;
    if(PINC.5 == 1){return 22 ; KEY=0;}
    if(PINC.6 == 1){return 23 ; KEY=0;}
    if(PINC.7 == 1){return 24 ; KEY=0;}

    KEY = 1 ;
    }
    }
    //################################################## ##########
    [/left][/right]

    #2
    پاسخ : تحلیل کد C در AVR


    کد:
    [#include <mega16.h>
    #include <delay.h>
    #include <lcd.h>
    #include <stdlib.h>        ما تو زبان سی با کتابخونه های مختلف کار داریم که باید اول برنامه صداشون کنیم .
    #include <math.h>        این کتابخونه ها یا مال خود نرم افزاره یا ما از این ور اون ور گیرشون میاریم
                          اگه با علامت <> باشن یعنی جزء کتابخونه های خود نرم افزاره
    #asm
      .equ __lcd_port=0x18     کدویژن برای معرفی پایه ال سی دی از این کد استفاده میکنه ، کد اسمبلی هست .
    #endasm
    //#############################################
    int key(void);
    float _Main(void);
    void Mohandes(void);          پیش تعریف توابع هستن .
    void Mohasebe(void);
    void Alamat(int,int);
    float Emoji(int);
    //#############################################
    float a = 0 , b = 0 , c = 0 , q , t;
    int i ;                                تعریف متغیر و آرایه
    char y=0 , lcd[25] , z  ;
    //#############################################
    void main(void){         بدنه اصلی تابع
    
    DDRB=0x0F;            تعیین جهت پایه های پورت B,C,D
    DDRC=0x07;
    DDRD=0x0F;
    
    lcd_init(16);  این یعنی ال سی دی مون 16 ستون داره
    while (1){
    _Main();      یه تابع به این اسم دائم صدا میشه
    }
    }
    //#############################################################
    float _Main(void){
    int Loop = 1 ;
    y = key();                                     کی پد صدا زده میشه
    if( y == 15 ){a = 0 ;b = 0 ;c = 0 ;lcd_clear();return 0 ;}
    if( y < 10 ){
        a = (a*10)+y ;
        itoa(y , lcd);  ---------------- این تابع تو کتابخونه stdlib.h  
                  است و عدد صحیح و رشته را به عنوان ورودی میگیرد و عدد صحیح را به صورت کاراکتر اسکی در رشته قرار میدهد 
        lcd_puts(lcd);      نمایش رشته اسکی موجود در sram
        delay_ms(50);
    } بقیش هم شبیه بیسیکه :whistling:  یه سری تابع همدیگرو صدا میزنن و نمایش روی ال سی دی و این داستانها . اگه نفهمیدی بگو خط به خط تحلیلش کنیم .
     
      if( y > 9 && y < 16 ){
        if( y == 15 ){a = 0 ;b = 0 ;c = 0 ;lcd_clear();return 0 ;}
        z = y ;
        Alamat(y,1);
        while(Loop){
        y = key();
        if( y == 15 ){a = 0 ;b = 0 ;c = 0 ;lcd_clear();return 0 ;}
        if( y < 10 ){
            b = (b*10)+y ;
            itoa(y , lcd);
            lcd_puts(lcd);
            delay_ms(50); 
        }else if(y == 14){
            lcd_putchar('=');
            Mohasebe();
            y = 0 ;
            Loop = 0 ;
        }
        }
    } 
    if( y > 15 ){
    lcd_clear();
    a= 0 ; b = 0 ; c = 0;
    Alamat(y , 2);
    z = y ;
    Loop = 1 ;
    while(Loop){
    y = key();
    if( y == 15 ){a = 0 ;b = 0 ;c = 0 ;lcd_clear();return 0 ;}
    if(y < 10){
        a = (a*10) + y ;
        itoa(y , lcd);
        lcd_puts(lcd);
        delay_ms(50);
    }else if ( y == 14){
        lcd_putchar('=');
        Mohandes();
    }
    Loop = 1 ;
    }
    }
    return 0;
    }
    //##########################################################
    void Mohasebe(void){                     
    if(z == 10)c = a / b ;
    if(z == 11)c = a * b ;
    if(z == 12)c = a - b ;
    if(z == 13)c = a + b ;
    ftoa(c , 3 , lcd);      
    lcd_puts(lcd);
    delay_ms(100);
    }
    //#########################################################
    float Emoji(int rr){
    q=1;
    for(i=0;i<rr;i++)q = q * 2.71728 ;
    return q;  
    }
    //#########################################################  
    void Mohandes(void){
    t = (3.1415926535897932384626433832795/180)*a ;
    if(z == 16)c = sin(t) ;
    if(z == 17)c = cos(t) ;
    if(z == 18)c = tan(t) ;
    if(z == 19)c = 1/tan(t) ;
    if(z == 20)c = asin(t) ;
    if(z == 21)c = acos(t) ;
    if(z == 22)c = log(a) ;
    if(z == 23)c = sqrt(a) ;
    if(z == 24)c = Emoji(a) ;
    ftoa(c , 3 , lcd);      
    lcd_puts(lcd);
    delay_ms(100);
    }
    //#########################################################
    void Alamat(int Moji,int Halat){
    if(Halat == 1){
        if(Moji == 10)lcd_putchar('/') ;
        if(Moji == 11)lcd_putchar('*') ;
        if(Moji == 12)lcd_putchar('-') ;
        if(Moji == 13)lcd_putchar('+') ; 
        delay_ms(100);   
    }
    if(Halat == 2){
        if(Moji == 16)lcd_putsf("Sin ") ;
        if(Moji == 17)lcd_putsf("Cos ") ;
        if(Moji == 18)lcd_putsf("Tan ") ;
        if(Moji == 19)lcd_putsf("Cot ") ; 
        if(Moji == 20)lcd_putsf("aSin") ;
        if(Moji == 21)lcd_putsf("aCos") ;
        if(Moji == 22)lcd_putsf("Log ") ;
        if(Moji == 23)lcd_putsf("Sqrt ") ; 
        if(Moji == 24)lcd_putsf("exp ") ;
        delay_ms(100);
    
    }
    }
    //#########################################################
    int key(void){
    char KEY = 1 ;
    while(KEY){
    
        PORTD.0 = 1 ;
        PORTD.1 = 0 ;
        PORTD.2 = 0 ;
        PORTD.3 = 0 ;
        if(PIND.4 == 1){return 7 ; KEY = 0;delay_ms(50);}   
        if(PIND.5 == 1){return 8 ; KEY = 0;delay_ms(50);}  
        if(PIND.6 == 1){return 9 ; KEY = 0;delay_ms(50);}  
        if(PIND.7 == 1){return 10; KEY = 0;delay_ms(50);}    
        //==========================================
        PORTD.0 = 0 ;
        PORTD.1 = 1 ;
        PORTD.2 = 0 ;
        PORTD.3 = 0 ;
        if(PIND.4 == 1){return 4 ; KEY = 0;}   
        if(PIND.5 == 1){return 5 ; KEY = 0;}  
        if(PIND.6 == 1){return 6 ; KEY = 0;}
        if(PIND.7 == 1){return 11; KEY = 0;}    
        //==========================================
        PORTD.0 = 0 ;
        PORTD.1 = 0 ;
        PORTD.2 = 1 ;
        PORTD.3 = 0 ;
        if(PIND.4 == 1){return 1 ; KEY = 0;}    
        if(PIND.5 == 1){return 2 ; KEY = 0;}    
        if(PIND.6 == 1){return 3 ; KEY = 0;}   
        if(PIND.7 == 1){return 12; KEY = 0;}     
        //==========================================
        PORTD.0 = 0 ;
        PORTD.1 = 0 ;
        PORTD.2 = 0 ;
        PORTD.3 = 1 ;
        if(PIND.4 == 1){return 15; KEY = 0;}    
        if(PIND.5 == 1){return 0 ; KEY = 0;}    
        if(PIND.6 == 1){return 14; KEY = 0;}    
        if(PIND.7 == 1){return 13; KEY = 0;}
    
        //=============================================================================
        PORTC.0 = 1 ;
        PORTC.1 = 0 ;
        PORTC.2 = 0 ;
        if(PINC.5 == 1){return 16 ; KEY=0;}
        if(PINC.6 == 1){return 17; KEY=0;}
        if(PINC.7 == 1){return 18 ; KEY=0;}
        //===================================================== 
        PORTC.0 = 0 ;
        PORTC.1 = 1 ;
        PORTC.2 = 0 ;
        if(PINC.5 == 1){return 19 ; KEY=0;}     
        if(PINC.6 == 1){return 20 ; KEY=0;}
        if(PINC.7 == 1){return 21 ; KEY=0;}
        //=====================================================
        PORTC.0 = 0 ;
        PORTC.1 = 0 ;
        PORTC.2 = 1 ;
        if(PINC.5 == 1){return 22 ; KEY=0;} 
        if(PINC.6 == 1){return 23 ; KEY=0;}
        if(PINC.7 == 1){return 24 ; KEY=0;}
     
    KEY = 1 ;    
    }
    }
    ******** یَاربَّ الحسَینِ ؛ بحَقٍِّ الحسَینِ ؛ اِشفِ صَدرَ الحسَینِ ؛ بِظُهوُرِالحجَّهِ *******
    اللهم صل علی محمد وآل محمد و عجل فرجهم

    دیدگاه


      #3
      پاسخ : تحلیل کد C در AVR

      نوشته اصلی توسط s.m.alavi
      کد:
      [#include <mega16.h>
      #include <delay.h>
      #include <lcd.h>
      #include <stdlib.h>        ما تو زبان سی با کتابخونه های مختلف کار داریم که باید اول برنامه صداشون کنیم .
      #include <math.h>        این کتابخونه ها یا مال خود نرم افزاره یا ما از این ور اون ور گیرشون میاریم
                            اگه با علامت <> باشن یعنی جزء کتابخونه های خود نرم افزاره
      #asm
        .equ __lcd_port=0x18     کدویژن برای معرفی پایه ال سی دی از این کد استفاده میکنه ، کد اسمبلی هست .
      #endasm
      //#############################################
      int key(void);
      float _Main(void);
      void Mohandes(void);          پیش تعریف توابع هستن .
      void Mohasebe(void);
      void Alamat(int,int);
      float Emoji(int);
      //#############################################
      float a = 0 , b = 0 , c = 0 , q , t;
      int i ;                                تعریف متغیر و آرایه
      char y=0 , lcd[25] , z  ;
      //#############################################
      void main(void){         بدنه اصلی تابع
      
      DDRB=0x0F;            تعیین جهت پایه های پورت B,C,D
      DDRC=0x07;
      DDRD=0x0F;
      
      lcd_init(16);  این یعنی ال سی دی مون 16 ستون داره
      while (1){
      _Main();      یه تابع به این اسم دائم صدا میشه
      }
      }
      //#############################################################
      float _Main(void){
      int Loop = 1 ;
      y = key();                                     کی پد صدا زده میشه
      if( y == 15 ){a = 0 ;b = 0 ;c = 0 ;lcd_clear();return 0 ;}
      if( y < 10 ){
          a = (a*10)+y ;
          itoa(y , lcd);  ---------------- این تابع تو کتابخونه stdlib.h  
                    است و عدد صحیح و رشته را به عنوان ورودی میگیرد و عدد صحیح را به صورت کاراکتر اسکی در رشته قرار میدهد 
          lcd_puts(lcd);      نمایش رشته اسکی موجود در sram
          delay_ms(50);
      } بقیش هم شبیه بیسیکه :whistling:  یه سری تابع همدیگرو صدا میزنن و نمایش روی ال سی دی و این داستانها . اگه نفهمیدی بگو خط به خط تحلیلش کنیم .
       
        if( y > 9 && y < 16 ){
          if( y == 15 ){a = 0 ;b = 0 ;c = 0 ;lcd_clear();return 0 ;}
          z = y ;
          Alamat(y,1);
          while(Loop){
          y = key();
          if( y == 15 ){a = 0 ;b = 0 ;c = 0 ;lcd_clear();return 0 ;}
          if( y < 10 ){
              b = (b*10)+y ;
              itoa(y , lcd);
              lcd_puts(lcd);
              delay_ms(50); 
          }else if(y == 14){
              lcd_putchar('=');
              Mohasebe();
              y = 0 ;
              Loop = 0 ;
          }
          }
      } 
      if( y > 15 ){
      lcd_clear();
      a= 0 ; b = 0 ; c = 0;
      Alamat(y , 2);
      z = y ;
      Loop = 1 ;
      while(Loop){
      y = key();
      if( y == 15 ){a = 0 ;b = 0 ;c = 0 ;lcd_clear();return 0 ;}
      if(y < 10){
          a = (a*10) + y ;
          itoa(y , lcd);
          lcd_puts(lcd);
          delay_ms(50);
      }else if ( y == 14){
          lcd_putchar('=');
          Mohandes();
      }
      Loop = 1 ;
      }
      }
      return 0;
      }
      //##########################################################
      void Mohasebe(void){                     
      if(z == 10)c = a / b ;
      if(z == 11)c = a * b ;
      if(z == 12)c = a - b ;
      if(z == 13)c = a + b ;
      ftoa(c , 3 , lcd);      
      lcd_puts(lcd);
      delay_ms(100);
      }
      //#########################################################
      float Emoji(int rr){
      q=1;
      for(i=0;i<rr;i++)q = q * 2.71728 ;
      return q;  
      }
      //#########################################################  
      void Mohandes(void){
      t = (3.1415926535897932384626433832795/180)*a ;
      if(z == 16)c = sin(t) ;
      if(z == 17)c = cos(t) ;
      if(z == 18)c = tan(t) ;
      if(z == 19)c = 1/tan(t) ;
      if(z == 20)c = asin(t) ;
      if(z == 21)c = acos(t) ;
      if(z == 22)c = log(a) ;
      if(z == 23)c = sqrt(a) ;
      if(z == 24)c = Emoji(a) ;
      ftoa(c , 3 , lcd);      
      lcd_puts(lcd);
      delay_ms(100);
      }
      //#########################################################
      void Alamat(int Moji,int Halat){
      if(Halat == 1){
          if(Moji == 10)lcd_putchar('/') ;
          if(Moji == 11)lcd_putchar('*') ;
          if(Moji == 12)lcd_putchar('-') ;
          if(Moji == 13)lcd_putchar('+') ; 
          delay_ms(100);   
      }
      if(Halat == 2){
          if(Moji == 16)lcd_putsf("Sin ") ;
          if(Moji == 17)lcd_putsf("Cos ") ;
          if(Moji == 18)lcd_putsf("Tan ") ;
          if(Moji == 19)lcd_putsf("Cot ") ; 
          if(Moji == 20)lcd_putsf("aSin") ;
          if(Moji == 21)lcd_putsf("aCos") ;
          if(Moji == 22)lcd_putsf("Log ") ;
          if(Moji == 23)lcd_putsf("Sqrt ") ; 
          if(Moji == 24)lcd_putsf("exp ") ;
          delay_ms(100);
      
      }
      }
      //#########################################################
      int key(void){
      char KEY = 1 ;
      while(KEY){
      
          PORTD.0 = 1 ;
          PORTD.1 = 0 ;
          PORTD.2 = 0 ;
          PORTD.3 = 0 ;
          if(PIND.4 == 1){return 7 ; KEY = 0;delay_ms(50);}   
          if(PIND.5 == 1){return 8 ; KEY = 0;delay_ms(50);}  
          if(PIND.6 == 1){return 9 ; KEY = 0;delay_ms(50);}  
          if(PIND.7 == 1){return 10; KEY = 0;delay_ms(50);}    
          //==========================================
          PORTD.0 = 0 ;
          PORTD.1 = 1 ;
          PORTD.2 = 0 ;
          PORTD.3 = 0 ;
          if(PIND.4 == 1){return 4 ; KEY = 0;}   
          if(PIND.5 == 1){return 5 ; KEY = 0;}  
          if(PIND.6 == 1){return 6 ; KEY = 0;}
          if(PIND.7 == 1){return 11; KEY = 0;}    
          //==========================================
          PORTD.0 = 0 ;
          PORTD.1 = 0 ;
          PORTD.2 = 1 ;
          PORTD.3 = 0 ;
          if(PIND.4 == 1){return 1 ; KEY = 0;}    
          if(PIND.5 == 1){return 2 ; KEY = 0;}    
          if(PIND.6 == 1){return 3 ; KEY = 0;}   
          if(PIND.7 == 1){return 12; KEY = 0;}     
          //==========================================
          PORTD.0 = 0 ;
          PORTD.1 = 0 ;
          PORTD.2 = 0 ;
          PORTD.3 = 1 ;
          if(PIND.4 == 1){return 15; KEY = 0;}    
          if(PIND.5 == 1){return 0 ; KEY = 0;}    
          if(PIND.6 == 1){return 14; KEY = 0;}    
          if(PIND.7 == 1){return 13; KEY = 0;}
      
          //=============================================================================
          PORTC.0 = 1 ;
          PORTC.1 = 0 ;
          PORTC.2 = 0 ;
          if(PINC.5 == 1){return 16 ; KEY=0;}
          if(PINC.6 == 1){return 17; KEY=0;}
          if(PINC.7 == 1){return 18 ; KEY=0;}
          //===================================================== 
          PORTC.0 = 0 ;
          PORTC.1 = 1 ;
          PORTC.2 = 0 ;
          if(PINC.5 == 1){return 19 ; KEY=0;}     
          if(PINC.6 == 1){return 20 ; KEY=0;}
          if(PINC.7 == 1){return 21 ; KEY=0;}
          //=====================================================
          PORTC.0 = 0 ;
          PORTC.1 = 0 ;
          PORTC.2 = 1 ;
          if(PINC.5 == 1){return 22 ; KEY=0;} 
          if(PINC.6 == 1){return 23 ; KEY=0;}
          if(PINC.7 == 1){return 24 ; KEY=0;}
       
      KEY = 1 ;    
      }
      }
      ممنون جناب علوی عزیز
      توضیحاتتون کامل و خوب بود
      فقط تکه کد های پایین رو اگه توضیح بدید خیلی ممنونتون میشم (قسمت هایی که از هم جدا شدن)

      دیدگاه


        #4
        پاسخ : تحلیل کد C در AVR

        اون ها همشون تابع هستن
        بحث توابع در زبان سی ( بحث ساده ایه ) رو بخونید متوجه میشین.
        یه سرچ کنید مطلب زیاده
        ******** یَاربَّ الحسَینِ ؛ بحَقٍِّ الحسَینِ ؛ اِشفِ صَدرَ الحسَینِ ؛ بِظُهوُرِالحجَّهِ *******
        اللهم صل علی محمد وآل محمد و عجل فرجهم

        دیدگاه

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