اطلاعیه

Collapse
No announcement yet.

برنامه نویسیه Gosub(لطفا کمک کنید)

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

    برنامه نویسیه Gosub(لطفا کمک کنید)

    سلام عزیزان

    اقایونه گرامی میخاستم ببینم که این برنامه ایی که من نوشتم اصلا کار میکنه یا نه؟تو بسکام که همش میگفت اشتباه میکنی
    $REGFILE="M32DEF.DAT"
    $CRYSTAL= 8000000



    CONFIG PORTA= INPUT
    CONFIG PORTB= OUTPUT
    dim A as Long
    dim B as Long
    dim C as Long

    do


    B=000000000000000000


    if portB.3=1 then A=100000000000000000 ,C=A+B ,jmp C


    loop
    END 'end program



    C:

    PORTB.2=1

    RETURN

    خب تو این برنامه میخام یه متغییریو تعریف کنم که با یه مقداره ثابته B جمع میشه و تو متغییره Cمیریزه که اینجا خیره سرم میخاستم هوشمندش کنمو هر مقداری که Cبشه رو میخاستم با Gosub ها ارجاع بدم به یه زیر برنامه که بسکام میگه اشتباست.شما ها اگه منظورمو متوجه شدین یه روش بگین اینجوری انجامش بدم

    #2
    پاسخ : برنامه نویسیه Gosub(لطفا کمک کنید)

    نوشته اصلی توسط aliraj
    سلام عزیزان

    اقایونه گرامی میخاستم ببینم که این برنامه ایی که من نوشتم اصلا کار میکنه یا نه؟تو بسکام که همش میگفت اشتباه میکنی
    $REGFILE="M32DEF.DAT"
    $CRYSTAL= 8000000



    CONFIG PORTA= INPUT
    CONFIG PORTB= OUTPUT
    dim A as Long
    dim B as Long
    dim C as Long

    do


    B=000000000000000000


    if portB.3=1 then A=100000000000000000 ,C=A+B ,jmp C


    loop
    END 'end program



    C:

    PORTB.2=1

    RETURN

    خب تو این برنامه میخام یه متغییریو تعریف کنم که با یه مقداره ثابته B جمع میشه و تو متغییره Cمیریزه که اینجا خیره سرم میخاستم هوشمندش کنمو هر مقداری که Cبشه رو میخاستم با Gosub ها ارجاع بدم به یه زیر برنامه که بسکام میگه اشتباست.شما ها اگه منظورمو متوجه شدین یه روش بگین اینجوری انجامش بدم
    سلام

    اولا اینکه نام متغیر نمی تونه به عنوان اسم زیر برنامه استفاده بشه که شما این کارو کردین

    دوم هم اینکه اون متغیری که نمی دونم چند تا صفر داره بیشتر از مقدار یه متغیر long هست

    و سوم هم اینکه تو بسکام برای هر دستور باید از دستور دو نقطه استفاده کنی که شما در خط زیر این کارو نکردین
    if portB.3=1 then A=100000000000000000 ,C=A+B ,jmp C

    با اصلاح همه این موارد برنامه کامیل میشه
    برد جوجه کشی:
    مطالعه پست 1 (حتما مطالعه کنید)


    مطالعه پست 2 (برای مطلع شدن از تغییرات برنامه مطالعه کنید)

    دانلود

    توجه:
    این برد نیمه صنعتی و خانگی هست...
    برای صنعتی شدن حتما برد مخصوص خودتون رو بزنید...

    آی دی کانال تلگرامی مربوط به برد جوجه کشی : electr0o0nic@

    دیدگاه


      #3
      پاسخ : برنامه نویسیه Gosub(لطفا کمک کنید)

      نوشته اصلی توسط mohammad...
      سلام

      اولا اینکه نام متغیر نمی تونه به عنوان اسم زیر برنامه استفاده بشه که شما این کارو کردین

      دوم هم اینکه اون متغیری که نمی دونم چند تا صفر داره بیشتر از مقدار یه متغیر long هست

      و سوم هم اینکه تو بسکام برای هر دستور باید از دستور دو نقطه استفاده کنی که شما در خط زیر این کارو نکردین
      if portB.3=1 then A=100000000000000000 ,C=A+B ,jmp C

      با اصلاح همه این موارد برنامه کامیل میشه
      سلام دوست عزیز :nice:
      در جوابه اولا:من میخام که اون متغییر سی .هر مقداری که میشه به یه زیربرنامه خاصه خودش ارجاع پیدا کنه.یعنی میشه اینجوری؟؟؟؟ :sad: :angry: :angry: :angry: :angry: :angry:
      دوم:18تا :nice: :nice: :nice:
      سوم:یعنی برای اجرای دوتا دستور تو یه خط دو نقطه باس بزاریم؟؟؟andبزاریم مشکل پیش میاد؟؟؟؟ :eek: :rolleyes: :rolleyes: :mrgreen: :mrgreen:
      چهارم اینکه ممنون جوابمو میدید :applause: :applause: :applause: :wow:

      دیدگاه


        #4
        پاسخ : برنامه نویسیه Gosub(لطفا کمک کنید)

        نوشته اصلی توسط aliraj
        سلام دوست عزیز :nice:
        در جوابه اولا:من میخام که اون متغییر سی .هر مقداری که میشه به یه زیربرنامه خاصه خودش ارجاع پیدا کنه.یعنی میشه اینجوری؟؟؟؟ :sad: :angry: :angry: :angry: :angry: :angry:
        سلام
        بله میشه ولی اسم زیر برنامه رو تغییر بده مثلا بنویس c_one
        اسم زیر برنامه نباید هم نام متغیر بشه برای همین نمی تونی هم از c به عنوان متغیر استفاده کنی و هم به عنوان زیر برنامه

        دوم هم اینکه اون متغیری که نمی دونم چند تا صفر داره بیشتر از مقدار یه متغیر long هست
        این عدد مقدارش بیشتر از مقدار متغیر long هست
        باید از متغیر 64 بیتی Double استفاده کنی

        و سوم هم اینکه تو بسکام برای هر دستور باید از دستور دو نقطه استفاده کنی که شما در خط زیر این کارو نکردین
        if portB.3=1 then A=100000000000000000 ,C=A+B ,jmp C
        بله برای اینکه بتونی دستورات رو تو یه خط بنویسی باید دستورات رو با دو نقطه از هم جدا کنی

        و اینکه خواهش می کنم دوست عزیز :smile:

        اضافه شده در تاریخ :
        مقدار متغیر شما 64 بیتیه
        اگر دو تا متغیر 64 بیتی رو بخوای با هم جمع کنی نمی تونی تو یه متغیر 64 بیتی دیگه جاش بدی چون عدد شما بزرگه و در صورت جمع دو تا عدد بزرگ حاصل یه عدد بزرگتر میشه که مقدارش بیشتر از 64 بیتیه

        اینم مقدار متغیر 64 بیتیه
        https://en.wikipedia.org/wiki/9223372036854775807
        برد جوجه کشی:
        مطالعه پست 1 (حتما مطالعه کنید)


        مطالعه پست 2 (برای مطلع شدن از تغییرات برنامه مطالعه کنید)

        دانلود

        توجه:
        این برد نیمه صنعتی و خانگی هست...
        برای صنعتی شدن حتما برد مخصوص خودتون رو بزنید...

        آی دی کانال تلگرامی مربوط به برد جوجه کشی : electr0o0nic@

        دیدگاه

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