اطلاعیه

Collapse
No announcement yet.

درست کردن منو

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

    درست کردن منو

    سلام
    من دارم یه پروزه میسازم
    شما تا حالا برای برنامه هاتون منو درست کردین
    میخوام ببنیم چوری میتونم یه منو درست کنم
    من میخوام با ds1307 یه ساعت بسازم و یه تایمر
    میخوام مثلا اگر کلید مد رو یک باز زدم روی کیبردی که به میکرو وصله بره تو مد تنظیمات ساعت
    و اگر دو بار زدم بره تو مد تنظیمات تایمر
    ممنون میشم اگر برنامه ای شبیه این نوشتین کمکم کنید
    وقتی زندگی به سمت دشوار شدن تغییر مسیر میدهد
    شما به سمت قوی تر شدن تغییر مسیر دهید

    #2
    پاسخ : درست کردن منو

    نوشته اصلی توسط mehdi_24
    سلام
    من دارم یه پروزه میسازم
    شما تا حالا برای برنامه هاتون منو درست کردین
    میخوام ببنیم چوری میتونم یه منو درست کنم
    من میخوام با ds1307 یه ساعت بسازم و یه تایمر
    میخوام مثلا اگر کلید مد رو یک باز زدم روی کیبردی که به میکرو وصله بره تو مد تنظیمات ساعت
    و اگر دو بار زدم بره تو مد تنظیمات تایمر
    ممنون میشم اگر برنامه ای شبیه این نوشتین کمکم کنید
    سلام
    اینو با چه زبانی میخواین انجام بدین؟
    برد جوجه کشی:
    مطالعه پست 1 (حتما مطالعه کنید)


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

    دانلود

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

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

    دیدگاه


      #3
      پاسخ : درست کردن منو

      دقیقا منم همچین داستانی دارم ...
      من با زبان بیسیک کد میزنم
      میشه منم کمک کنین ؟؟
      تیم کاوش در مسابقات بین المللی ایران اپن 2016.نمایشی.مین یاب.
      علم را باید در آزمایشگاه یاد گرفت نه در دانشگاه!

      دیدگاه


        #4
        پاسخ : درست کردن منو

        نوشته اصلی توسط sinaitg
        دقیقا منم همچین داستانی دارم ...
        من با زبان بیسیک کد میزنم
        میشه منم کمک کنین ؟؟
        برنامه زیر یه همچین کاری رو می کنه شما وقتی مثلا کلید رو می زنین میشماره برای بار اول یک برای بار دوم باید دستتون رو بردارین بعد دوباره بزارین تا بشماره و همینطور تا آخر میشماره و تو این مدتی که شما کلید رو می زنید متغیر c میشماره که اگه بر فرض می خواین سه بار زده شد و بعد از سه بار دیگه کلید زده نمیشه و متغیر c می فهمه که دیگه نمی خواین کلید رو بزنین و مطابق با شرطایی که تعریف کردین شما رو به برچسباتون هدایت می کنه
        موفق باشید
        [code=vb]
        dim a as byte , b as byte, c as byte
        kilid alias pinb.0
        do
        if kilid=0 then c=0
        if kilid=0 and b=0 then
        incr a
        b=1
        end if
        if kilid=1 and b=1 then b=0

        if a>0 then incr c
        if c>=20 then
        c=0
        if a=1 then goto tanzim1
        if a=2 then goto tanzim1
        if a=3 then goto tanzim1
        if a=4 then goto tanzim1
        a=0
        end if
        loop


        tanzim1:
        a=0
        do
        دستورات
        loop
        return

        tanzim2:
        a=0
        do
        دستورات
        loop
        return

        tanzim3:
        a=0
        do
        دستورات
        loop
        return

        tanzim4:
        a=0
        do
        دستورات
        loop
        return


        [/code]


        اضافه شده در تاریخ :
        اون متغیر c زمانتون هست که هرچه بیشترش کنید دیر به زیر برنامه ها میره و در واقع بیشتر منتظر می مونه که شما کلید رو بزنین
        برد جوجه کشی:
        مطالعه پست 1 (حتما مطالعه کنید)


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

        دانلود

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

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

        دیدگاه


          #5
          پاسخ : درست کردن منو

          سلام
          من یه برنامه برا ساعتم نوشتم که قابلیت انتخاب بهت میده یعنی یه منوی کامل،اگه ااز ال سیدی استفاده می کنید خیلی جالب میشه برنامه وفیلمشو میزارم اگر دلتون خواست استفاده کنید
          لینک فیلم: http://www.aparat.com/v/RsfV8
          برنامه:
          کد:
          [/$regfile = "m8adef.dat"
          $crystal = 4000000
          $hwstack = 40
          $swstack = 16
          $framesize = 32
          $lib "ds1307clock.lib"
          Const Ds1307w = &HD0
          Const Ds1307r = &HD1
          Config Lcdbus = 4
          Config Lcd = 16 * 2
          Cursor Off
          Config Lcdpin = Pin , Db4 = Pinb.3 , Db5 = Pinb.4 , Db6 = Pinb.5 , Db7 = Pinc.0 , Rs = Pinb.1 , E = Pinb.2
          
          Deflcdchar 0 , 224 , 226 , 230 , 238 , 255 , 238 , 230 , 226    ' replace [x] with number (0-7)
          
          
          
          
          Cls
          Config Scl = Portc.5
          Config Sda = Portc.4
          Config Portb.0 = Output
           Config Pind.7 = Input
           Config Pind.5 = Input
            Config Pind.6 = Input
            Config Debounce = 20
          
          Portb.0 = 1
          
          Dim D As Byte
          Dim C As Byte
          Dim B As Byte
          Dim A As Byte
          Dim Second As Byte
          Dim Minute As Byte
          Dim Hour As Byte
          Dim Saat As Byte
          Dim Esaat As Eram Byte
          Dim Dagh As Byte
          Dim Edagh As Eram Byte
          Dim Offmin As Byte
           Dim Offhour As Byte
           Dim Offtime As Byte
           If C <> 12 Then
          I2cstart
          I2cwbyte Ds1307w
          I2cwbyte 7
          I2cwbyte 00010000
          I2cstop
          Second = 0
          I2cstart
          I2cwbyte Ds1307w
          I2cwbyte 0
          I2cwbyte Second
          I2cstop
          C = 12
          End If
           Locate 1 , 3
               Lcd " reading..."
               A = 1
               While A < 3
               Waitms 500
               Portb.0 = 0
               Waitms 500
               Portb.0 = 1
               Incr A
               Wend
          Saat = Esaat
          Dagh = Edagh
          I2cstart
          I2cwbyte Ds1307w
          I2cwbyte 1
          I2cstart
          I2cwbyte Ds1307r
          I2crbyte Minute , Ack
          I2crbyte Hour , Nack
          I2cstop
          Minute = Makedec(minute)
          Hour = Makedec(hour)
          If Saat = Hour Then
          Offmin = Minute - Dagh
          End If
          If Offmin > 0 Then
          Locate 2 , 1
          Lcd Offmin
          Lcd "   ="
          End If
          If Saat <> Hour Then
          Offhour = Hour - Saat
          Offmin = Minute - Dagh
          Cls
          Lcd "offtime="
          Lcd Offhour
          Lcd ":"
          Lcd Offmin
          End If
          Waitms 3000
          
           B = 0
           D = 0
          
          
          Do
          
          
          
          
          I2cstart
          I2cwbyte Ds1307w
          I2cwbyte 0
          I2cstart
          I2cwbyte Ds1307r
          I2crbyte Second , Ack
          I2crbyte Minute , Ack
          I2crbyte Hour , Nack
          I2cstop
          
          Second = Makedec(second)
          Minute = Makedec(minute)
          Hour = Makedec(hour)
          If Saat <> Hour Then
          Saat = Hour
          Esaat = Saat
          Waitms 10
          End If
          If Dagh <> Minute Then
          Dagh = Minute
          Edagh = Dagh
          Waitms 10
          End If
          
           Locate 1 , 1
               Lcd "Time = " ; Hour ; ":" ; Minute ; ":" ; Second ; "   "
          
               Debounce Pind.5 , 0 , Menu , Sub   نگه داشتن برا چند پانیه وظاهر شدن منو
          
          
          
          Loop
          End
          
          
          
          
          
          Menu:
          Cls
          Lcd "select parameter"
          Waitms 1000
          
          Cls
          Locate 1 , 1
          Lcd "minute?"
          Locate 2 , 1
          Lcd "hour?"
          Locate 1 , 10
          Lcd "date?"
          Locate 2 , 9
          Lcd "alarm?"
          
          Do
          Debounce Pind.6 , 0 , Shakhes , Sub
          Debounce Pind.5 , 0 , Khoroj1 , Sub
          If B = 1 Then
          Locate 2 , 7
          Lcd " "
          Locate 1 , 15
          Lcd " "
          Locate 2 , 15
          Lcd " "
          Locate 1 , 8
          Lcd Chr(0)
          
          Elseif B = 2 Then
          
          Locate 1 , 8
          Lcd " "
          Locate 1 , 15
          Lcd " "
          Locate 2 , 16
          Lcd " "
          Locate 2 , 7
          Lcd Chr(0)
          
          Elseif B = 3 Then
          
          Locate 1 , 8
          Lcd " "
          Locate 2 , 7
          Lcd " "
          Locate 2 , 15
          Lcd " "
          Locate 1 , 15
          Lcd Chr(0)
          
          Elseif B = 4 Then
          Locate 1 , 8
          Lcd " "
          Locate 1 , 15
          Lcd " "
          Locate 2 , 7
          Lcd " "
          Locate 2 , 15
          Lcd Chr(0)
          Elseif B > 4 Then
          B = 0
          End If
          Loop Until D = 1
          D = 0
          If B = 1 Then
          Cls
          Lcd "minute="
          Lcd Minute
          Do
          Locate 1 , 8
          Lcd Minute
          Lcd " "
          Debounce Pind.7 , 0 , Afzayesh , Sub
          Debounce Pind.6 , 0 , Kahesh , Sub
          Debounce Pind.5 , 0 , Khoroj1 , Sub
          
          Loop Until D = 1
          D = 0
          
          Elseif B = 2 Then
          
          
          Cls
          Lcd "hour="
          Lcd Hour
          Do
          Locate 1 , 6
          Lcd Hour
          Lcd " "
          Debounce Pind.7 , 0 , Afzayesh2 , Sub
          Debounce Pind.6 , 0 , Kahesh2 , Sub
          Debounce Pind.5 , 0 , Khoroj1 , Sub
          
          Loop Until D = 1
          D = 0
          
          End If
             Hour = Makebcd(hour)
           Minute = Makebcd(minute)
           I2cstart
          I2cwbyte Ds1307w
          I2cwbyte 1
          I2cwbyte Minute
          I2cwbyte Hour
          I2cstop
          Return
          
          
          
           Afzayesh:
          Incr Minute
          If Minute > 59 Then
          Minute = 0
          End If
          
          Return
          
          
          Kahesh:
          Decr Minute
          If Minute = 255 Then
          Minute = 59
          End If
          
          Return
          
          '-----------------------------------------------------------------------
          
          Afzayesh2:
          Incr Hour
           If Hour > 23 Then
           Hour = 0
           End If
          
          Return
          
          Kahesh2:
          Decr Hour
          If Hour = 255 Then
          Hour = 23
          End If
          
          Return
          
          
          
          
          Khoroj1:
          Incr D
          Return
          Shakhes:
          Incr B
          Return
          
          code]

          دیدگاه


            #6
            پاسخ : درست کردن منو

            نوشته اصلی توسط gmaissam
            سلام
            من یه برنامه برا ساعتم نوشتم که قابلیت انتخاب بهت میده یعنی یه منوی کامل،اگه ااز ال سیدی استفاده می کنید خیلی جالب میشه برنامه وفیلمشو میزارم اگر دلتون خواست استفاده کنید
            لینک فیلم: http://www.aparat.com/v/RsfV8
            برنامه:
            کد:
            [/$regfile = "m8adef.dat"
            $crystal = 4000000
            $hwstack = 40
            $swstack = 16
            $framesize = 32
            $lib "ds1307clock.lib"
            Const Ds1307w = &HD0
            Const Ds1307r = &HD1
            Config Lcdbus = 4
            Config Lcd = 16 * 2
            Cursor Off
            Config Lcdpin = Pin , Db4 = Pinb.3 , Db5 = Pinb.4 , Db6 = Pinb.5 , Db7 = Pinc.0 , Rs = Pinb.1 , E = Pinb.2
            
            Deflcdchar 0 , 224 , 226 , 230 , 238 , 255 , 238 , 230 , 226    ' replace [x] with number (0-7)
            
            
            
            
            Cls
            Config Scl = Portc.5
            Config Sda = Portc.4
            Config Portb.0 = Output
             Config Pind.7 = Input
             Config Pind.5 = Input
              Config Pind.6 = Input
              Config Debounce = 20
            
            Portb.0 = 1
            
            Dim D As Byte
            Dim C As Byte
            Dim B As Byte
            Dim A As Byte
            Dim Second As Byte
            Dim Minute As Byte
            Dim Hour As Byte
            Dim Saat As Byte
            Dim Esaat As Eram Byte
            Dim Dagh As Byte
            Dim Edagh As Eram Byte
            Dim Offmin As Byte
             Dim Offhour As Byte
             Dim Offtime As Byte
             If C <> 12 Then
            I2cstart
            I2cwbyte Ds1307w
            I2cwbyte 7
            I2cwbyte 00010000
            I2cstop
            Second = 0
            I2cstart
            I2cwbyte Ds1307w
            I2cwbyte 0
            I2cwbyte Second
            I2cstop
            C = 12
            End If
             Locate 1 , 3
                 Lcd " reading..."
                 A = 1
                 While A < 3
                 Waitms 500
                 Portb.0 = 0
                 Waitms 500
                 Portb.0 = 1
                 Incr A
                 Wend
            Saat = Esaat
            Dagh = Edagh
            I2cstart
            I2cwbyte Ds1307w
            I2cwbyte 1
            I2cstart
            I2cwbyte Ds1307r
            I2crbyte Minute , Ack
            I2crbyte Hour , Nack
            I2cstop
            Minute = Makedec(minute)
            Hour = Makedec(hour)
            If Saat = Hour Then
            Offmin = Minute - Dagh
            End If
            If Offmin > 0 Then
            Locate 2 , 1
            Lcd Offmin
            Lcd "   ="
            End If
            If Saat <> Hour Then
            Offhour = Hour - Saat
            Offmin = Minute - Dagh
            Cls
            Lcd "offtime="
            Lcd Offhour
            Lcd ":"
            Lcd Offmin
            End If
            Waitms 3000
            
             B = 0
             D = 0
            
            
            Do
            
            
            
            
            I2cstart
            I2cwbyte Ds1307w
            I2cwbyte 0
            I2cstart
            I2cwbyte Ds1307r
            I2crbyte Second , Ack
            I2crbyte Minute , Ack
            I2crbyte Hour , Nack
            I2cstop
            
            Second = Makedec(second)
            Minute = Makedec(minute)
            Hour = Makedec(hour)
            If Saat <> Hour Then
            Saat = Hour
            Esaat = Saat
            Waitms 10
            End If
            If Dagh <> Minute Then
            Dagh = Minute
            Edagh = Dagh
            Waitms 10
            End If
            
             Locate 1 , 1
                 Lcd "Time = " ; Hour ; ":" ; Minute ; ":" ; Second ; "   "
            
                 Debounce Pind.5 , 0 , Menu , Sub   نگه داشتن برا چند پانیه وظاهر شدن منو
            
            
            
            Loop
            End
            
            
            
            
            
            Menu:
            Cls
            Lcd "select parameter"
            Waitms 1000
            
            Cls
            Locate 1 , 1
            Lcd "minute?"
            Locate 2 , 1
            Lcd "hour?"
            Locate 1 , 10
            Lcd "date?"
            Locate 2 , 9
            Lcd "alarm?"
            
            Do
            Debounce Pind.6 , 0 , Shakhes , Sub
            Debounce Pind.5 , 0 , Khoroj1 , Sub
            If B = 1 Then
            Locate 2 , 7
            Lcd " "
            Locate 1 , 15
            Lcd " "
            Locate 2 , 15
            Lcd " "
            Locate 1 , 8
            Lcd Chr(0)
            
            Elseif B = 2 Then
            
            Locate 1 , 8
            Lcd " "
            Locate 1 , 15
            Lcd " "
            Locate 2 , 16
            Lcd " "
            Locate 2 , 7
            Lcd Chr(0)
            
            Elseif B = 3 Then
            
            Locate 1 , 8
            Lcd " "
            Locate 2 , 7
            Lcd " "
            Locate 2 , 15
            Lcd " "
            Locate 1 , 15
            Lcd Chr(0)
            
            Elseif B = 4 Then
            Locate 1 , 8
            Lcd " "
            Locate 1 , 15
            Lcd " "
            Locate 2 , 7
            Lcd " "
            Locate 2 , 15
            Lcd Chr(0)
            Elseif B > 4 Then
            B = 0
            End If
            Loop Until D = 1
            D = 0
            If B = 1 Then
            Cls
            Lcd "minute="
            Lcd Minute
            Do
            Locate 1 , 8
            Lcd Minute
            Lcd " "
            Debounce Pind.7 , 0 , Afzayesh , Sub
            Debounce Pind.6 , 0 , Kahesh , Sub
            Debounce Pind.5 , 0 , Khoroj1 , Sub
            
            Loop Until D = 1
            D = 0
            
            Elseif B = 2 Then
            
            
            Cls
            Lcd "hour="
            Lcd Hour
            Do
            Locate 1 , 6
            Lcd Hour
            Lcd " "
            Debounce Pind.7 , 0 , Afzayesh2 , Sub
            Debounce Pind.6 , 0 , Kahesh2 , Sub
            Debounce Pind.5 , 0 , Khoroj1 , Sub
            
            Loop Until D = 1
            D = 0
            
            End If
               Hour = Makebcd(hour)
             Minute = Makebcd(minute)
             I2cstart
            I2cwbyte Ds1307w
            I2cwbyte 1
            I2cwbyte Minute
            I2cwbyte Hour
            I2cstop
            Return
            
            
            
             Afzayesh:
            Incr Minute
            If Minute > 59 Then
            Minute = 0
            End If
            
            Return
            
            
            Kahesh:
            Decr Minute
            If Minute = 255 Then
            Minute = 59
            End If
            
            Return
            
            '-----------------------------------------------------------------------
            
            Afzayesh2:
            Incr Hour
             If Hour > 23 Then
             Hour = 0
             End If
            
            Return
            
            Kahesh2:
            Decr Hour
            If Hour = 255 Then
            Hour = 23
            End If
            
            Return
            
            
            
            
            Khoroj1:
            Incr D
            Return
            Shakhes:
            Incr B
            Return
            
            code]

            سلام دوست عزیز
            این سه خط برنامه کارشون چیه ؟؟
            $hwstack = 40
            $swstack = 16
            $framesize = 32
            امير مسعود مقدم

            دیدگاه


              #7
              پاسخ : درست کردن منو

              نوشته اصلی توسط masoud.moghaddam21

              سلام دوست عزیز
              این سه خط برنامه کارشون چیه ؟؟
              $hwstack = 40
              $swstack = 16
              $framesize = 32
              سلام



              هر دستور برای اجرا نیاز به مقداری فضا ram یا sram میکرو نیاز دارد بخصوص در دستوراتی مانند call یا فانکشن ها و…. برای این کار باید در ابتدا مقادیر و ادرس هایی در رم و اس رم(پشته) ذخیره شود تا میکرو مسیر اصلی اجرا برنامه را گم نکند و بعد از اجرا call به مسیر اصلی باز گردد و روال عادی خود را طی کند و این امر اجتناب ناپذیری هست . به صورت خودکار انجام میگیرد
              حتی اگر شما در دستورات خودتون از call یا go آ‌و… استفاده نکنید خود میکرو برای ا جرا دستورات مدام به بخش ها و آدرس ها مختلف میرود و بعد از اجرا پروسه مورد نظر نیاز دارد به مسیر اصلی برگردد و ادرس قبلی اجرا را داشته باشد

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

              $hwstack : یا به عبارتی فضای سخت افزار پشته میباشد که توسط شما دربرنامه تعیین میشودو مقدار فضای مورد نیاز برای پشته رادر رم میکرو تعیین میکند به عبارتی اگر دربرنامه ها به خصوص برنامه های حجیم میکروی شما اینتراپت بخورد یا مثلا با دستور GOSUB یا call به یک لیبل خاصی برود در ابتدا برنامه محلی آدرسی فعلی برنامه که در حال اجرا ان هست را در پشته ذخیره میکند وبرای این کار ۲ بایت در نظر میگرد و وقتی شما از دستور RETURN استفاده میکنید و میکرو باید به محل قبلی که برنامه اجرا میکرده برود آدرس محل قبلی را دوباره از پشته برمیدارد و به محل قبلی میرود و مقدار پیشفرض برای hw عدد ۳۲ هست حال اگر در برنامه ای دیدید که میکرو بعد از RETURN به جای قبلی باز نمیگردد باید این مقدار را زیاد کرد

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



              swstack: این مقدار برای مقدار دهی نرم افزاری فضای پشته میباشد و وظیفه آن مانند hwstack میباشد اما به طور نرم افزاری مقدار فضا پشته را تعیین میکند و مقدار پیش فرض ان ۱۰ میباشد



              framesize: یا به عبارتی فضایی برای اعداد و حروف در روتین و اجرا برنامه میباشد به عنوان مثال اگر شما در برنامه از دستور print استفاده کنید

              مقداری که در پرینت برای نمایش در نظر گرفته شده ابتدا باید به باینری تبدیل شود سپس ارسال شود و برای تبدیل به یک بافر نیاز هست که مقدار ان توسط framesize تعیین میشود و حداقل مقدار ان ۲۴ میباشد و مقدار پیش فرض ۴۰ میباشد



              اما برای این که بدانید به چه مقدار فضا نیاز دارید و یا درحین اجرا برنامه میبینید که میکرو به خوبی عمل نمیکند یه راه حل بسیار عالی وجود دارد ، با استفاده از کتابخانه "stackcheck.lib" میتوانید به مقدار مورد نیاز برای فضای پشته و… دسترسی پیدا کنیدبرای این کار میتوانید از دستور

              _hw_lowest استفاده کنید در حالت پیش فرض مقدار برگشتی از این دستور&HFFFF میباشد و در حین اجرا مقدار برگشتی توسط دستور _hw_lowest با مقدار &HFFFF مقایسه میشود واگر کمتر باشد باید مقادیر را افزایش داد


              اما اگر میکرو به مقدار فضای نرم افزاری پشته بیشتر نیاز داشته باشدمقدار فضای مورد نیاز برای پشته نرم افزاری را میتوان توسط دستور _sw_lowest بدست اورد و برای مقدار مورد نیاز برای فرم سایز هم میتوان از دستور _fw_highest استفاده نمود.

              دیدگاه


                #8
                پاسخ : درست کردن منو

                میشه یه نمونه کد بذارین که با اون کتابخونه ای که گفتین تلفیق شده باشه و بشه چه مقدار فضا نیاز داریم و طریقه زیاد کردنشم توش باشه؟؟
                ممنون
                تیم کاوش در مسابقات بین المللی ایران اپن 2016.نمایشی.مین یاب.
                علم را باید در آزمایشگاه یاد گرفت نه در دانشگاه!

                دیدگاه


                  #9
                  پاسخ : درست کردن منو

                  متشکرم دوستان
                  من با سی کار میکنم
                  میشه در زبان سی هم نمونه بزارید
                  وقتی زندگی به سمت دشوار شدن تغییر مسیر میدهد
                  شما به سمت قوی تر شدن تغییر مسیر دهید

                  دیدگاه


                    #10
                    پاسخ : درست کردن منو

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

                    دیدگاه


                      #11
                      پاسخ : درست کردن منو

                      نوشته اصلی توسط mehdi_24
                      سلام
                      کسی نمیخواد منو راهنمایی کنه
                      اگه با ماشین وضعیت(State Machine) آشنایی داشته باشی این کار خیلی ساده است. ازم نپرس. اگه دوست داشتی فقط جستجو کن. خودت میفهمی چطوری.

                      دیدگاه


                        #12
                        پاسخ : درست کردن منو

                        سلام من کامل این کار رو روی GLCD انجام دادم لازم داری بگو tel9700@gmail.com

                        دیدگاه


                          #13
                          پاسخ : درست کردن منو

                          در مورد state machine تو کتاب مانو یه مختصری نوشته.
                          برا درست کردن منو قطعا به state machine احتیاج داری.

                          دیدگاه


                            #14
                            پاسخ : درست کردن منو

                            من اینطوری منو درست میکنم که برای هر منو یک ایندکس میدم. اینطوری میتونم راحت توی منو حرکت کنم.
                            برای هر زیر منو هم یک Function مینویسم. توی اون هم مثل منوی بالاتر با ایندکس حرکت میکنم.
                            بعد از خروج از زیر منو ها هم, درواقع return میشم به تنابع منوی قبل
                            یک چیزی شبیه این:
                            کد:
                            void menu()
                            {
                            	while(1)
                            	{
                            		int index=0;
                            		if(Up)
                            		{
                            			index--;
                            			if(index<0) index=3; //tedade item haye menu
                            			//show up menu
                            		}
                            		if(Down)
                            		{
                            			index++;
                            			if(index>3) index=0; //tedade item haye menu
                            			//show down menu
                            		}
                            		
                            		if(keypress)
                            		{
                            			switch(index)
                            			{
                            				case Menu1: call menu1
                            				break;
                            				
                            				case Menu2: call menu2
                            				break;
                            				
                            				case exit: return;
                            				break;
                            			};
                            		}
                            	}
                            }

                            دیدگاه


                              #15
                              پاسخ : پاسخ : درست کردن منو

                              نوشته اصلی توسط reza9735
                              من اینطوری منو درست میکنم که برای هر منو یک ایندکس میدم. اینطوری میتونم راحت توی منو حرکت کنم.
                              برای هر زیر منو هم یک Function مینویسم. توی اون هم مثل منوی بالاتر با ایندکس حرکت میکنم.
                              بعد از خروج از زیر منو ها هم, درواقع return میشم به تنابع منوی قبل
                              یک چیزی شبیه این:
                              کد:
                              void menu()
                              {
                              	while(1)
                              	{
                              		int index=0;
                              		if(Up)
                              		{
                              			index--;
                              			if(index<0) index=3; //tedade item haye menu
                              			//show up menu
                              		}
                              		if(Down)
                              		{
                              			index++;
                              			if(index>3) index=0; //tedade item haye menu
                              			//show down menu
                              		}
                              		
                              		if(keypress)
                              		{
                              			switch(index)
                              			{
                              				case Menu1: call menu1
                              				break;
                              				
                              				case Menu2: call menu2
                              				break;
                              				
                              				case exit: return;
                              				break;
                              			};
                              		}
                              	}
                              }
                              الان همین چیزی که نوشتین یه ماشین وضعیت هستش.
                              آسمون بریم زمین بیام و هر چی بنویسیم همون ماشین وضعیت میشه. کلا این کارا رو با یه ماشین وضعیت Switch Case ساده میشه انجام داد.

                              دیدگاه

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