اطلاعیه

Collapse
No announcement yet.

خطاهای بنده در نوشتن برنامه زبان سی چیه

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

    خطاهای بنده در نوشتن برنامه زبان سی چیه

    با سلام
    من به تازگی دارم با زبان سی کار می کنم حالا هم در حین ترجمه یکی از برنامه هام از بیسیک به سی به مشکل برخوردم بطوریکه برای چند خط برنامه زیر با 7 خطای مشابه به دو مورد بیان شده مواجه هستم

    کد:
    #include <mega128.h>
    #include <delay.h>
    #define xtal 16000000;
    
    void main (void)
    {
    
    long int A;
    unsigned char B;
    unsigned char C;
    unsigned char D;
    unsigned char E;
    unsigned char F;
    unsigned char G;
    unsigned char H;
    unsigned char I;
    long int J;
    char K;
    long int L;
    long int M;
    long int N;
    char O;
    long int P;
    long int Q;
    long int R;
    long int S;
    char T;
    long int U;
    long int W;
    long int X;
    long int Y;
    char Z;
    char Mj1;
    
    bit Mjout0;
    bit Mjout1;
    bit Mjout2;
    bit Mjout3;
    bit Mjout4;
    bit Mjout5;
    bit Mjout6;
    bit Mjout7;
    bit Mjout8;
    bit Mjout9;
    bit Mjoutf2 = 1;
    bit Mjoutf3 = 1;
    bit Mjoutf4 = 1;
    bit Mjoutenter;
    bit Mjoutstop;
    
    
    
     while (1)
     {
    
     }
              
    }

    خطاهای دیگر هم مشابه به همین دو هستند که خطوط دیگر را نشانه میروند
    کد:
    Error: G:\Electronics\PROJECT'S\Car Controller Securety System\C\Car Controller Securety System.c(44): too many local 'bit' variables declared inside this function
    Error: G:\Electronics\PROJECT'S\Car Controller Securety System\C\Car Controller Securety System.c(46): must declare first in block

    2- آیا متغیر از نوع بیت نمی توان تعریف کرد؟
    3-در مگا 64 تعداد و نوع متغییرهای تعریف شده محدودیت دارد؟

    #2
    پاسخ : خطاهای بنده در نوشتن برنامه زبان سی چیه

    سلام

    نه محدودیتی نیست داخلش

    متغییر های هم نوع را در یک خط تعریف کن یکم ظاهرش قشنگ تر بشه ببین بازم خطا میده؟

    در ضمن خطای اولیت اینه که یک یا چند متغییر را اول برنامه تعریف نکردی...

    متغییر های محلی باید اول خود تابع تعریف بشند ...

    اگه نشد کل پروژه رو یه جا پ کن بده تا کامپایل کنم و درستش کنم

    موفق باشید

    دیدگاه


      #3
      پاسخ : خطاهای بنده در نوشتن برنامه زبان سی چیه

      همینکار را انجام دادم فقط یک خطا داره


      کد:
      #include <mega128.h>
      #include <delay.h>
      #define xtal 16000000;
      
      void main (void)
      {
      
      long int A,J,L,M,N,P,Q,R,S,U,W,X,Y;
      unsigned char B,C,D,E,F,G,H,I;
      char O,K,T,Z,Mj1;
      bit Mjout0,Mjout1,Mjout2,Mjout3,Mjout4,Mjout5,Mjout6,Mjout7,Mjout8,Mjout9,Mjoutf2 = 1,Mjoutf3 = 1,Mjoutf4 = 1,Mjoutenter,Mjoutstop;
      
       while (1)
       {
      
       }
                
      }

      کد:
      Error: G:\Electronics\PROJECT'S\Car Controller Securety System\C\Car Controller Securety System.c(11): too many local 'bit' variables declared inside this function

      دیگه اینکه برای تغییر نامه یک پایه از پورتی به یک نام خاص در ابتدای برنامه و استفاده همان نام جایگزین در کل برنامه با چه دستوری ممکن هست (مثلا porta.1 بشه alarm)

      دیدگاه


        #4
        پاسخ : خطاهای بنده در نوشتن برنامه زبان سی چیه

        با سلام تعداد متغییرهای bit در کدویژن 16 تا تعریف شده اگر بخواهید بیشتر باشه باید از این آدرس تعداد را بیشتر کنید در سربرگهای بالا
        project-configor-c compiler- bit variable size

        دیدگاه


          #5
          پاسخ : خطاهای بنده در نوشتن برنامه زبان سی چیه

          نوشته اصلی توسط جهرمی
          دیگه اینکه برای تغییر نامه یک پایه از پورتی به یک نام خاص در ابتدای برنامه و استفاده همان نام جایگزین در کل برنامه با چه دستوری ممکن هست (مثلا porta.1 بشه alarm)
          #define alarm PORTA.1

          دیدگاه


            #6
            پاسخ : خطاهای بنده در نوشتن برنامه زبان سی چیه

            با وجود اینکه ویرایش را انجام دادم هنوز با خطای زیر مواجه هستم یعنی مشکل چیه؟
            Error: G:\Electronics\PROJECT'S\Car Controller Securety System\C\Car Controller Securety System.c(11): too many local 'bit' variables declared inside this function

            دیدگاه


              #7
              پاسخ : خطاهای بنده در نوشتن برنامه زبان سی چیه

              اینجوری بنویس درست میشه
              #include <mega128.h>
              #include <delay.h>
              #define xtal 16000000;
              bit Mjout0,Mjout1,Mjout2,Mjout3,Mjout4,Mjout5,Mjout6,M jout7,Mjout8,Mjout9,Mjoutf2 ,Mjoutf3 ,Mjoutf4,Mjoutenter,Mjoutstop;

              void main (void)
              {

              long int A,J,L,M,N,P,Q,R,S,U,W,X,Y;
              unsigned char B,C,D,E,F,G,H,I;
              char O,K,T,Z,Mj1;

              while (1)
              {

              }

              }

              دیدگاه


                #8
                پاسخ : خطاهای بنده در نوشتن برنامه زبان سی چیه

                من برنامه را کلا نوشتم ولی در حال حاضر زمانیکه CTRL+F9 میزنم 3 خطا و 11 هشدار صادر میشه خواستم اگر ممکنه بررسی کنید و منشا ایجاد کننده خطا را هم بفرمایید.

                کد:
                [left]
                Error: G:\Electronics\PROJECT'S\Car Controller Securety System\C\Car Controller Securety System.c(0): illegal symbol
                Error: G:\Electronics\PROJECT'S\Car Controller Securety System\C\Car Controller Securety System.c(39): missing '('
                Error: G:\Electronics\PROJECT'S\Car Controller Securety System\C\000.c(39): missing '('
                [/left]
                کد:
                [left]
                
                /******************************
                Chip Type    : ATmega128
                Program Type  : Aplication
                Clock Frequency : 16.000000 MHZ
                Memory Model  : non
                External SRAM Size : non
                Data Stack Size : non
                ******************************/
                #include <mega128.h>
                #include <stdio.h>
                #include <delay.h>
                #define xtal 16000000;
                
                // Alphanumeric LCD Module functions
                #asm
                  .equ __lcd_port=0x18 ;PORTB
                #endasm
                #include <lcd.h>
                #define __kbd_port_addr 0x03 //PORTE
                #include <kbd.h>
                
                bit Mjout0,Mjout1,Mjout2,Mjout3,Mjout4,Mjout5,Mjout6,Mjout7,Mjout8,Mjout9,Mjoutf2 = 1,Mjoutf3 = 1,Mjoutf4 = 1,Mjoutenter,Mjoutstop;
                long int A=54321,J,L=12345,M,N,P,Q,R,S,U,W,X,Y;
                unsigned char B,C,D,E,F,G=4,H,I,x,y,tohi;
                flash char kbd_table[]={1,2,3,12,4,5,6,13,7,8,9,1.,10,0,11,1.};
                //unsigned char code[4][4]={{0,4,8,12},{1,5,9,13},{2,6,10,14},{3,7,11,15}};
                char O=0,K=2,T=0,Z,Mj1,buffer_lcd[20];
                
                //Renamed Ports
                #define ALARM PORTC.0
                #define YELLOW PORTC.1
                #define GREEN PORTC.2
                #define F5 PORTG.0 
                #define F1 PORTG.1
                #define F2 PORTG.2
                #define F3 PORTG.3
                #define F4 PORTG.4
                //Renamed Ports
                DDRC=0xff;
                DDRC=0xf0;
                DDRG=0x1f;
                
                void main (void)
                {
                //LCD module initialization
                lcd_init(16);
                ALARM=1;
                
                
                _lcd_ready();
                _lcd_write_data(0xc);
                lcd_clear();
                lcd_gotoxy(4,0);
                lcd_putsf("WELCOME");
                lcd_gotoxy(2,1);
                lcd_putsf("CCSS Turned ON");
                delay_ms(500);
                //L=12345;G=4;T=0;O=0;K=2;A=54321;
                 
                 Maine:{
                   lcd_clear();
                   lcd_putsf("Inter Password");
                   lcd_gotoxy(5,1);
                   _lcd_ready();
                   _lcd_write_data(0xf);
                   Y=L;
                 } 
                   
                 Mmain:{
                    while (1)
                    {   
                    B=kbd_table[kbd_get()];
                    if(B<12){
                    delay_ms(100);
                    goto Main;
                    }
                   }
                 }
                 
                 Main:{
                   while (1){   
                
                    if(B==0){
                    B=tohi;
                    C=1;
                    goto Main2;
                
                    }
                    
                    if(B==4){
                    B=tohi;
                    C=0x2;
                    goto Main2;
                    }
                    
                    if(B==8){
                    B=tohi;
                    C=0x3;
                    goto Main2;
                    }
                    
                    if(B==1){
                    B=tohi;
                    C=0x4;
                    goto Main2;
                    }
                    
                    if(B==5){
                    B=tohi;
                    C=0x5;
                    goto Main2;
                    }
                    
                    if(B==9){
                    B=tohi;
                    C=0x6;
                    goto Main2;
                    }
                    
                    if(B==2){
                    B=tohi;
                    C=0x7;
                    goto Main2;
                    }
                    
                    if(B==6){
                    B=tohi;
                    C=0x8;
                    goto Main2;
                    }
                    
                    if(B==0x10){
                    B=tohi;
                    C=0x9;
                    goto Main2;
                    }
                    
                    if(B==7){
                    B=tohi;
                    C=0x0;
                    goto Main2;
                    }
                    
                    if(B==11){
                    B=tohi;
                    C=0x12;
                    T = 3;
                    goto Main2;
                    }
                    
                    if(B==3){
                    B=tohi;
                    C=0x11;
                    O = 3;
                    goto Main2;
                    }
                    
                   }
                 }       
                 
                 Main2:{
                
                  if(C == 11){
                  goto Main7;
                  }
                  
                  if(C == 12){
                  goto Main13;
                  }
                  
                  
                  if(G == 4){
                  lcd_gotoxy(2,6);
                  lcd_putsf("*");
                  Z = C;
                  --G;
                  goto Mmain;
                  }
                 
                  if(G == 3){
                  lcd_gotoxy(2,7);
                  lcd_putsf("*");
                  E = C;
                  --G;
                  goto Mmain;
                  }
                  
                  if(G == 2){
                  lcd_gotoxy(2,8);
                  lcd_putsf("*");
                  F = C;
                  --G;
                  goto Mmain;
                  }
                 
                  if(G == 1){
                  lcd_gotoxy(2,9);
                  lcd_putsf("*");
                  H = C;
                  --G;
                  goto Mmain;
                  }
                  
                  if(G == 0){
                  lcd_gotoxy(2,10);
                  lcd_putsf("*");
                  I = C;
                  G = 4;
                  }
                  
                 }
                 
                 Main3:{
                 M=H*10;
                 N=F*100;
                 P=E*1000;
                 U=Z*10000;
                 Q=M+I;
                 R=N+Q;
                 S=P+R;
                 W=U+S;
                 goto Main7;
                 } 
                 
                 
                 Main8:{
                 while(1){
                 if(L == A && T == 2){
                 goto Main13;
                 }
                 if(L!=W && T==1){
                 goto Main13;
                 }
                 if(L == W){
                 ALARM=0;
                 goto Main4;
                 }
                 if(L != W){
                 ALARM=1;
                 }
                 goto Main5;
                 } 
                 }
                 
                 Main4:{
                  lcd_clear();
                  lcd_putsf("ok");
                  lcd_clear();
                  lcd_putsf("Welcome To Menu");
                  GREEN=1;
                  delay_ms(500);
                  goto Mjmain;
                  GREEN=0;
                  K = 2;
                  L = Y;
                  goto Maine;
                 }
                  
                 Main5:{
                 while(1){
                  if(K == 0){
                  goto Main6;
                  }
                  else{
                  lcd_clear();
                  lcd_putsf("your try");
                  lcd_gotoxy(1,10);
                  sprintf(buffer_lcd,"%u4",K);
                  lcd_puts(buffer_lcd);
                  lcd_gotoxy(2,9);
                  lcd_putsf("!ALARM!");
                  --K;
                  goto Mmain;
                  }
                 }
                 }
                 
                 Main6:{
                 lcd_clear();
                 lcd_putsf("Int Master Pass");
                 L=tohi;
                 L = A;
                 K = 0;
                 goto Mmain;
                 }
                 
                 Main7:{
                 while(1){
                  Main11:{
                  if(O == 3) {
                   L = A;
                   lcd_clear();
                   lcd_putsf("Int Master Pass");
                   --O;
                   goto Mmain;
                  }
                  
                  if(O == 2 && L == W ){
                   --O;
                   lcd_clear();
                   lcd_putsf("Int New Password");
                   goto Mmain;
                  }
                  
                  if(O == 1 ){
                   L = W;
                   lcd_clear();
                   sprintf(buffer_lcd,"%u5",L);
                   lcd_puts(buffer_lcd);
                   delay_ms(1000);
                   lcd_clear();
                   --O;
                   goto Maine;
                  }
                  
                  if(O == 0){
                   goto Main8;
                  }
                  
                  if(O == 2 && L != W ){
                   lcd_clear();
                   lcd_putsf("eror");
                   O = 3;
                   delay_ms(1000);
                   goto Main11;
                  }
                 }
                 }
                }
                
                 Main13:{
                 while(1){
                  Main14:{
                  if(T == 3){
                  X = L;
                  L = A;
                   lcd_clear();
                   lcd_putsf("Int Master Pass");
                   --T;
                   goto Mmain;
                  }
                  
                  if(T == 2 && A == W){
                   --T;
                   lcd_clear();
                   lcd_putsf("New Master Pass");
                   goto Mmain;
                  }
                  
                  if(T == 1){
                   A = W;
                   L = X;
                   lcd_clear();
                   sprintf(buffer_lcd,"%u5",A);
                   lcd_puts(buffer_lcd);
                   delay_ms(1000);
                   lcd_clear();
                   --T;
                   goto Maine;
                  }
                  
                  if(T == 0){
                   goto Main8;
                  }
                  if(T == 2 && A != W){
                   lcd_clear();
                   lcd_putsf("eror");
                   T = 3;
                   delay_ms(1000);
                   goto Main14;
                   }
                  }
                  }
                 }
                
                
                 Mjmain:{
                  lcd_clear();
                  lcd_gotoxy(1,1);
                  lcd_putsf("F1=Door");
                  lcd_gotoxy(1,10);
                  lcd_putsf("F2=Light");
                  lcd_gotoxy(2,1);
                  lcd_putsf("F3=Out1");
                  lcd_gotoxy(2,10);
                  lcd_putsf("F4=Out2");
                  goto Mjgetkbd;
                 }
                
                 Mjgetkbd:{
                  while(1){
                  delay_ms(50);
                   Mj1 = kbd_table[kbd_get()];
                   if(Mj1 < 16){
                  goto Mjhexkeypad;
                  }
                  }
                 }
                
                 Mjhexkeypad:{
                  
                  if(Mj1 == 12){
                  goto Mjmain1;
                  }
                  
                  if(Mj1 == 13){
                  goto Mjmain2;
                  }
                  
                  if(Mj1 == 14){
                  goto Mjmain3;
                  }
                  
                  if(Mj1 == 15){
                  goto Mjmain4;
                  }
                  
                 }
                 
                 
                 Mjmain1:{
                  lcd_clear();
                  lcd_gotoxy(1,3);
                  lcd_putsf("F1 Selected");
                  lcd_gotoxy(2,3);
                  lcd_putsf("Open Door");
                  F1=1;
                  delay_ms(15);
                  F1=0;
                  Mj1=tohi;
                  goto Mjgetkbd;
                 }
                 
                 Mjmain2:{
                 if(Mjoutf2 == 0){
                  lcd_clear();
                  lcd_gotoxy(1,3);
                  lcd_putsf("F2 Selected");
                  lcd_gotoxy(2,7);
                  lcd_putsf("Light OFF");
                  F2=0;
                  Mjoutf2 = 1;
                  goto Mjgetkbd;
                  }
                 
                 
                 if(Mjoutf2 == 1){
                  lcd_clear();
                  lcd_gotoxy(1,3);
                  lcd_putsf("F2 Selected");
                  lcd_gotoxy(2,7);
                  lcd_putsf("Light ON");
                  F2=1;
                  Mjoutf2 = 0;
                  goto Mjgetkbd;
                  }
                 }
                 
                 Mjmain3:{
                 if(Mjoutf3 == 0){
                  lcd_clear();
                  lcd_gotoxy(1,3);
                  lcd_putsf("F3 Selected");
                  lcd_gotoxy(2,7);
                  lcd_putsf("Out OFF");
                  F3=0;
                  Mjoutf3 = 1;
                  delay_ms(10);
                  goto Mjgetkbd;
                  }
                
                 if(Mjoutf3 == 1){
                  lcd_clear();
                  lcd_gotoxy(1,3);
                  lcd_putsf("F3 Selected");
                  lcd_gotoxy(2,7);
                  lcd_putsf("Out ON");
                  F3=1;
                  Mjoutf3 = 0;
                  delay_ms(10);
                  goto Mjgetkbd;
                  }
                 }
                 
                 Mjmain4:{
                 if(Mjoutf4 == 0){
                  lcd_clear();
                  lcd_gotoxy(1,3);
                  lcd_putsf("F4 Selected");
                  lcd_gotoxy(2,7);
                  lcd_putsf("Out 2 OFF");
                  F4=0;
                  Mjoutf4 = 1;
                  delay_ms(10);
                  goto Mjgetkbd;
                  }
                
                 if(Mjoutf4 == 1){
                  lcd_clear();
                  lcd_gotoxy(1,3);
                  lcd_putsf("F4 Selected");
                  lcd_gotoxy(2,7);
                  lcd_putsf("Out 2 ON");
                  F4=1;
                  Mjoutf4 = 0;
                  delay_ms(10);
                  goto Mjgetkbd;
                  }
                 }
                 
                 Mjmain5:{
                 if(Mjout0 == 0){
                  lcd_clear();
                  lcd_gotoxy(1,2);
                  lcd_putsf("0 Selected");
                  lcd_gotoxy(2,7);
                  lcd_putsf("Out3 OFF");
                  F5=0;
                  delay_ms(10);
                  Mjout0 = 1;
                  goto Mjgetkbd;
                  }
                
                 if(Mjout0 == 1){
                  lcd_clear();
                  lcd_gotoxy(1,2);
                  lcd_putsf("0 Selected");
                  lcd_gotoxy(2,7);
                  lcd_putsf("Out3 OFF");
                  F5=1;
                  Mjout0 = 0;
                  delay_ms(0);
                  goto Mjgetkbd;
                  }
                 }
                 
                 Mjmain6:{
                  lcd_clear();
                  lcd_gotoxy(1,2);
                  lcd_putsf("Enter Selected");
                  lcd_gotoxy(2,2);
                  lcd_putsf("ALL OUT = ON");
                  F2=1;
                  F3=1;
                  F4=1;
                  F5=1;
                  goto Mjgetkbd;
                 }
                 
                 Mjmain7:{
                  lcd_clear();
                  lcd_gotoxy(1,2);
                  lcd_putsf("STOP Selected");
                  lcd_gotoxy(2,2);
                  lcd_putsf("ALL OUT = OFF");
                  F2=0;
                  F3=0;
                  F4=0;
                  F5=0;
                  goto Main;
                 } 
                return 0;
                }
                
                [/left]

                دیدگاه


                  #9
                  پاسخ : خطاهای بنده در نوشتن برنامه زبان سی چیه

                  با سلام شما در برنامه اتون از این دستور استفاده کردید #include <kbd.h> اما این را در هیچ جا فایلش را قرار ندادید

                  دیدگاه


                    #10
                    پاسخ : خطاهای بنده در نوشتن برنامه زبان سی چیه

                    متغییر های هم نوع را در یک خط تعریف کن یکم ظاهرش قشنگ تر بشه
                    جسارتا! یکی از موارد مهمی که معمولا در نوشتن یک برنامه بهش توجه کافی نمیشه اینه که فردا که این برنامه قراره تصحیح بشه کی و چطور باید اینکارو انجام بده. معمولا همه فرض رو بر این میذارن که خودم! و مثل آب خوردن. غافل از اینکه این خودم نوعی ممکنه هیچ چیز یادش نیاد. از طرف دیگه تحلیل منطق برنامه ای که 1 ماه پیش هم نوشته شده کار زمانگیری ممکنه باشه. یکی از راههای رفع این نوع مشکلات درست برنامه نوشتن هست که با برنامه درست نوشتن فرق میکنه. یکی از این موارد درست "برنامه نوشتن" کامنت گذاری برای متغیر ها و سمبل های تعریف شده هست. از اونجایی که اگر طبق پیشنهاد جناب آقای مهری متغیر های هم جنس در یک خط قطار بشن و بخواییم کامنت برای هر کدوم بذاریم اینکار براحتی انجام شدنی نیست.
                    بنا براین:
                    بهتره برخلاف صحبت آقای مهری هر متغیر رو با ذکر نوعش در یک خط بذاریم. با اینکار تعویض نوع اون متغیر و یا حتی کامنت کردنش برای حذف اون براحتی انجام میشه.

                    دیدگاه


                      #11
                      پاسخ : خطاهای بنده در نوشتن برنامه زبان سی چیه

                      نوشته اصلی توسط زوار
                      با سلام شما در برنامه اتون از این دستور استفاده کردید #include <kbd.h> اما این را در هیچ جا فایلش را قرار ندادید
                      ببخشید چند وقتی اینترنت قطع بود با تاخیر فایل رو پلود کردم
                      هر دو فایل مربوط به کی پد 4X4 (Kbd) را در لینک زیر قرار دادم
                      Kbd.zip

                      دیدگاه


                        #12
                        پاسخ : خطاهای بنده در نوشتن برنامه زبان سی چیه

                        نوشته اصلی توسط reza_agha
                        جسارتا! یکی از موارد مهمی که معمولا در نوشتن یک برنامه بهش توجه کافی نمیشه اینه که فردا که این برنامه قراره تصحیح بشه کی و چطور باید اینکارو انجام بده. معمولا همه فرض رو بر این میذارن که خودم! و مثل آب خوردن. غافل از اینکه این خودم نوعی ممکنه هیچ چیز یادش نیاد. از طرف دیگه تحلیل منطق برنامه ای که 1 ماه پیش هم نوشته شده کار زمانگیری ممکنه باشه. یکی از راههای رفع این نوع مشکلات درست برنامه نوشتن هست که با برنامه درست نوشتن فرق میکنه. یکی از این موارد درست "برنامه نوشتن" کامنت گذاری برای متغیر ها و سمبل های تعریف شده هست. از اونجایی که اگر طبق پیشنهاد جناب آقای مهری متغیر های هم جنس در یک خط قطار بشن و بخواییم کامنت برای هر کدوم بذاریم اینکار براحتی انجام شدنی نیست.
                        بنا براین:
                        بهتره برخلاف صحبت آقای مهری هر متغیر رو با ذکر نوعش در یک خط بذاریم. با اینکار تعویض نوع اون متغیر و یا حتی کامنت کردنش برای حذف اون براحتی انجام میشه.

                        متغییرهای برنامه را همراه با کامنت گذاری در زیر آوردم:

                        کد:
                        #include <mega128.h>
                        #include <stdio.h>
                        #include <delay.h>
                        #define xtal 16000000;
                        
                        // Alphanumeric LCD Module functions
                        #asm
                          .equ __lcd_port=0x18 ;PORTB
                        #endasm
                        #include <lcd.h>
                        #define __kbd_port_addr 0x03 //PORTE
                        #include <kbd.h>
                        
                        long int A = 54321; //masters paswoard first value
                        long int J;
                        long int L = 12345;         //slave paswoard first value
                        long int M;             //baraye mohasebat (main3)
                        long int N;             //baraye mohasebat (main3)
                        long int P;             //baraye mohasebat (main3)
                        long int Q;             //baraye mohasebat (main3)
                        long int R;             //baraye mohasebat (main3)
                        long int S;             //baraye mohasebat (main3)
                        long int U;             //baraye mohasebat (main3)
                        long int W;             //baraye mohasebat (main3)
                        long int X;             //(main14) 
                        long int Y;             //(Maine)&(Main4)
                        unsigned char B;          //variables for stored value from peresed button keypad4x4 
                        unsigned char C;          //if C = 11 or 12 then... (main2)
                        unsigned char D;          //
                        unsigned char E;          //baraye mohasebat (main3)
                        unsigned char F;          //baraye mohasebat (main3)
                        unsigned char G=4;         //jahate shomaresh dar if-ha
                        unsigned char H;          //baraye mohasebat (main3)
                        unsigned char I;          //baraye mohasebat (main3)
                        unsigned char x;
                        unsigned char y;
                        unsigned char tohi;         //baraye reset kardane digar moteghayer-ha ex. (tohi is non-value) B=1; -->> B=tohi (reseted B);
                        char O=0;
                        char K=2;
                        char T=0;
                        char Z;               //baraye mohasebat (main3)
                        char Mj1;
                        char buffer_lcd[20];
                        
                        /*
                        zamani ke passwoard slave sahih vared shode bashad vared meno barname
                        be meno miravad ke dar anj moteghayer-haye zir baraye
                        scan keypad4x4 va estefade dar shart-ha bekar miravad.
                        */
                        bit Mjout0;
                        bit Mjout1;
                        bit Mjout2;
                        bit Mjout3;
                        bit Mjout4;
                        bit Mjout5;
                        bit Mjout6;
                        bit Mjout7;
                        bit Mjout8;
                        bit Mjout9;
                        bit Mjoutf2 = 1;
                        bit Mjoutf3 = 1;
                        bit Mjoutf4 = 1;
                        bit Mjoutenter;
                        bit Mjoutstop;
                        
                        /*
                        Tarife meghdar-haye Keypad4x4 dar moteghayere zir
                        */
                        flash char kbd_table[]={1,2,3,12,4,5,6,13,7,8,9,1.,10,0,11,1.};
                        //unsigned char code[4][4]={{0,4,8,12},{1,5,9,13},{2,6,10,14},{3,7,11,15}};
                        
                        
                        DDRC=0xff;          //output defined for LEDs
                        DDRE=0xf0;          //in-out for Keypad4x4
                        DDRG=0x1f;          //Output for Rellays
                        //LCD module initialization
                        lcd_init(16);
                        
                        //Renamed Ports
                        #define ALARM PORTC.0
                        #define YELLOW PORTC.1
                        #define GREEN PORTC.2
                        #define F5 PORTG.0 
                        #define F1 PORTG.1
                        #define F2 PORTG.2
                        #define F3 PORTG.3
                        #define F4 PORTG.4
                        //Renamed Ports

                        بصورت خلاصه باید بگم که این یک برنامه قفل رمزی 5 رقمی هست که پس از اسکن مقادیر ورودی از پد 4X4 و تبدیل به یک عدد 5 رقمی به کمک منوی 3 و بسته به زیربرنامه انتخابی یکی از مراحل (رمز ورودی جهت ورود به منو، تغییر رمز اسلیو، تغییر رمز مستر) صورت خواهد پذیرفت.
                        در صورت ورود به منو کار اسکن صفحه کلید و ذخیره مقادیر از ورودیها و مقداردهی به خروجی ها با کمک متغییرهایی که با واژه mj آغاز می شوند صورت می گیرد.

                        در کامپایل برنامه با چند خطا و هشدار مواجه هستم که به شرح زیر هست
                        کد:
                        Error: G:\Electronics\PROJECT'S\Car Controller Securety System\C\Car Controller Securety System.c(0): illegal symbol
                        Error: G:\Electronics\PROJECT'S\Car Controller Securety System\C\Car Controller Securety System.c(81): missing '('

                        کد:
                        Warning: G:\Electronics\PROJECT'S\Car Controller Securety System\C\Car Controller Securety System.c(19): macro '__kbd_port_addr' was redefined

                        دیدگاه


                          #13
                          پاسخ : خطاهای بنده در نوشتن برنامه زبان سی چیه

                          مشکل هشدار را با ویرایش قسمت ماکرو kbd تعریف شده حل شد
                          اما همچنان نمیدونم چرا این دو خطا باقی هست

                          کد:
                          Error: G:\Electronics\PROJECT'S\Car Controller Securety System\C\Car Controller Securety System.c(0): illegal
                          symbol Error: G:\Electronics\PROJECT'S\Car Controller Securety System\C\Car Controller Securety System.c(81): missing '('

                          این رو هم اضافه کنم که تعداد کلیه پرانتزها،آکولادها و نیز کروشه ها باز و بسته آنها به یک نسبت در برنامه تایپ کردم (تعدادشون رو با یک ویرایشگر بررسی کردم) اما همچنان خطاها وجود دارند.

                          دیدگاه


                            #14
                            پاسخ : خطاهای بنده در نوشتن برنامه زبان سی چیه

                            تعریف متغیر و نوشتن define# ها در خارج از تابع main مجاز است. اما مشکل اصلی برنامه شما این است که در خارج از main به نوشتن دستوراتی مانند زیر پرداخته اید:

                            کد:
                            DDRC=0xff;          //output defined for LEDs
                            DDRE=0xf0;          //in-out for Keypad4x4
                            DDRG=0x1f;          //Output for Rellays
                            //LCD module initialization
                            lcd_init(16);


                            این دستورات و مانند آن باید یا در داخل main نوشته شوند و یا در توابع جداگانه قرار بگیرند.
                            اوژن: به معنای افکننده و شکست دهنده است
                            دانایی، توانایی است-Knowledge is POWER
                            برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                            وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                            قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                            اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                            ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                            دیدگاه


                              #15
                              پاسخ : خطاهای بنده در نوشتن برنامه زبان سی چیه

                              نمیدونم چرا Error ها و هشدارها تمامی ندارد
                              کد را در زیر میگذارم اگر کسی از شما لطف کنه و ویرایش اونو انجام بده ممنون میشم

                              کد:
                              /******************************
                              Chip Type    : ATmega128
                              Program Type  : Aplication
                              Clock Frequency : 16.000000 MHZ
                              Memory Model  : non
                              External SRAM Size : non
                              Data Stack Size : non
                              ******************************/
                              #include <mega128.h>
                              #include <stdio.h>
                              #include <delay.h>
                              #define xtal 8000000;
                              
                              // Alphanumeric LCD Module functions
                              #include <lcd.h>
                              #include <kbd.h>
                              #asm
                                .equ __lcd_port=0x18 ;PORTB
                                .equ __kbd_port=0x03 ;PORTE
                              #endasm
                              
                              long int A=54321;          //masters paswoard first value
                              long int J;
                              long int L=12345;          //slave paswoard first value
                              long int M;             //baraye mohasebat (main3)
                              long int N;             //baraye mohasebat (main3)
                              long int P;             //baraye mohasebat (main3)
                              long int Q;             //baraye mohasebat (main3)
                              long int R;             //baraye mohasebat (main3)
                              long int S;             //baraye mohasebat (main3)
                              long int U;             //baraye mohasebat (main3)
                              long int W;             //baraye mohasebat (main3)
                              long int X;             //(main14) 
                              long int Y;             //(maine)&(main4)
                              unsigned char B;          //variables for stored value from peresed button keypad4x4 
                              unsigned char C;          //if C = 11 or 12 then... (main2)
                              unsigned char D;          //
                              unsigned char E;          //baraye mohasebat (main3)
                              unsigned char F;          //baraye mohasebat (main3)
                              unsigned char G=4;         //jahate shomaresh dar if-ha
                              unsigned char H;          //baraye mohasebat (main3)
                              unsigned char I;          //baraye mohasebat (main3)
                              unsigned char x;
                              unsigned char y;
                              unsigned char tohi;         //baraye reset kardane digar moteghayer-ha ex. (tohi is non-value) B=1; -->> B=tohi (reseted B);
                              char O=0;
                              char K=2;
                              char T=0;
                              char Z;               //baraye mohasebat (main3)
                              char Mj1;
                              char buffer_lcd[10];
                              
                              /*
                              zamani ke passwoard slave sahih vared shode bashad vared meno barname
                              be meno miravad ke dar anj moteghayer-haye zir baraye
                              scan keypad4x4 va estefade dar shart-ha bekar miravad.
                              */
                              bit Mjout0;
                              bit Mjout1;
                              bit Mjout2;
                              bit Mjout3;
                              bit Mjout4;
                              bit Mjout5;
                              bit Mjout6;
                              bit Mjout7;
                              bit Mjout8;
                              bit Mjout9;
                              bit Mjoutf2 = 1;
                              bit Mjoutf3 = 1;
                              bit Mjoutf4 = 1;
                              bit Mjoutenter;
                              bit Mjoutstop;
                              
                              /*
                              Tarife meghdar-haye Keypad4x4 dar moteghayere zir
                              */
                              flash char kbd_table[]={1,2,3,12,4,5,6,13,7,8,9,1.,10,0,11,1.};
                              unsigned char code[4][4]={{0,4,8,12},{1,5,9,13},{2,6,10,14},{3,7,11,15}};
                              
                              
                              //Renamed Ports
                              #define ALARM PORTC.0
                              #define YELLOW PORTC.1
                              #define GREEN PORTC.2
                              #define F5 PORTG.0 
                              #define F1 PORTG.1
                              #define F2 PORTG.2
                              #define F3 PORTG.3
                              #define F4 PORTG.4
                              //Renamed Ports
                              
                              
                              void main (void)
                              {
                              
                              DDRC=0xff;          //output defined for LEDs
                              DDRE=0xf0;          //in-out for Keypad4x4
                              DDRG=0x1f;          //Output for Rellays
                              //LCD module initialization
                              lcd_init(16);
                              
                              ALARM=1;
                              
                              
                              _lcd_ready();
                              _lcd_write_data(0xc);
                              lcd_clear();
                              lcd_gotoxy(4,0);
                              lcd_putsf("WELCOME");
                              lcd_gotoxy(2,1);
                              lcd_putsf("CCSS Turned ON");
                              delay_ms(500);
                              //L=12345;G=4;T=0;O=0;K=2;A=54321;
                              }
                               
                               void maine(){
                                 lcd_clear();
                                 lcd_putsf("Inter Password");
                                 lcd_gotoxy(5,1);
                                 _lcd_ready();
                                 _lcd_write_data(0xf);
                                 Y=L;
                               } 
                                 
                               mmain(){
                                  while (1)
                                  {   
                                  B=kbd_table[kbd_get()];
                                  if(B<12){
                                  delay_ms(100);
                                  goto submain;
                                  return 0;
                                  }
                                 }
                                 
                               }
                               
                               submain(unsigned char C;char T,O){
                                 while (1){   
                              
                                  if(B==0){
                                  B=tohi;
                                  C=1;
                                  goto main2;
                              
                                  }
                                  
                                  if(B==4){
                                  B=tohi;
                                  C=0x2;
                                  goto main2;
                                  }
                                  
                                  if(B==8){
                                  B=tohi;
                                  C=0x3;
                                  goto main2;
                                  }
                                  
                                  if(B==1){
                                  B=tohi;
                                  C=0x4;
                                  goto main2;
                                  }
                                  
                                  if(B==5){
                                  B=tohi;
                                  C=0x5;
                                  goto main2;
                                  }
                                  
                                  if(B==9){
                                  B=tohi;
                                  C=0x6;
                                  goto main2;
                                  }
                                  
                                  if(B==2){
                                  B=tohi;
                                  C=0x7;
                                  goto main2;
                                  }
                                  
                                  if(B==6){
                                  B=tohi;
                                  C=0x8;
                                  goto main2;
                                  }
                                  
                                  if(B==0x10){
                                  B=tohi;
                                  C=0x9;
                                  goto main2;
                                  }
                                  
                                  if(B==7){
                                  B=tohi;
                                  C=0x0;
                                  goto main2;
                                  }
                                  
                                  if(B==11){
                                  B=tohi;
                                  C=0x12;
                                  T=3;
                                  goto main2;
                                  }
                                  
                                  if(B==3){
                                  B=tohi;
                                  C=0x11;
                                  O=3;
                                  goto main2;
                                  }
                                  
                                 }
                               }       
                               
                               main2(unsigned char C,E,F,G,H,I;char Z){
                              
                                if(C==11){
                                goto main7;
                                }
                                
                                if(C==12){
                                goto main13;
                                }
                                
                                
                                if(G==4){
                                lcd_gotoxy(2,6);
                                lcd_putsf("*");
                                Z=C;
                                --G;
                                goto mmain;
                                }
                               
                                if(G==3){
                                lcd_gotoxy(2,7);
                                lcd_putsf("*");
                                E=C;
                                --G;
                                goto mmain;
                                }
                                
                                if(G==2){
                                lcd_gotoxy(2,8);
                                lcd_putsf("*");
                                F = C;
                                --G;
                                goto mmain;
                                }
                               
                                if(G==1){
                                lcd_gotoxy(2,9);
                                lcd_putsf("*");
                                H = C;
                                --G;
                                goto mmain;
                                }
                                
                                if(G==0){
                                lcd_gotoxy(2,10);
                                lcd_putsf("*");
                                I=C;
                                G=4;
                                }
                                
                               }
                               
                               main3(long int M,N,P,Q,U,R,S,W;unsigned char E,F,H,I;char z){
                               M=H*10;
                               N=F*100;
                               P=E*1000;
                               U=Z*10000;
                               Q=M+I;
                               R=N+Q;
                               S=P+R;
                               W=U+S;
                               goto main7;
                               } 
                               
                               
                               main8(long int A,L,W;char T,Z){
                               while(1){
                               if(L == A && T == 2){
                               goto main13;
                               }
                               if(L!=W && T==1){
                               goto main13;
                               }
                               if(L == W){
                               ALARM=0;
                               goto main4;
                               }
                               if(L != W){
                               ALARM=1;
                               }
                               goto main5;
                               } 
                               }
                               
                               main4(long int L,Y;char K){
                                lcd_clear();
                                lcd_putsf("ok");
                                lcd_clear();
                                lcd_putsf("Welcome To Menu");
                                GREEN=1;
                                delay_ms(500);
                                goto mjmain;
                                GREEN=0;
                                K = 2;
                                L = Y;
                                goto maine;
                               }
                                
                               main5(char K,buffer_lcd[10]){
                               while(1){
                                if(K == 0){
                                goto main6;
                                }
                                else{
                                lcd_clear();
                                lcd_putsf("your try");
                                lcd_gotoxy(1,10);
                                sprintf(buffer_lcd,"%u4",K);
                                lcd_puts(buffer_lcd);
                                lcd_gotoxy(2,9);
                                lcd_putsf("!ALARM!");
                                --K;
                                goto mmain;
                                }
                               }
                               }
                               
                               main6(long int A,L;char K;unsigned char tohi){
                               lcd_clear();
                               lcd_putsf("Int Master Pass");
                               L=tohi;
                               L = A;
                               K = 0;
                               goto mmain;
                               }
                               
                               main7(long int A,L,W;char O,buffer_lcd[10]){
                               while(1){
                                main11(){
                                if(O==3) {
                                 L=A;
                                 lcd_clear();
                                 lcd_putsf("Int Master Pass");
                                 --O;
                                 goto mmain;
                                }
                                
                                if(O==2 && L==W ){
                                 --O;
                                 lcd_clear();
                                 lcd_putsf("Int New Password");
                                 goto mmain;
                                }
                                
                                if(O==1 ){
                                 L=W;
                                 lcd_clear();
                                 sprintf(buffer_lcd,"%u5",L);
                                 lcd_puts(buffer_lcd);
                                 delay_ms(1000);
                                 lcd_clear();
                                 --O;
                                 goto maine;
                                }
                                
                                if(O==0){
                                 goto main8;
                                }
                                
                                if(O==2 && L!=W ){
                                 lcd_clear();
                                 lcd_putsf("eror");
                                 O=3;
                                 delay_ms(1000);
                                 goto main11;
                                }
                               }
                               }
                              }
                              
                               main13(long int A,L,W;char T,buffer_lcd[10];long int X){
                               while(1){
                                main14(){
                                if(T==3){
                                X = L;
                                L = A;
                                 lcd_clear();
                                 lcd_putsf("Int Master Pass");
                                 --T;
                                 goto mmain;
                                }
                                
                                if(T==2 && A==W){
                                 --T;
                                 lcd_clear();
                                 lcd_putsf("New Master Pass");
                                 goto mmain;
                                }
                                
                                if(T==1){
                                 A=W;
                                 L=X;
                                 lcd_clear();
                                 sprintf(buffer_lcd,"%u5",A);
                                 lcd_puts(buffer_lcd);
                                 delay_ms(1000);
                                 lcd_clear();
                                 --T;
                                 goto maine;
                                }
                                
                                if(T==0){
                                 goto main8;
                                }
                                if(T==2 && A!=W){
                                 lcd_clear();
                                 lcd_putsf("eror");
                                 T=3;
                                 delay_ms(1000);
                                 goto main14;
                                 }
                                }
                                }
                               }
                              
                              
                               mjmain(){
                                lcd_clear();
                                lcd_gotoxy(1,1);
                                lcd_putsf("F1=Door");
                                lcd_gotoxy(1,10);
                                lcd_putsf("F2=Light");
                                lcd_gotoxy(2,1);
                                lcd_putsf("F3=Out1");
                                lcd_gotoxy(2,10);
                                lcd_putsf("F4=Out2");
                                goto mjgetkbd;
                               }
                              
                               mjgetkbd(char Mj1;){
                                while(1){
                                delay_ms(50);
                                 Mj1 = kbd_table[kbd_get()];
                                 if(Mj1 < 16){
                                goto mjhexkeypad;
                                }
                                }
                               }
                              
                               mjhexkeypad(char Mj1){
                                
                                if(Mj1 == 12){
                                goto mjmain1;
                                }
                                
                                if(Mj1 == 13){
                                goto mjmain2;
                                }
                                
                                if(Mj1 == 14){
                                goto mjmain3;
                                }
                                
                                if(Mj1 == 15){
                                goto mjmain4;
                                }
                                
                               }
                               
                               
                               mjmain1(char Mj1;unsigned char tohi){
                                lcd_clear();
                                lcd_gotoxy(1,3);
                                lcd_putsf("F1 Selected");
                                lcd_gotoxy(2,3);
                                lcd_putsf("Open Door");
                                F1=1;
                                delay_ms(15);
                                F1=0;
                                Mj1=tohi;
                                goto mjgetkbd;
                               }
                               
                               mjmain2(bit Mjoutf2){
                               if(Mjoutf2 == 0){
                                lcd_clear();
                                lcd_gotoxy(1,3);
                                lcd_putsf("F2 Selected");
                                lcd_gotoxy(2,7);
                                lcd_putsf("Light OFF");
                                F2=0;
                                Mjoutf2 = 1;
                                goto mjgetkbd;
                                }
                               
                               
                               if(Mjoutf2 == 1){
                                lcd_clear();
                                lcd_gotoxy(1,3);
                                lcd_putsf("F2 Selected");
                                lcd_gotoxy(2,7);
                                lcd_putsf("Light ON");
                                F2=1;
                                Mjoutf2 = 0;
                                goto mjgetkbd;
                                }
                               }
                               
                               mjmain3(bit Mjoutf3){
                               if(Mjoutf3 == 0){
                                lcd_clear();
                                lcd_gotoxy(1,3);
                                lcd_putsf("F3 Selected");
                                lcd_gotoxy(2,7);
                                lcd_putsf("Out OFF");
                                F3=0;
                                Mjoutf3 = 1;
                                delay_ms(10);
                                goto mjgetkbd;
                                }
                              
                               if(Mjoutf3 == 1){
                                lcd_clear();
                                lcd_gotoxy(1,3);
                                lcd_putsf("F3 Selected");
                                lcd_gotoxy(2,7);
                                lcd_putsf("Out ON");
                                F3=1;
                                Mjoutf3 = 0;
                                delay_ms(10);
                                goto mjgetkbd;
                                }
                               }
                               
                               mjmain4(bit Mjoutf4){
                               if(Mjoutf4 == 0){
                                lcd_clear();
                                lcd_gotoxy(1,3);
                                lcd_putsf("F4 Selected");
                                lcd_gotoxy(2,7);
                                lcd_putsf("Out 2 OFF");
                                F4=0;
                                Mjoutf4 = 1;
                                delay_ms(10);
                                goto mjgetkbd;
                                }
                              
                               if(Mjoutf4 == 1){
                                lcd_clear();
                                lcd_gotoxy(1,3);
                                lcd_putsf("F4 Selected");
                                lcd_gotoxy(2,7);
                                lcd_putsf("Out 2 ON");
                                F4=1;
                                Mjoutf4 = 0;
                                delay_ms(10);
                                goto mjgetkbd;
                                }
                               }
                               
                               mjmain5(bit Mjout0){
                               if(Mjout0 == 0){
                                lcd_clear();
                                lcd_gotoxy(1,2);
                                lcd_putsf("0 Selected");
                                lcd_gotoxy(2,7);
                                lcd_putsf("Out3 OFF");
                                F5=0;
                                delay_ms(10);
                                Mjout0 = 1;
                                goto mjgetkbd;
                                }
                              
                               if(Mjout0 == 1){
                                lcd_clear();
                                lcd_gotoxy(1,2);
                                lcd_putsf("0 Selected");
                                lcd_gotoxy(2,7);
                                lcd_putsf("Out3 OFF");
                                F5=1;
                                Mjout0 = 0;
                                delay_ms(0);
                                goto mjgetkbd;
                                }
                               }
                               
                               mjmain6(){
                                lcd_clear();
                                lcd_gotoxy(1,2);
                                lcd_putsf("Enter Selected");
                                lcd_gotoxy(2,2);
                                lcd_putsf("ALL OUT = ON");
                                F2=1;
                                F3=1;
                                F4=1;
                                F5=1;
                                goto mjgetkbd;
                               }
                               
                               mjmain7(){
                                lcd_clear();
                                lcd_gotoxy(1,2);
                                lcd_putsf("STOP Selected");
                                lcd_gotoxy(2,2);
                                lcd_putsf("ALL OUT = OFF");
                                F2=0;
                                F3=0;
                                F4=0;
                                F5=0;
                                goto submain;
                               } 
                              }

                              دیدگاه

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