اطلاعیه

Collapse
No announcement yet.

خطا در برنامه c تابلوروان

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

    خطا در برنامه c تابلوروان

    سلام
    این برنامه چندتا خطا داره که من نتونستم پیداشون کنم،(کدویژن خطا میگیره):
    کد:
    Chip type        : ATmega32A
    Program type      : Application
    AVR Core Clock frequency: 16.000000 MHz
    Memory model      : Small
    External RAM size    : 0
    Data Stack size     : 512
    *****************************************************/
    
    #include <mega32a.h>
    #include <delay.h>
    #asm
      .equ_lcd_port=0x1B
    #endasm
    #include <lcd.h>
    #include <stdio.h>
    
    #define columns 40
    #define offset 50
    #define space  6
    #define SPEED  5
    #define NOP   #asm("nop")
    #define DATA  PORTA.0
    #define CLOCK  PORTA.1
    #define STROBE PORTA.2
         
    
    while (1)
       {
       // Place your code here 
       
         const char font[]= {
         0x00,0x00,0x00,0x00,0x00,// space
         0X7F,0x09,0x19,0x29,0x46,// R 
         0X7F,0X49,0X49,0X49,0X41,// E 
         0X61,0X51,0X49,0X45,0X43,// Z
         0X7E,0X11,0X11,0X11,0X7E,// A
         0X42,0X61,0X51,0X49,0X46,// 2
         0X3E,0X51,0X49,0X45,0X3E,// 0
         0X00,0X42,0X7F,0X40,0X00,// 1
         0X18,0X14,0X12,0X7F,0X10,// 4
         };
          
         void scan(char negative);
         void load(char *str);
         void effect();
         
         char text[]="REZA 2014";
         char buffer[1000];
         char display[columns];
         int n;
         void main(void)
         {
          char s;
          DDRA=0XFF;
          load(text);
          while(1)
          {
           for(s=0;s<SPEED;s++)
           scan(0);
          effect();
          }
         }
         //--------------------
         void load(char *str)
         {
          int FontPosition,i,j=0;
          while(*str != 0)
          {
           FontPosition=(int)((*str++)-32)*5;
           for(i=0;i<5;i++)
            buffer[j+i]=font[FontPosition+i];
           j+=space;
           }
         } 
         //----------------------
         void effect()
         {
           register char i;
           for(i=0;i<columns;i++)
            display[i]=display[i+1];
            display[columns-1]=buffer[n];
            n++;
            if(n==(sizeof(text)*5)+offset)n=0;
         }
         //--------------------------
         void scan(char negative)
         {
           char i,j,data;
           for(j=0;j<8;j++){
            STROBE=0;
            CLOCK=1;
            for(i=columns;i>0;i--){
             data=display[i-1];
             if(negative)
              data=~display[i-1];
             data=data>>j;
             DATA=data & 0x01;
             CLOCK=0;
             NOP
             NOP
             CLOCK=1;
           }
          for(i=0;i<8;i++){
          DATA=0;
          if(i==j)
           DATA=1;
          CLOCK=0;
          NOP
          NOP
          CLOCK=1;
          }
          STROBE=1;
          NOP
          NOP
          STROBE=0;
          }
         }
         }
         }
    قبل از دويدن بايد راه رفتن ياد گرفت.

    #2
    پاسخ : خطا در برنامه c تابلوروان

    از; (void scan(char negative
    خطای Declaration syntax error رو میگیره؟

    قبل از دويدن بايد راه رفتن ياد گرفت.

    دیدگاه


      #3
      پاسخ : خطا در برنامه c تابلوروان

      بعد از define ها ، اون while(1) چی میگه اونجا؟؟؟؟؟؟ oo:

      دیدگاه


        #4
        پاسخ : خطا در برنامه c تابلوروان

        نوشته اصلی توسط امیر . م
        بعد از define ها ، اون while(1) چی میگه اونجا؟؟؟؟؟؟ oo:
        اون رو من نزاشتم،کدویروژن چندین خط بعد از include mega.h تا place your code here گزاشته،من include ها رو بعد از mega.h و برنامه رو هم همون جایی که گفته گزاشتم.
        برشدارم؟
        قبل از دويدن بايد راه رفتن ياد گرفت.

        دیدگاه


          #5
          پاسخ : خطا در برنامه c تابلوروان

          کلا while خارج از بدنه تابع اشتباه هست.

          دیدگاه


            #6
            پاسخ : خطا در برنامه c تابلوروان

            قبل از while دستور void main(void) هست،اینجا کپی نشده،
            اررور میده "load" و "scan" تعریف نشدن.
            قبل از دويدن بايد راه رفتن ياد گرفت.

            دیدگاه


              #7
              پاسخ : خطا در برنامه c تابلوروان

              کد:
              #include <mega32a.h>
              #include <delay.h>
              #asm
                .equ_lcd_port=0x1B
              #endasm
              #include <lcd.h>
              #include <stdio.h>
              
              #define columns 40
              #define offset 50
              #define space 6
              #define SPEED 5
              #define NOP  #asm("nop")
              #define DATA  PORTA.0
              #define CLOCK PORTA.1
              #define STROBE PORTA.2
              
                   const char font[]= {
                   0x00,0x00,0x00,0x00,0x00,// space
                   0X7F,0x09,0x19,0x29,0x46,// R
                   0X7F,0X49,0X49,0X49,0X41,// E
                   0X61,0X51,0X49,0X45,0X43,// Z
                   0X7E,0X11,0X11,0X11,0X7E,// A
                   0X42,0X61,0X51,0X49,0X46,// 2
                   0X3E,0X51,0X49,0X45,0X3E,// 0
                   0X00,0X42,0X7F,0X40,0X00,// 1
                   0X18,0X14,0X12,0X7F,0X10,// 4
                   };
                   
                   void scan(char negative);
                   void load(char *str);
                   void effect();
                  
                   char text[]="REZA 2014";
                   char buffer[1000];
                   char display[columns];
                   int n;
                   void main(void)
                   {
                    char s;
                    DDRA=0XFF;
                    load(text);
                    while(1)
                    {
                    for(s=0;s<SPEED;s++)
                     scan(0);
                    effect();
                   }
                   }
                   //--------------------
                   void load(char *str)
                   {
                    int FontPosition,i,j=0;
                    while(*str != 0)
                    {
                     FontPosition=(int)((*str++)-32)*5;
                     for(i=0;i<5;i++)
                      buffer[j+i]=font[FontPosition+i];
                     j+=space;
                    }
                   }
                   //----------------------
                   void effect()
                   {
                    register char i;
                    for(i=0;i<columns;i++)
                     display[i]=display[i+1];
                     display[columns-1]=buffer[n];
                     n++;
                     if(n==(sizeof(text)*5)+offset)n=0;
                   }
                   //--------------------------
                   void scan(char negative)
                   {
                    char i,j,data;
                    for(j=0;j<8;j++){
                      STROBE=0;
                      CLOCK=1;
                      for(i=columns;i>0;i--){
                       data=display[i-1];
                       if(negative)
                        data=~display[i-1];
                       data=data>>j;
                       DATA=data & 0x01;
                       CLOCK=0;
                       NOP
                       NOP
                       CLOCK=1;
                     }
                    for(i=0;i<8;i++){
                    DATA=0;
                    if(i==j)
                     DATA=1;
                    CLOCK=0;
                    NOP
                    NOP
                    CLOCK=1;
                    }
                    STROBE=1;
                    NOP
                    NOP
                    STROBE=0;
                   }
                   }
              برنامه به این شکله(بدون while و main سراسری) ولی بازم سه تا ارور میده،لطفا یکی کمک کنه.
              قبل از دويدن بايد راه رفتن ياد گرفت.

              دیدگاه


                #8
                پاسخ : خطا در برنامه c تابلوروان

                الان دقیقا چه خطایی میده؟
                از کدوم خط؟ متنشو کامل بنویس

                دیدگاه


                  #9
                  پاسخ : خطا در برنامه c تابلوروان

                  با سلام،

                  ارور برنامه شما مربوط به این خط هستش :
                  کد PHP:
                  .equ __lcd_port=0x1B 


                  حالا شما که از LCD استفاده نکردی، چرا تعریفش میکنی؟!

                  صرف نظر از کل ایراداتی که برنامه شما از جهات مختلف داره، این شکلی درست تره!

                  کد:
                  /*****************************************************
                  Chip type        : ATmega32A
                  Program type      : Application
                  AVR Core Clock frequency: 16.000000 MHz
                  Memory model      : Small
                  External RAM size    : 0
                  Data Stack size     : 512
                  *****************************************************/
                  
                  #include <mega32a.h>
                  
                  #include <lcd.h>
                  #include <stdio.h>
                  #include <delay.h>
                  
                  #asm
                    .equ __lcd_port=0x1B
                  #endasm
                  
                  #define columns 40
                  #define offset 50
                  #define space  6
                  #define SPEED  5
                  #define NOP   #asm("nop")
                  #define DATA  PORTA.0
                  #define CLOCK  PORTA.1
                  #define STROBE PORTA.2
                       
                  
                  const char font[]= {
                   0x00,0x00,0x00,0x00,0x00,// space
                   0X7F,0x09,0x19,0x29,0x46,// R 
                   0X7F,0X49,0X49,0X49,0X41,// E 
                   0X61,0X51,0X49,0X45,0X43,// Z
                   0X7E,0X11,0X11,0X11,0X7E,// A
                   0X42,0X61,0X51,0X49,0X46,// 2
                   0X3E,0X51,0X49,0X45,0X3E,// 0
                   0X00,0X42,0X7F,0X40,0X00,// 1
                   0X18,0X14,0X12,0X7F,0X10,// 4
                   };
                        
                  char text[]="REZA 2014";
                  char buffer[1000];
                  char display[columns];
                  int n;
                       
                  //--------------------
                  void scan(char negative);
                  void load(char *str);
                  void effect();
                  
                       //--------------------
                       void main(void)
                       {
                        char s;
                  
                        //-------------	
                        	//lcd_init(16);
                        //lcd_clear();
                  
                        //-------------	
                        DDRA=0XFF;
                        load(text);
                        while(1)
                        {
                         for(s=0;s<SPEED;s++)
                         scan(0);
                        effect();
                        }
                       }
                  
                       //--------------------
                       void load(char *str)
                       {
                        int FontPosition,i,j=0;
                        while(*str != 0)
                        {
                         FontPosition=(int)((*str++)-32)*5;
                         for(i=0;i<5;i++)
                          buffer[j+i]=font[FontPosition+i];
                         j+=space;
                         }
                       } 
                  
                       //----------------------
                       void effect()
                       {
                         register char i;
                         for(i=0;i<columns;i++)
                          display[i]=display[i+1];
                          display[columns-1]=buffer[n];
                          n++;
                          if(n==(sizeof(text)*5)+offset)n=0;
                       }
                  
                       //--------------------------
                       void scan(char negative)
                       {
                         char i,j,data;
                         for(j=0;j<8;j++){
                          STROBE=0;
                          CLOCK=1;
                          for(i=columns;i>0;i--){
                           data=display[i-1];
                           if(negative)
                            data=~display[i-1];
                           data=data>>j;
                           DATA=data & 0x01;
                           CLOCK=0;
                           NOP
                           NOP
                           CLOCK=1;
                         }
                        for(i=0;i<8;i++){
                        DATA=0;
                        if(i==j)
                         DATA=1;
                        CLOCK=0;
                        NOP
                        NOP
                        CLOCK=1;
                        }
                        STROBE=1;
                        NOP
                        NOP
                        STROBE=0;
                        }
                       }
                  مادامی که از شخصی یاد میشود، او و افکارش زنده اند ....

                  Sh_Nourbakhsh@Yahoo.com

                  http://s2.picofile.com/file/7170362468/_Wall_e_.jp

                  دیدگاه


                    #10
                    پاسخ : پاسخ : خطا در برنامه c تابلوروان

                    نوشته اصلی توسط Nourbakhsh Rad
                    با سلام،

                    ارور برنامه شما مربوط به این خط هستش :
                    کد PHP:
                    .equ __lcd_port=0x1B 


                    حالا شما که از LCD استفاده نکردی، چرا تعریفش میکنی؟!

                    صرف نظر از کل ایراداتی که برنامه شما از جهات مختلف داره، این شکلی درست تره!
                    ممنون از پاسختون ولی باز هم همون سه تا خطا هست.
                    قبل از دويدن بايد راه رفتن ياد گرفت.

                    دیدگاه


                      #11
                      پاسخ : خطا در برنامه c تابلوروان

                      نوشته اصلی توسط امیر . م
                      الان دقیقا چه خطایی میده؟
                      از کدوم خط؟ متنشو کامل بنویس
                      Library error:c\cvavreval\lib\stdio.lib(304): a value of type 'flash unsigned int [5]' cant be adsigned to an entity of type 'flash unsigned char*'
                      Library error:c\cvavreval\lib\stdio.lib(310): avalue of type 'flash unsigned int [4]' cant be assigned to an entity of type ' flash unsigned char*'
                      Library error:c cvavreval\lib\stdio.lib(1338): expression must be a pointer to a complete object type
                      قبل از دويدن بايد راه رفتن ياد گرفت.

                      دیدگاه


                        #12
                        پاسخ : پاسخ : خطا در برنامه c تابلوروان

                        نوشته اصلی توسط musefian
                        ممنون از پاسختون ولی باز هم همون سه تا خطا هست.
                        شما مطمئنی که داری از همین کد استفاده میکنی؟!

                        اگر از این کد استفاده میکنی، ممکنه که پروژه ای که ایجاد کردی مشکل داشته باشه و یا اینکه کدویژنت موردی داره، وگرنه این کدی که من گذاشتم هیچ خطایی نمیده ....

                        ضمنا شما از خطوط زیر هیچ استفاده ای نکردی، میتونی حذفشون کنی.

                        #include <lcd.h>
                        #include <stdio.h>
                        #include <delay.h>

                        #asm
                        .equ __lcd_port=0x1B
                        #endasm
                        مادامی که از شخصی یاد میشود، او و افکارش زنده اند ....

                        Sh_Nourbakhsh@Yahoo.com

                        http://s2.picofile.com/file/7170362468/_Wall_e_.jp

                        دیدگاه


                          #13
                          پاسخ : پاسخ : پاسخ : خطا در برنامه c تابلوروان

                          نوشته اصلی توسط Nourbakhsh Rad
                          شما مطمئنی که داری از همین کد استفاده میکنی؟!

                          اگر از این کد استفاده میکنی، ممکنه که پروژه ای که ایجاد کردی مشکل داشته باشه و یا اینکه کدویژنت موردی داره، وگرنه این کدی که من گذاشتم هیچ خطایی نمیده ....

                          ضمنا شما از خطوط زیر هیچ استفاده ای نکردی، میتونی حذفشون کنی.

                          #include <lcd.h>
                          #include <stdio.h>
                          #include <delay.h>

                          #asm
                          .equ __lcd_port=0x1B
                          #endasm
                          از همین کد شما استفاده کردم،این خطها رو که پاک کردم، دیگه هیچ خطایی نمیده،ولی میکرو و تابلو کار نمیکنه،من سخت افزار رو برسی میکنم.یک دنیا تشکر از شما.
                          قبل از دويدن بايد راه رفتن ياد گرفت.

                          دیدگاه


                            #14
                            پاسخ : خطا در برنامه c تابلوروان

                            سخت افزار درست بود.برنامه خطا نمیده ولی کار نمیکنه.PORTA.0 که خروجی دیتا هست خروجی نداره.
                            قبل از دويدن بايد راه رفتن ياد گرفت.

                            دیدگاه


                              #15
                              پاسخ : خطا در برنامه c تابلوروان

                              مسیر کتابخونه ها یا پسوندشون توی کدویزن با بقیه کمپایلرها فرق نمیکنه؟
                              قبل از دويدن بايد راه رفتن ياد گرفت.

                              دیدگاه

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