اطلاعیه

Collapse
No announcement yet.

درخواست کمک جهت راه اندازی pic

Collapse
این موضوع بسته شده است.
X
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    درخواست کمک جهت راه اندازی pic

    با سلام

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

    با تشکر

    STATUS equ 03h
    TRISA equ 85h
    PORTA equ 05h
    TRISB equ 86h
    PORTB equ 06h
    RP0 equ 05H
    ZERO EQU 02H
    ORG 00H
    CLRW
    MOVWF PORTA
    MOVWF PORTB
    BSF STATUS,RP0
    MOVWF TRISB
    BCF STATUS,RP0
    START: MOVF PORTA,1
    BTFSC STATUS,ZERO
    GOTO START
    MOVF PORTA,0
    MOVWF PORTB
    GOTO START
    END
    382

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

    شما در برنامه هیچ پورتی رو به عنوان ورودی تعریف نکردین ؟ اگه منظورتون PORT A هست باید با قرار دادن b'0001111 ' در TRISA اونو به عنوان ورودی تعریف کنید.حالا کلاً این برنامه ی شما قراره چکار کنه؟

    دیدگاه


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

      نوشته اصلی توسط ALI1445

      STATUS equ 03h
      TRISA equ 85h
      PORTA equ 05h
      TRISB equ 86h
      PORTB equ 06h
      RP0 equ 05H
      ZERO EQU 02H
      راستی چرا به جای اینکار از <include <p16f84a.inc# استفاده نمی کنی؟ دیگه این دردسر ها رو نداره.

      دیدگاه


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

        با کدوم زیان برنامه نویس می کنید؟
        من که تو Micro Code Studio دستور Include ندیدم فکر می کنم MPLAB داشته باشه!

        دیدگاه


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

          بله تو MPLAB هست و زبان هم اسمبلی هست include هم به خاطر این گفتم که دیگه مجبور نباشید که مثلاً برای STATUS آدرس 03h رو تعریف کنید چون تو p16f84a.inc تمام این کارا قبلاً انجام شده...

          دیدگاه


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

            با تشکر
            پورت A چون بعد از روشن شدن در حالت DEFAULT بعنوان ورودی است
            پورت A با مقاومت 10 کیلو زمین شده
            پورت B بعنوان خروجی تعریف شده
            وقتی یکی از پایه های پورت A به مثبت وصل می شود پورت متناطر آن با توجه به برنامه یک میشود و هنگامیکه مثبت برداشته می شود پس از چند لحطه خروجی صفر می شود
            چرا خروجی لچ نمی شود فقط همین
            :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted: :twisted:
            382

            دیدگاه


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

              این بدیهیه چون شما یه حلقه درست کردین و در هر بار اجرای این حلقه مقدار پورت A رو درون پورت B میریزید .پس اگه یه پین در PORTA در حالت high قرار گرفت پین متناظر با اون درپورت B حالت high قرار میگیره.آما شما دائماً دارید این حلقه رو اجرا می کنید یعنی اگه اون پین در پورت A در حالت high نباشه مقدار صفر درون W ریخته میشه و متناظر اون پین در پورت B هم در حالت صفر یا low قرار میگیره.پس شما در هربار دارید مقدار جدیدی رو به پورت B میدین پس نباید انتظار LATCH داشته باشید...

              دیدگاه


                #8
                پاسخ : درخواست کمک جهت راه اندازی pic

                START: MOVF PORTA,1
                BTFSC STATUS,ZERO
                GOTO START
                MOVF PORTA,0
                MOVWF PORTB
                GOTO START
                با توجه به برنامه بالا تنها در صورت برقراری شرط صفر بودن پرچم صفر دستور انتقال مقدار پورت a به پورت b اجرا می شود و این در حالتیست که یکی از ورودی های پورت a یک گردد. در غیر این صورت برنامه در لوپ چک پورت a باید باقی بماند و پورت b در مقدار قبلی بصورت لچ شده باقی بماند. قابل ذکر است این برنامه در پروتئوس جواب می دهد ولی در عمل دچار مشکل می شود.

                :surprised: :surprised: :surprised: :surprised: :surprised: :surprised: :surprised: :surprised: :surprised: :surprised: :surprised: :surprised: :surprised:
                382

                دیدگاه


                  #9
                  پاسخ : درخواست کمک جهت راه اندازی pic

                  اگه دقت کنی یا اگه بیشتر با پروتئوس ور بری متوجه می شی که به طور صد در صد جواب نمی ده. چون ممکنه که بعد از چک شدن STATUS,Z و اطمینان از صفر نبودن آن در هنگام اجرای دستور MOVF PORTA,0 پین ورودی بلافاصله صفر شه در نتیجه مقدار صفر درون PORTB قرار میگیره!!!ولی این درصد خطا اونقدر کمه که شما در آزمایش اول یا دوم و یا... متوجه این خطا نمیشید اما هنگام ساخت مدار این مشکل ایجاد میشه...

                  دیدگاه

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