اطلاعیه

Collapse
No announcement yet.

الگوریتم برنامه

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

    الگوریتم برنامه

    با سلام.

    من تو این قسمت برنامه گیر زدم ونمیدونم چکار کنم :angry:

    باید برای 8 لامپ (8 کانال ADC) مقدار 3 رقمی برای هر لامپ تعریف کنم .یعنی بتونم توسط کلیدی لامپی رو که میخوام تنظیم کنم مثلا لامپ پنجم رو انتخاب کنم وسپس مقدار دهی کنم به همین ترتیب
    ادمهای خوب تو eca خیلی پیدا میشه

    #2
    پاسخ : الگوریتم برنامه

    ببخشید ، میشه یه کم بیشتر توضیح بدید :eek:
    دلا خو کن به تنهایی که از تنها بلا خیزد

    دیدگاه


      #3
      پاسخ : الگوریتم برنامه

      اینجوری بگم .توسط وقفهای خارجی .اگر فعال شد تصویر پایین رو روی lcd نشون بده وبعد شروع به تنظیمش کنیم(عدد3رقمی)
      ودرصورت دوباره فعال شدن بره به تنظیم 2 وبه همین ترتیب تا 8 تا(یعنی اگه 3 دفعه اون کلید فشاری فعال شده روی lcd تنظیم مربوط به فیوز 3 رو نشون بده) ، برای کاهش یا افزایش عدد 3 رقمی از وقفه خارجی 0 و1 استفاده کردم.
      من فقط میخوام بدونم باید چکار کنم .تا جایی که امکان داره فقط از 2 وقفه خارجی میتونم استفاده کنم



      حالا الگوریتم چجوری باشه

      تا



      ادمهای خوب تو eca خیلی پیدا میشه

      دیدگاه


        #4
        پاسخ : الگوریتم برنامه

        با سلام
        جناب SAMIN20 شما هنوز یا اسمبلی کار میکنید ؟

        دیدگاه


          #5
          پاسخ : الگوریتم برنامه

          سلام به گلم.


          فقط مشکلم تو الگوریتمه.یعنی یکی بگه چکار کنم.
          ادمهای خوب تو eca خیلی پیدا میشه

          دیدگاه


            #6
            پاسخ : الگوریتم برنامه

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

            دیدگاه


              #7
              پاسخ : الگوریتم برنامه

              اولین و شاید دمه دستی ترین کار (به قول شما الگوریتم ، من زیاد میونه خوبی با این کلمه و فلوچارت ندارم این الگوریتم همون فلوچارت یا فلوچارت همون الگوریتمه یا... ؟) که به ذهنم میرسه بازی با متغیره ها temp هست

              اگه درست متوجه منظورتون شده باشم ، به نظر من بیایید این کار رو بکنید :

              سخت افزار:

              1. دو تا پوش باتون بزارید که یکیش به int0 و اون یکی به int1 متصل شدند
              2. پوش باتون اول(وقفه صفر) سه تا کار میکنه ، کار اول عمل select فیوز و کار دوم عمل افزایش مقدار فیوز و کاهش مقدار فیوز
              3. پوش باتون دوم(وقفه1) یک کار بکنه ، انتخاب نوع عملیات

              نرم افزار:

              1. سه تا متغیر تعریف کنید count_fuse=1 و 0=value_fuse و 0=select مثلا از نوع uchar(ببخشید روال برنامه تو ذهنم حول زبان سی هستش ، نمیتونم رو اسمبلی این جوری تمرکز کنم)
              2. توی روتین وقفه یک بیایید چک کنید که آیا مقدار select کوچک تر از 2 هست یا نه اگر بود یک واحد زیاد اگه نبود مقدارش صفر بشه
              3. حالا توی روتین وقفه صفر بیایید مقدار select رو چک کنید
              اگر select=0 بود :
              بیایید چک کنید که مقدار متغیر count_fuse از 8 کوچکتر هست یا نه اگه بود یک واحد زیاد بشه ودر غیر این صورت مقدارش یک بشه
              اگر select=1 بود :
              بیاد مقدار value_fuse رو چک کنه اگر از مقدار ماکزیمم اش کمتر بود مقدرا متغیر value_fuse یک واحد (اندازه واحد مطابق با اونچه که مد نظرتون هست که از قبل تعریف کرید)زیاد کنه.
              اگر select=2 بود :
              بیاد مقدار value_fuse رو چک کنه اگر از مقدار مینیمم اش بیشتر بود مقدرا متغیر value_fuse یک واحد (اندازه واحد مطابق با اونچه که مد نظرتون هست که از قبل تعریف کرید)کم کنه.

              البته مسئله دیبانس پوش باتون ها رو حتما در نظر دارید دیگه !؟


              دیدگاه


                #8
                پاسخ : الگوریتم برنامه

                با سلام،

                اگر موضوع رو درست متوجه شده باشم، من پیشنهاد میکنم که یک کلید به اسم Menu/Set داشته باشید و یک کلید منفی و یک کلید مثبت، و فقط کلید Menu/Set رو به وقفه متصل کنید.

                الگوریتم برنامه هم با توجه به پیشنهاد بالا، اینطوری باشه : در صورت فشرده شدن کلید Menu/Set و ایجاد وقفه، وارد منوی مورد نظر ( منوی اعمال تنظیمات جدید ) شده و با نمایش تنظیمات فعلی لامپ شماره یک، منتظر دریافت تنظیمات جدید لامپ شماره یک از کلید های مثبت و منفی جهت کاهش و یا افزایش عدد مربوطه شوید، و در صورت فشرده شدن کلید Menu/Set تنظیم نهایی لامپ شماره یک را ذخیره نموده ( احتمالا در ایپرام داخلی میکرو ) و سپس به مرحله دوم یعنی اعمال تنظیمات لامپ شماره دو شده و مشابه لامپ شماره یک عمل کنید و بعد لامپ شماره سه و الی آخر تا لامپ شماره 8 ، و در مرحله هشتم، با فشرده شدن کلید Menu/Set ، پس از ذخیره تنظیمات لامپ شماره 8 ، از منوی تنظیمات خارج شوید و مجددا منتظر دریافت وقفه کلید Menu/Set جهت اعمال تنظیمات بمانید و در این خلال، عملیات عادی مورد نظر را دنبال کنید .......

                بدیهی است که در صورت عدم نیاز به تغییر تنظیمات در یک مرحله خاص، با فشرده شدن کلید Menu/Set این مرحله عملا Skip شده و به مرحله بعدی خواهید رفت.

                بهتر است در صورت ورود به منوی تنظیمات، و عدم فشرده شدن کلیدی در یک بازه زمانی مشخص، کل عملیات Skip شده و میکرو به حالت عادی خود باز گردد.

                در این روش، فشرده شدن کلیدهای منفی و مثبت در حین عملیات عادی میکرو هیچ اثری نداشته و علی السویه خواهد بود ( مگر آنکه شما عملیات خاصی را مد نظر داشته باشید! ) و ورود به منوی تنظیمات با رخداد وقفه کلید Menu/Set خواهد بود و عملا بیش از یک وقفه نیز نیاز نیست.

                در عملکرد عادی مدار، کلید Menu/Set نقش کلید Menu جهت ورود به منوی تنظیمات را داشته و با بروز وقفه عمل میکند و پس از ورود به منوی مزبور، نقش Set را جهت ذخیره تغییرات و همچنین رفتن به منوی بعدی بازی کرده و در این حالت وقفه غیر فعال شده و کلید اشاره شده با اسکن شدن کار خواهد کرد.
                مادامی که از شخصی یاد میشود، او و افکارش زنده اند ....

                Sh_Nourbakhsh@Yahoo.com

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

                دیدگاه


                  #9
                  پاسخ : الگوریتم برنامه

                  ایده من:
                  وقفه 0 رو بزارید برای تغییر عدد(فقط برای زیاد کردن)
                  وقفه 1 تغییر صفحه
                  حالا دو صفحه داریم(یا دو گزینه در همان صفحه)که یکی میاد و اجازه میده مقدار مربوط به فیوز توسط وقفه 0 زیاد بشه گزینه یا صفحه دیگه هم فیوز رو انتخاب میکنه
                  وقفه 0 هم فقط مقدار رو زیاد میکنه به 111 هم رسید بعد از 000 شروع میکنه
                  فکر کنم ایدم مثل بقیه بود با اینکه اونارو درست نخوندم :redface:

                  دیدگاه

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