اطلاعیه

Collapse
No announcement yet.

راهنمایی برای ساخت یک منو با زبان بسکام

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

    راهنمایی برای ساخت یک منو با زبان بسکام

    سلام خدمت اساتید گرامی و دوستان

    من قصد ساخت یک تایمر قابل تنظیم با پنج خروجی رو دارم
    برای تنظیم کردن هم از چهار دکمه up برای اضافه کردن مقادیر ، dwon برای کم کردن مقادیر ، ok برای ثبت و بازگشت به صفحه اصلی برنامه
    (ک تا اینجای برنامه رو میدونم تقریبا باید چیکار کنم )
    و دکمه menu که با هر بار زدن اون وارد یک بخش شد و اون رو تنظیم کرد مثلا بخش اول تنظیم ساعت اصلی ، بخش دوم زمان کار تایمر اول ( یعنی زمان وصل و زمان قطع رله ) و بخش سوم تنظیم زمان کار تایمر دوم و همین طور تا تنظیم زمان کار تایمر 5
    الان نمیدونم چطوری باید همچین منویی ایجاد کنم
    ممنون میشم راهنماییم کنید

    #2
    پاسخ : راهنمایی برای ساخت یک منو با زبان بسکام

    خودم با کلی فکر کردن روی این موضوع یه چیزی به فکرم رسید

    اول یه بایت تعریف کردم که از عدد صفر تا 23 میتونه توش قرار بگیره
    بعد یه حلقه دو و لوپ تعریف کردم و کل برنامه ام رو توش نوشتم
    به این صورت که با هربار زدن سوییچ منو به باید تعریف شده یک واحد اضافه بشه
    بعد چون 23 تا منو و یک صفحه اصلی داشتم با استفاذده از دستور while و wend شرط ورود به هر منو رو عدد تور باید تعریف کردم
    به این صورت که اگه عدد بایت 0 باشه میره تو صفحه اصلی و دستورات داخل حلقه شرطی مربوط رو اجرا میکنه و همیطور تا آخر

    موقع کامپایل کردن که اخطاری نداد
    خدا کنه بعد پروگرام کردن هم خوب کار کنه

    دیدگاه


      #3
      پاسخ : راهنمایی برای ساخت یک منو با زبان بسکام

      نوشته اصلی توسط sorek نمایش پست ها
      خش اول تنظیم ساعت اصلی ، بخش دوم زمان کار تایمر اول ( یعنی زمان وصل و زمان قطع رله ) و بخش سوم تنظیم زمان کار تایمر دوم و همین طور تا تنظیم زمان کار تایمر 5
      الان نمیدونم چطوری باید همچین منویی ایجاد کنم
      سلام
      واسه این دست کارها سعی کن از دستور
      Select x: - Cace
      استفاده کنی
      و توی هر Case مقدار X رو با توجه به کلید فشرده شده فعلی تغییر بدی!
      ◙◙◙◙◙ میخوام به دوستان یه کتاب معرفی کنم! وقت کردید، بخونید - اسمش هست قرآن، سال نشر 10، نویسنده: خدا . ◙◙◙◙◙

      دیدگاه


        #4
        پاسخ : راهنمایی برای ساخت یک منو با زبان بسکام

        نوشته اصلی توسط sorek نمایش پست ها
        سلام خدمت اساتید گرامی و دوستان

        من قصد ساخت یک تایمر قابل تنظیم با پنج خروجی رو دارم
        برای تنظیم کردن هم از چهار دکمه up برای اضافه کردن مقادیر ، dwon برای کم کردن مقادیر ، ok برای ثبت و بازگشت به صفحه اصلی برنامه
        (ک تا اینجای برنامه رو میدونم تقریبا باید چیکار کنم )
        و دکمه menu که با هر بار زدن اون وارد یک بخش شد و اون رو تنظیم کرد مثلا بخش اول تنظیم ساعت اصلی ، بخش دوم زمان کار تایمر اول ( یعنی زمان وصل و زمان قطع رله ) و بخش سوم تنظیم زمان کار تایمر دوم و همین طور تا تنظیم زمان کار تایمر 5
        الان نمیدونم چطوری باید همچین منویی ایجاد کنم
        ممنون میشم راهنماییم کنید
        من منوی خودمو میزارم برات . شما ببین مثل همین راه بنداز. فقط سعی نکن اگه به جایی پرش کردی با دستورات پرش از همون راه بری به کد main اصلیت. سعی کن به هرجا پرش کردی با return از همونجا برگردی.

        کد:
        Reset Watchdog
        Stop Watchdog
        A = 0                                                       'baraye cheke meqdar dehi dobare az eeprom dar avale barname
        Menuvalue = 0
           Do                                                       'dar in halqe tanzimate marbote neveshte khahad shod
        
              If Menuvalue = 255 Then Menuvalue = 0
        
              If Menuvalue = 0 Then
                Cls
                Lcd "1:Park floor"
        
                Do
                 Debounce Keyup , 0 , Subkeyup , Sub
                 Debounce Keydown , 0 , Subkeydown , Sub
                 Debounce Enter , 0 , Subkeyenter , Sub
                 Debounce Menu , 0 , Subkeymenu , Sub
                 If Flagkeyup = 1 Then
                  Flagkeyup = 0
                  Incr Menuvalue
                  Exit Do
                 Elseif Flagkeydown = 1 Then
                  Flagkeydown = 0
                  Decr Menuvalue
                  Exit Do
                 Elseif Flagkeyenter = 1 Then
                  Flagkeyenter = 0
                  Flagenter = 1
                  Exit Do
                 Elseif Flagkeymenu = 1 Then
                  Exit Do
                 End If
                Loop
        
                If Flagenter = 1 Then
                  Flagenter = 0
                  Call Subparkfloor
                End If
        
        
              Elseif Menuvalue = 1 Then
                Cls
                Lcd "2:park Time"
        
                Do
                 Debounce Keyup , 0 , Subkeyup , Sub
                 Debounce Keydown , 0 , Subkeydown , Sub
                 Debounce Enter , 0 , Subkeyenter , Sub
                 Debounce Menu , 0 , Subkeymenu , Sub
                 If Flagkeyup = 1 Then
                  Flagkeyup = 0
                  Incr Menuvalue
                  Exit Do
                 Elseif Flagkeydown = 1 Then
                  Flagkeydown = 0
                  Decr Menuvalue
                  Exit Do
                 Elseif Flagkeyenter = 1 Then
                  Flagkeyenter = 0
                  Flagenter = 1
                  Exit Do
                 Elseif Flagkeymenu = 1 Then
                  Exit Do
                 End If
                Loop
        
                If Flagenter = 1 Then
                  Flagenter = 0
                  Call Subtimegopark
                End If
        اینم منوی اصلی من. البته نصفشو برات گذاشتم تا الگوریتم رو متوجه شی.

        و اینم زیر منو توابعی که از منو اصلی لینک میشن.:


        کد:
        Sub Subparkfloor
         Locate 2 , 8
         Lcd Setgoparkingfloor1
        
         Do
          Do
            Debounce Keyup , 0 , Subkeyup , Sub
            Debounce Keydown , 0 , Subkeydown , Sub
            Debounce Enter , 0 , Subkeyenter , Sub
            Debounce Menu , 0 , Subkeymenu , Sub
            If Flagkeyup = 1 Then
               Flagkeyup = 0
               If Setgoparkingfloor1 <> 5 Then Incr Setgoparkingfloor1
               Locate 2 , 8
               Lcd Setgoparkingfloor1
               Exit Do
            Elseif Flagkeydown = 1 Then
               Flagkeydown = 0
               If Setgoparkingfloor1 <> 0 Then Decr Setgoparkingfloor1
               Locate 2 , 8
               Lcd Setgoparkingfloor1
               Exit Do
            Elseif Flagkeyenter = 1 Then
               Flagkeyenter = 0
               Flagenter = 1
               Exit Do
            Elseif Flagkeymenu = 1 Then                             'baraye khoroj az in item menu
               Setgoparkingfloor1 = Egoparkingfloor
               Exit Do
            End If
          Loop
        
          If Flagkeymenu = 1 Then
             Flagkeymenu = 0
             Exit Do
          End If
        
          If Flagenter = 1 Then
           Cls
           Lcd "saved"
           Flagenter = 0
           Egoparkingfloor = Setgoparkingfloor1
           Waitms 300
           Exit Do
          End If
        
         Loop
        
        End Sub
        '_______________________________
        
        Sub Subtimegopark
         Locate 2 , 5
         Lcd Settimetogoparkingfloor1 ; " minuts"
         Tempgam = Settimetogoparkingfloor1 / Consttimeparkgam
         Do
          Do
            Debounce Keyup , 0 , Subkeyup , Sub
            Debounce Keydown , 0 , Subkeydown , Sub
            Debounce Enter , 0 , Subkeyenter , Sub
            Debounce Menu , 0 , Subkeymenu , Sub
            If Flagkeyup = 1 Then
               Flagkeyup = 0
               If Tempgam <> Constmaxtimepark Then Incr Tempgam     'mamolan tedade moredenazr ra midanim , va tedad morede nazar ra taqsim bar Consttimeparkgam mi****m , va Constmaxtimepark bedast miayad.
               Settimetogoparkingfloor1 = Tempgam * Consttimeparkgam
               Lowerline
               Lcd "                 "
               Locate 2 , 5
               Lcd Settimetogoparkingfloor1 ; " minuts"
               Exit Do
            Elseif Flagkeydown = 1 Then
               Flagkeydown = 0
               If Tempgam <> 0 Then Decr Tempgam
               Settimetogoparkingfloor1 = Tempgam * Consttimeparkgam
               Lowerline
               Lcd "                 "
               Locate 2 , 5
               Lcd Settimetogoparkingfloor1 ; " minuts"
               Exit Do
            Elseif Flagkeyenter = 1 Then
               Flagkeyenter = 0
               Flagenter = 1
               Exit Do
            Elseif Flagkeymenu = 1 Then                             'baraye khoroj az in item menu
               Settimetogoparkingfloor1 = Etimetogoparkingfloor
               Exit Do
            End If
          Loop
        
          If Flagkeymenu = 1 Then
             Flagkeymenu = 0
             Exit Do
          End If
        
          If Flagenter = 1 Then
           Cls
           Lcd "saved"
           Flagenter = 0
            Etimetogoparkingfloor = Settimetogoparkingfloor1
           Waitms 300
           Exit Do
          End If
        
         Loop
        
        
        End Sub
        
        '______________________________

        موفق باشید.
        به سمت نور خورشيد حرکت کن،تو ميتوني تابش خورشيد رو حس کني ،حتي اگه کور باشي.
        (پيش به سوي هدف)

        دیدگاه


          #5
          پاسخ : راهنمایی برای ساخت یک منو با زبان بسکام

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



          البته هنوز چیز هایی هست که توش رعایت نکردم مثل دستور sleep برای مواقعی که برق میره تا از باطری بکاپ استفاده کنه
          که چون وارد نبودم فعلا روش تمرکز نکردم و سعی کردم مین اصلی برنامه رو دست کنم
          ولی نمی دونم چرا بعد از فعال شدن برنامه میره تو منو اصلی و همون جا گیر میکنه و به منو های دیگه نمیره


          نوشته اصلی توسط ubub نمایش پست ها
          سلام
          واسه این دست کارها سعی کن از دستور
          Select x: - Cace
          استفاده کنی
          و توی هر Case مقدار X رو با توجه به کلید فشرده شده فعلی تغییر بدی!
          طبق دستور شما هم عمل کردم ولی فرقی نکرد یعنی همیطور تو منو اصلی گیر میکرد


          نوشته اصلی توسط hosseinam نمایش پست ها
          من منوی خودمو میزارم برات . شما ببین مثل همین راه بنداز. فقط سعی نکن اگه به جایی پرش کردی با دستورات پرش از همون راه بری به کد main اصلیت. سعی کن به هرجا پرش کردی با return از همونجا برگردی.
          یک سری از کد های برنامه شما رو بلد نیستم مثل elseif و exit do اصلا فکر نمیکردم exit do وجود داشته باشه
          در کل یه چیز هایی فهمیدم

          تشکر میکنم از این که برای من وقت گذاشتین

          اگه زحمتی نمیشه به برنامه ای که من نوشتم یه نگاهی بندازین و ایرادش رو بگیرین
          واقعا ممنون میشم

          دلیل: ادغام دو پست برای جلوگیری از اسپم

          نوشته اصلی توسط hosseinam نمایش پست ها

          [CODE]Reset Watchdog
          Stop Watchdog
          فایده استفاده از
          Watchdog
          چیه ؟



          دیدگاه


            #6
            پاسخ : راهنمایی برای ساخت یک منو با زبان بسکام

            نوشته اصلی توسط sorek نمایش پست ها
            سلام دوستان
            من برنامه ایی که خودم نوشتم و سعی کردم کامل باشه این برنامه هست :



            البته هنوز چیز هایی هست که توش رعایت نکردم مثل دستور sleep برای مواقعی که برق میره تا از باطری بکاپ استفاده کنه
            که چون وارد نبودم فعلا روش تمرکز نکردم و سعی کردم مین اصلی برنامه رو دست کنم
            ولی نمی دونم چرا بعد از فعال شدن برنامه میره تو منو اصلی و همون جا گیر میکنه و به منو های دیگه نمیره




            طبق دستور شما هم عمل کردم ولی فرقی نکرد یعنی همیطور تو منو اصلی گیر میکرد




            یک سری از کد های برنامه شما رو بلد نیستم مثل elseif و exit do اصلا فکر نمیکردم exit do وجود داشته باشه
            در کل یه چیز هایی فهمیدم

            تشکر میکنم از این که برای من وقت گذاشتین

            اگه زحمتی نمیشه به برنامه ای که من نوشتم یه نگاهی بندازین و ایرادش رو بگیرین
            واقعا ممنون میشم

            دلیل: ادغام دو پست برای جلوگیری از اسپم



            فایده استفاده از
            Watchdog
            چیه ؟



            خداییش حجم برنامه زیاد نیست یک قسمتش رو اگه اشکال یابی کنید بقیه اش مثل همه

            دیدگاه


              #7
              پاسخ : راهنمایی برای ساخت یک منو با زبان بسکام

              نوشته اصلی توسط sorek نمایش پست ها
              سلام دوستان
              من برنامه ایی که خودم نوشتم و سعی کردم کامل باشه این برنامه هست :



              البته هنوز چیز هایی هست که توش رعایت نکردم مثل دستور sleep برای مواقعی که برق میره تا از باطری بکاپ استفاده کنه
              که چون وارد نبودم فعلا روش تمرکز نکردم و سعی کردم مین اصلی برنامه رو دست کنم
              ولی نمی دونم چرا بعد از فعال شدن برنامه میره تو منو اصلی و همون جا گیر میکنه و به منو های دیگه نمیره




              طبق دستور شما هم عمل کردم ولی فرقی نکرد یعنی همیطور تو منو اصلی گیر میکرد




              یک سری از کد های برنامه شما رو بلد نیستم مثل elseif و exit do اصلا فکر نمیکردم exit do وجود داشته باشه
              در کل یه چیز هایی فهمیدم

              تشکر میکنم از این که برای من وقت گذاشتین

              اگه زحمتی نمیشه به برنامه ای که من نوشتم یه نگاهی بندازین و ایرادش رو بگیرین
              واقعا ممنون میشم

              دلیل: ادغام دو پست برای جلوگیری از اسپم



              فایده استفاده از
              Watchdog
              چیه ؟



              از برنامه شما راستش چیزی سردرنیاوردم چون اصلا نفهمیدم کجا به کجاست و اسم متغییر ها هم واضح نبوده. خانایی رو خیلیی دقت کن.
              ولی الگوریتم کار به این صورته که شما باید داخل یه do loop باشین و بیاین دائما چک کنید که کدوم دکمه فشار داده شد. حالا با فشار دادن یه دکمه - میکرو میره داخل یه تابع مثلا جهت بالا و پرچم (flagup ) رو یک میکنه و بر میگرده به همون حلقه . حالا داخل همون حلقه شما دارین چک میکنید که فلان پرچم یک شده یا نه . اگه یک شده باید فراخانی کنید به تابع مخصوص عملیات جهت بالا و اونجا هم باید بندازینش داخل یه حلقه و حالا دوباره مثل این روند ادامه بدید و تنظیمات مربوطه رو انجام بدید و در نهایت که اگه برفرض دکمه ی کنسل زده شد بره فلگ پرچم رو یک کنه و برگرده به همون حلقه و با دستور if بیاد این فلگ چک بشه و اگه یک بود با exit do از حلقه خارج شه و برگرده به حلقه قبلی و از اونجا هم با exit do بیاد از حلقه خارج شه و در آخر هم همه ی فلگ هارو صفر کنید.
              امیدوارم منظورمو تونستم انتقال داده باشم.

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

              موفق باشید.
              به سمت نور خورشيد حرکت کن،تو ميتوني تابش خورشيد رو حس کني ،حتي اگه کور باشي.
              (پيش به سوي هدف)

              دیدگاه

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