اطلاعیه

Collapse
No announcement yet.

خواندن پورت میکرو ؟؟؟

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

    خواندن پورت میکرو ؟؟؟

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

    این برنامه مقدماتی
    $regfile = "m32def.dat"
    $crystal = 8000000
    Config Porta = Input
    'Config Portd = Input
    Config Portb = Output تا اینجا برنامه معرفی میکر و کریستال کاری آن و پرت های ورودی و خروجی


    Porta = &B00000000
    'Portd = &B00000000 تو این قسمت برنامه پورت ها رو اول برنامه صفر کردیم
    Portb = &B00000000

    '............................................ .......................


    Dim A0 As Byte
    Dim D0 As Byte
    Dim A As Byte
    Dim D As Byte
    Dim Da As Byte حالاتو این قسمت بر نامه متغیر تعریف کردیم
    A = 0
    D = 0
    A0=0
    D0=0 حالا کفتم متغیر ها در اول برنامه صفر باشه

    Do

    D0 = Pind
    A0 = Pina
    A = A0
    D = D0 حالا کفتم پوت AوD اعدادشون رو تو یک متغیر بریزن

    If A = 16 Then Gosub A2 (((((( مشکل از اینجا شروع میشه این شرط من اجرا می شه و لی بقیه نمی دو نم چرا اجرا نمی شه تو قسمت مجازی بسکام آزمایش کردم هنجا جواب می ده ولی در عمل جواب نمی ده)))))((B00010000))))


    If D= 4 Then Gosub A1 این شرط هم اجرا نمی شه اصلا اگر شرط ما برای دو پورت باشه اجرا نخواهد شد نمی دو نم منظور من به شرط پایینی هم است (((( B00000100))))


    If A = 0 And D = 1 Then Gosub A1 این هم وضعیت این دو پورت پورت D (((( B00000001)))) این هم وضعیت پورت A (((( B00000000))))

    Loop
    End


    A1:
    'Print "a1"
    'Print A
    'Print D

    Portb = &B00001100

    Return



    A2:
    'Print "a2"
    Portb = &B00001010
    'Print A
    'Print D
    Return

    A3:
    'Print "a3"
    Portb = &B00010010
    'Print A
    'Print D
    Return

    A11:
    'Print "a11"
    Portb = &B00001000





    'Print A
    'Print D
    Return
    A33:
    'Print "a33"
    'Print A
    'Print D
    Portb = &B00000010
    Return
    l



    فقت مشکل من این هست که چرا شرطهایی که کفتم برقرار نمی شه


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

    http://www.eca.ir/forum2/index.php/topic,10159.0.html


    یه وقت رو تشکر کلیک نکنیدآ‌ها،جیزه!!

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

    آقا این چیزایی که نوشتی همه قر و قاتی شده
    بهتر نیست فایل سورس رو بذاری؟

    دیدگاه


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

      سلام دوست عزیز
      کدهائی که نوشتید یه کوچولو اشکال داره
      دو تا پورت ورودی در نظر گرفتید(پورت a,d) ولی کدمربوط به پیکره بندی پورت d رو به توضیح تبدیل کردی
      خط 4ام برنامه تون رو اصلاح بکنید
      شما اینطوری نوشتی
      'Config Portd = Input
      سمی کولن رو حذف بکن
      Config Portd = Input

      مرحله بعد پورت های خروجی تو بهش مقدار 0 دادی
      Porta = &B00000000
      Portd = &B00000000

      وقتی پورت رو بصورت خروجی پیکره بندی می کنی با دادن مقدار به رجیستر PORT مقدار پایه های خروجی رو تنظیم می کنی
      ولی وقتی پورت رو بصورت ورودی پیکره بندی می کنی با یک کردن هر یک از بیت های PORT مقاومت بالاکش داخلی رو فعال می کنی
      سوال : مقادیر روی پورت ورودی از کجا ارسال میشه ؟ از رو کلید یا نه از یه سخت افزار دیگه
      جواب این سوال کمک می کنه که شما تصمیم بگیرید که نیاز دارید مقاومت بالاکش فعال باشه و یا نه مقاومت بالاکش فعال نباشه( پایه های ورودی امپدانس بالا باشه)


      یه مشکل دیگه ای که توی برنامه تون دارید اینکه بعد از اینکه پورت های ورودی تون رو خونید شرط if تون رو می تونی به شکل زیر بنویسی

      If A = 16 Then
      Gosub A2
      elseIf D= 4 Then
      Gosub A1
      elseIf A = 0 And D = 1 Then
      Gosub A1
      endif

      دیدگاه


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

        ددوستان منونن از راه نماییی شما بزرگواران من این که آخری که گفتین رو آزمایش می کنم جوابش رو می گم جواب داد یا نه

        البته برنامه من تو قسمت مجازی بسکام خوب جواب می ده فقط وقتی که پرو گرمش می کنم رو میکرو انگار هیچ شرطی که داده اش از دو پورت باشه اجرا نمیشه
        مثل ای((نIf A = 0 And D = 1 Then Gosub A1)) آخه چرا . برم این سوال اگر بخاطر آن مشکله کوچولویی که دوستان گفتن فکر نم کنم
        این سوال که چرا این کار چرا انجام نمی شه من را کشته :cry2:؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
        کسی کوه را برداشت که از سنگ ر یزه ها شروع کرد

        http://www.eca.ir/forum2/index.php/topic,10159.0.html


        یه وقت رو تشکر کلیک نکنیدآ‌ها،جیزه!!

        دیدگاه


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

          نوشته اصلی توسط رضا حاجی زاده
          سلام دوست عزیز
          کدهائی که نوشتید یه کوچولو اشکال داره
          دو تا پورت ورودی در نظر گرفتید(پورت a,d) ولی کدمربوط به پیکره بندی پورت d رو به توضیح تبدیل کردی
          خط 4ام برنامه تون رو اصلاح بکنید
          شما اینطوری نوشتی
          'Config Portd = Input
          سمی کولن رو حذف بکن
          Config Portd = Input

          مرحله بعد پورت های خروجی تو بهش مقدار 0 دادی
          Porta = &B00000000
          Portd = &B00000000
          آقا رضا حاجی زاد ممنون که جواب دادین و لی من این قسمتی که شما گفتین رو متوجه نشدم می شه توضیح بیشتر بدین

          من در اول برنامه دو ورودی تعریم کردم و این دو وردی رو صفر کرم تامقاومت پول پ هم صفر بشه و هم نویز گرفته بشه آیا این قسمت مشکلی ایجاد می کنه ؟؟
          کسی کوه را برداشت که از سنگ ر یزه ها شروع کرد

          http://www.eca.ir/forum2/index.php/topic,10159.0.html


          یه وقت رو تشکر کلیک نکنیدآ‌ها،جیزه!!

          دیدگاه


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

            سورس اصلی رو بذار بی توضیح
            .
            .
            .

            دیدگاه


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

              این برنامه هیچ یک از این برنامه شرط هایش برقرار نمی شه دوست عزیز
              :read:

              $regfile = "m32def.dat"
              $crystal = 8000000

              Config Porta = Input
              Config Portd = Input
              Config Portb = Output


              Porta = &B00000000
              Portd = &B00000000
              Portb = &B00000000

              ''''''''&# 039;'''''''&#03 9;'''''''' ''''''''&# 039;'''''''&#03 9;'''''''' ''''''''&# 039;'''''''&#03 9;''
              Waitms 600
              Dim A As Byte
              Dim D As Byte
              ''''''''&# 039;'''''''&#03 9;'''''''' ''''''''&# 039;'''''''&#03 9;'''''''' ''''''''&# 039;'''''''&#03 9;''
              Do

              D = Pind
              A = Pina
              If A = 16 And D = 0 Then Gosub A1

              If A = 0 And D = 16 Then Gosub A1

              Loop
              End
              ''''''''&# 039;'''''''&#03 9;'''''''' ''''''''&# 039;'''''''&#03 9;'''''''' ''''''''&# 039;'''''''&#03 9;''
              A1:
              Print "a1"
              Print A
              Print D
              Return
              A2:
              Print "a2"
              Print A
              Print D
              Return
              A3:
              Print "a3"
              Print A
              Print D
              Return

              A11:
              Print "a11"
              Print A
              Print D
              Return
              A33:
              Print "a33"
              Print A
              Print D
              Return

              ین هم سرسش
              http://www.4shared.com/file/250385721/73b70b3e/_2__1.html
              کسی کوه را برداشت که از سنگ ر یزه ها شروع کرد

              http://www.eca.ir/forum2/index.php/topic,10159.0.html


              یه وقت رو تشکر کلیک نکنیدآ‌ها،جیزه!!

              دیدگاه


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

                مگه پایه های TXD و RXD رو استفاده نکردی؟ پس چطور portd.0 , portd.1 رو ورودی تعریف کردی؟
                من پورت d رو به c تغییر دادم ، هر دو تا شرط کار کرد

                دیدگاه


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

                  نوشته اصلی توسط hamid67
                  مگه پایه های TXD و RXD رو استفاده نکردی؟ پس چطور portd.0 , portd.1 رو ورودی تعریف کردی؟
                  من پورت d رو به c تغییر دادم ، هر دو تا شرط کار کرد
                  خیلی خیلی منون از آقا حمید .

                  منظور شما این است چون در رو ی پرت d پورت سریال یعنی rxd و txd وجود دارد نمیشه پورت d رو به عنوان وردی معرفی و استفاده کرد ؟
                  آیا شما برنامه رو روی میکرو پروگرم کرده اید و جواب گرفتین یا نه تو محیط مجازی بسکام ؟
                  کسی کوه را برداشت که از سنگ ر یزه ها شروع کرد

                  http://www.eca.ir/forum2/index.php/topic,10159.0.html


                  یه وقت رو تشکر کلیک نکنیدآ‌ها،جیزه!!

                  دیدگاه


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

                    هیچ کدوم!!
                    محیط مجازی سلطان پروتئوس!!

                    دیدگاه


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

                      بله این که دیگه تست کردن نداره

                      پورت رو عوض کنید البته با غیر فعال کردن Jtag برای استفاده از پورت C به عنوان I/O

                      بدرود
                      .
                      .
                      .

                      دیدگاه


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

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

                        http://www.eca.ir/forum2/index.php/topic,10159.0.html


                        یه وقت رو تشکر کلیک نکنیدآ‌ها،جیزه!!

                        دیدگاه


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

                          خوب با یه مقاومت باید صفر کنی یا میتونی مقاومت داخلی مربوط به هر پین رو فعال کنی.

                          دی دی آراو از این جور حرفا...

                          موفق باشی.
                          .
                          .
                          .

                          دیدگاه

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