اطلاعیه

Collapse
No announcement yet.

مشکل در چند مورد برنامه نویسی با بسکام

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

    مشکل در چند مورد برنامه نویسی با بسکام

    سلام
    1-یه do -loop طولانی دارم میخوام وقتی که یه کلید تعریف شده را میزنم از این حلقه خارج بشه البته کلید به وقفه خارجی متصل نیست.(فرض کنید به a5متصل است)
    2-می خوام از یک کیپد و lcd استفاده کنم و مثل ماشین حساب یه دکمه c براش تعریف کنم مثلا حداکثر عدد 3 رقمی تولید بشه که همزمان روی lcd نشان بده و در اخر کار این عدد که بین 0 تا 999 است را درون متغیری داشته باشم.(مثلا 2را میزنم بعد 3 را این بار دو بار c میزنم و عدد 23 تولید شده پاک میشود ودوباره عدد میزنم)

    3-حالا اگه فرض کنید تا هشت عدد همراه با ممیز و منفی بود چطوری باید بنویسم؟

    تشکر پیشاپیش.

    bascom avr atmeg16
    دعا کنید برای من

    چی شد پس لطفا همین حالا!

    #2
    پاسخ : مشکل در چند مورد برنامه نویسی با بسکام

    نوشته اصلی توسط alizard
    سلام
    1-یه do -loop طولانی دارم میخوام وقتی که یه کلید تعریف شده را میزنم از این حلقه خارج بشه البته کلید به وقفه خارجی متصل نیست.(فرض کنید به a5متصل است)
    2-می خوام از یک کیپد و lcd استفاده کنم و مثل ماشین حساب یه دکمه c براش تعریف کنم مثلا حداکثر عدد 3 رقمی تولید بشه که همزمان روی lcd نشان بده و در اخر کار این عدد که بین 0 تا 999 است را درون متغیری داشته باشم.(مثلا 2را میزنم بعد 3 را این بار دو بار c میزنم و عدد 23 تولید شده پاک میشود ودوباره عدد میزنم)

    3-حالا اگه فرض کنید تا هشت عدد همراه با ممیز و منفی بود چطوری باید بنویسم؟

    تشکر پیشاپیش.

    bascom avr atmeg16
    سلام
    شما برای خارج شدن از یک حلقه باید به صورت زیر عمل کنید:
    do
    if pina.0=1 then
    waitms 150
    if pina.0=1 then goto l1
    end if
    loop
    l1:
    به همین راحتی

    دیدگاه


      #3
      پاسخ : مشکل در چند مورد برنامه نویسی با بسکام

      تشکر و منظور من از do-loop طولانی این بود که در حلقه زمان های تاخیری زیادی (هم از نظر تعداد و هم خود زمان تاخیر)وجود دارد و با یک if ساده نمیشه از حلقه خارج شد.مثال میزنم یه حلقه داریم که توی اون 100 تا 20 ثانیه تاخیر وجود داره اگه یه دونه if ساده بگذاریم ممکن برنامه توی تاخیر 20 ثانیه باشه یا برنامه توی خط های قبل یا بعد از if باشه و با فشار دادن کلید در حد 500ms اصلا متوجه نمیشه. (البته توی صورت سوالم مطرح شده که از وقفه های int نمیخوام استفاده کنم)ولی فکر میکنم تعداد چک کردن این دستور باید خیلی بالا بره تا نتیجه ای مثل وقفه را بدهد و میخواهم بدونم چه کار بکنم تا تعداد if های تکراری بالا نره.یه مثال دیگه اگه دستور wait 20رو بکار بردم و ثانیه دهم کلید رو فشار دادم حالا چطوری از حلقه خارج میشه؟

      البته چون من خیلی اماتور هستم سعی میکنم تمام برنامه هایی که با اونها مشکل دارم رو اینجا مطرح کنم تا تعداد پستهام الکی بالا نره و مجتمع باشه.
      دعا کنید برای من

      چی شد پس لطفا همین حالا!

      دیدگاه


        #4
        پاسخ : مشکل در چند مورد برنامه نویسی با بسکام

        سلام دوست عزیز
        وقتی نیاز به پاسخ سریع داری اونوقت نباید از دستورهای تاخیر زیاد مثل wait 20 استفاده کنی
        بسته به نیاز به سرعت پاسخ میتونی دستور رو کوچک کنی مثلا به جای دستور بالا بنویس
        for i = 1 to 200
        waitms 100
        next i
        حالا شما میتونید توی حلقه for شرط خروج رو اضافه کنید

        اگر شرایط شما برگشت پذیر هست یعنی بعد از انجام کار مورد نظر نیاز هست که دوباره ادامه دستور اجرا بشه اونوقت میتونید از interrupt استفاده کنید

        موفق باشی

        دیدگاه

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