اطلاعیه

Collapse
No announcement yet.

تابع نویسی برای کلید

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

    تابع نویسی برای کلید

    سلام :smile:
    من میخوام یه تابع بنویسم که در مورد چک کردن کلیدها باشه با مشخصات زیر:
    5تا کلید دارم:
    یکی برای set کردن، بکی up، یکیdown ، یکیright ،یکیleft
    هرکدام از این کلیدها باید یه کاری انجام بده که اینجا نمیخوام تعریف کنم
    من اومدم کلیدها رو به پورت D وصل کردم میخوام توی تابعی که مینویسم بگم بره و پورت D رو چک کنه و اگر کلیدی زده شده(صفر شده) به من بگه کروم پین هست.
    خودم تا الان تونستم برای هر کلید جداگانه تابع تعریف کنم ولی اینجوری دستوراتی که براش میگم توی توابع دیگه ثابت میشه و نمیشه برای هر کلید توی هر تابعی یک وظیفه در نظر گرفت.
    این کار رو برای منو نویسی میخوام که با هرکلیدی که زده میشه گزینه های روی lcd تغییر کنه ( البته هر گزینه ای که میخوام تغییر کنه باید اول set بشه).
    لطفا اگر کسی کار کرده و یا میدونه کمک کنه

    #2
    پاسخ : تابع نویسی برای کلید

    خوب اینکه خیلی سادست و اصلا نیازی به تابع نیست
    اگه از حلقه WHILE() استفاده کنی راه حل زیر :
    PINx رجیستریست برای همین کار بجای x هم پورت مورد نظر قرار میگیره
    مثلا : PIND.1 این دستور اگه برابر صفر باشه یعنی کلید D.1زده شده

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

    دیدگاه


      #3
      پاسخ : تابع نویسی برای کلید

      این برنامه ای که دارم روش کار میکنم خیلی گسترده هست و ابن کلیدها قراره هرجا یه کاری انجام بده .
      من توی while نوشتم و درست کار کرد حتی توابع جداگانه هم تعریف کردم ولی هیچکدوم به کارم نمیاد .

      دیدگاه


        #4
        پاسخ : تابع نویسی برای کلید

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

        دیدگاه


          #5
          پاسخ : تابع نویسی برای کلید

          من یکی باشم از وقفه برای سرکشی به کلید ها استفاده میکنم و با استفاده از یک جدول و یک روال ثابت در هر لحظه تصمیم میگیرم که چه کاری انجام بشه. اینطوری کلی مشکلات کمتره و کلی هم در حجم کد صرفه جویی میشه.

          دیدگاه


            #6
            پاسخ : تابع نویسی برای کلید

            سلام
            یه نمونه از این کدتونو بزارین
            مثلا 3 تا کلید
            خدایا مرا آن ده که آن به

            دیدگاه


              #7
              پاسخ : تابع نویسی برای کلید

              اولا من یک پیشنهاد برای نحوه کد نویسی دادم.
              ثانیا شما زبون مورد نیاز رو مشخص نکردین.
              ثالثا؛ چند وقت پیش ها نمونه کدی با تقریبا همین مضمون؛ سعی کردم به بیسیک بنویسم که تقدیم میکنم.
              رابعا؛.....چیزی یادم نمیاد! :mrgreen:



              Declare Function MenuReadInt(ByVal W As Word) As Integer
              Declare Function MenuReadItem(ByVal W As Word, ByVal N As Byte, Choice As Integer ) As String
              Declare Sub MenuRun(ByVal Choice As Integer)

              Call HandleMenu(LoadLabel(MainMenu))

              End

              Sub MenuRun(ByVal Choice As Integer)
              Select Case Choice
              Case Choice = 1: HandleMenu(LoadLabel(FileMenu))
              Case Choice = 2: Edit()
              Case Choice = 3: HandleMenu(LoadLabel(FormatMenu))

              Case Choice = 6: NewFile()
              Case Choice = 7: OpenFile()
              End Select
              End Sub


              Sub HandleMenu(Dim MenuData As Word)
              Dim nItems As Byte
              Dim nCur As Byte
              Dim I As Integer
              Dim Temp As Integer
              Dim Choice As Integer

              nCur = 1
              nItems = MenuReadInt(MenuData)
              Do
              For I=1 To nItems
              If I = nCur Then
              Temp = 1
              Else
              Temp = 0
              End If
              Lcdat I, 1, ReadMenuItem(MenuData, I, Choice), Temp
              Temp = GetKey()
              Select Case Temp
              Case Key = Up:
              If nCur = 1 Then nCur = nItems Else nCur = nCur - 1
              Case Key = Down:
              If nCur = nItems Then nCur = 1 Else nCur = nCur + 1
              Case Key = Enter
              MenuRun( Choice )
              End Select
              Next I
              Loop
              End Sub

              Function MenuReadInt(ByVal W As Word) As Integer
              Dim Result As Integer

              Result = CPeek(W)
              Result = Result + (CPeek(W+1)*256)

              ReadInt = Result
              End Function

              Function MenuReadText(ByVal W As Word, ByVal N As Byte, Choice As Integer) As String
              Dim nItems As Integer
              Dim I As Integer
              Dim C As Byte
              Dim Result As String

              nItems = ReadInt(W)
              W = W + 2
              Result = ""
              For I = 1 To N
              Do
              C := CPeek(W)
              W = W + 1
              If C = 0 Then
              Choice = ReadInt(W)
              W = W + 2
              Exit Do
              End If
              Result = Result + Chr(C)
              Loop
              Next I
              MenuReadText = Result
              End Function

              MainMenu:
              Data 5
              Data "File", 1
              Data "Edit", 2
              Data "Format", 3
              Data "View", 4
              Data "Help", 5

              FileMenu:
              Data 4
              Data "New", 6
              Data "Open", 7
              Data "Save", 8
              Data "Save as...", 9



              دیدگاه


                #8
                پاسخ : تابع نویسی برای کلید

                ممنون از همه دوستان :bye
                به جواب رسیدم :wow:

                دیدگاه

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