اطلاعیه

Collapse
No announcement yet.

مشکل پایه ای باdata type ها در codevision

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

    مشکل پایه ای باdata type ها در codevision


    با سلام
    مشکل اینجاست که دستورات زیر در متغییر cعدد 65535 رو بجای4294967295 ذخیره میکنه!!! و متغیر های a,b هم رو که proteus مقدارشونو نگاه میکنم میگه

    Item (1 bytes at 0xFFFFFF05) not within memory block (0x00000860 bytes) !!!!
    --------------------------------
    #include <mega32.h>

    unsigned char a = 0;
    unsigned int b = 0;

    void main(void)
    {
    unsigned long int c= 4294967295;

    while (1)
    {
    }
    }

    #2
    پاسخ : مشکل پایه ای باdata type ها در codevision

    کدتون درسته. نتیجه هم درسته! میدونین چرا؟ چون کد درست برای اون نتیجه ای که شما میخوایین بگیرین اینه:


    unsigned long int c= 4294967295UL;


    چون اون عدد کذایی رو کامپایلر به عنوان یک عدد int در نظر میگیره و به 65535 میشکندش. اگر میخوایین به کامپایلر حالی کنین این عدد یک عدد 32 بیتی از نوع بدون علامت هست باید حتما پسوند UL رو بهش بچسبونین.
    U برای بدون علامت و L برای 32 بیتی بودن.

    راستی ممکنه این کامپایلر خنگ (چون من کدویژن رو به عنوان یک کامپایلر خوب قبول ندارم) هم چون دیده متغیر a جایی استفاده نشده حذفش کرده باشه.
    در تابعتون یک مقدار بهش بدین ببینین باز هم این مشکل پیش میاد یا نه.

    دیدگاه


      #3
      پاسخ : مشکل پایه ای باdata type ها در codevision

      ممنون از پاسخ سریعتون
      ولی بازم نشد!!!!
      با یه ورژن دیگه codevision هم زدم نشد!!!

      از صبح مشغولشم!!!!

      اینم فایلام یه نگاه بندازید لطفا:
      http://www.4shared.com/file/xxUNswnE/1_online.html

      ممنون

      دیدگاه


        #4
        پاسخ : مشکل پایه ای باdata type ها در codevision

        من با نسخه 2.03.9 استاندارد کار کردم کد درستی تولید کرد:


        .CSEG
        _main:
        ; 0000 001E unsigned long int c = 4294967295UL;
        ; 0000 001F
        ; 0000 0020 while (1)
        SBIW R28,4
        LDI R30,LOW(255)
        ST Y,R30
        STD Y+1,R30
        STD Y+2,R30
        STD Y+3,R30
        ; c -> Y+0

        دیدگاه

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