ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

نمایش نتایج: از 1 به 9 از 9
  1. #1
    2012/06/15
    18
    0

    مشکل در خصوص استفاده از وقفه تغيير وضعيت پورت B در ميکروکنترلر PIC16F877A

    سلام به همه اساتيد
    خيلي خيلي نياز به کمک دارم چون حسابي گير کردم . من وقتي براي وقفه تغيير پورت B برنامه مي نويسم و روي ميکرو پرگرام ميکنم بدون اينکه پورت B رو هيچ گونه تغيير وضعيتي بدم مدام وقفه خودش اجرا ميشه و باز به برنامه برميگرده (تو حلقه ميفته) البته تو نرم افزار پروتئوس اين مشکل زماني ايجاد ميشه که دکمه P.B متصل به يکي از پورت هاي B4 تا B7 رو ميزنم (يعني باز تو حلقه ميفته) پيشاپيش از راهنمايي هاتون ممنونم.
    اينم برناممک
    DEFINE OSC 4
    on interrupt goto ISR
    TRISB=%11110000

    TRISC.2=0
    INTCON=%10001000
    MAIN:
    PAUSE 5
    PORTC.2=1
    PAUSE 1000
    GOTO MAIN
    DISABLE
    ISR:
    PAUSE 50
    PORTC.2=0
    PAUSE 1000
    INTCON.0=0
    PAUSE 50

    RESUME
    ENABLE
    END
  2. #2
    2011/01/21
    ساری - ایران
    150
    7

    پاسخ : مشکل در خصوص استفاده از وقفه تغيير وضعيت پورت B در ميکروکنترلر PIC16F877A

    احتمالا تغییرات ناخواسته مانند نویز بر روی چار پین RB4 الی RB7 دارید. میتونیدPullup رو برای این چهار پین فعال کنید یا با مقاومت های خارجی Pull Down کنید.
  3. #3
    2012/06/15
    18
    0

    پاسخ : مشکل در خصوص استفاده از وقفه تغيير وضعيت پورت B در ميکروکنترلر PIC16F877A

    از توجه شما خيلي ممنون
    اما PULL UP رو فعال کردم ولي نشد علاوه بر اين تو نرم افزار پروتئوس که نويز ناخواسته نداريم مشکل اينجاست که با نرم افزار هم همين مشکل هست. علاوه بر اين براي امتحان کليد فشاري رو تو مدارم از پورت B اساسا قطع کردم و هيچ ورودي و خروجي رو هم به پورت B وصل نکردم ولي باز LED هم تو نرم افزار و هم در حالت عملي مدام چشمک ميزنه. يعني وقفه داره مدام اجرا ميشه.
  4. #4
    2012/05/10
    4
    0

    پاسخ : مشکل در خصوص استفاده از وقفه تغيير وضعيت پورت B در ميکروکنترلر PIC16F877A

    سلام دوست عزیز
    این وقفه وضعیت کنونی چهار بیت بالای پورت B را با وضعیت قبلی مقایسه کرده و اگر تفاوتی بوجود آمده باشد باعث ایجاد وقفه می¬شود. این وقفه با بیت RBIE از ثبات INTCON.3 فعال می¬شود و هنگامیکه این وقفه رخ داد بیت پرچم آن RBIF یک می¬شود در وقفه تغییر پورت B پس از بازگشت از برنامه سرویس وقفه هنوز امکان عدم تطابق مقدار Latch شده با مقدار جدید پایه¬های PORTB وجود دارد، در نتیجه مجددا پرچم RBIF یک شده و برنامه سرویس وقفه دوباره اجرا می¬شود. برای جلوگیری از این شرایط باید در برنامه سرویس وقفه علاوه بر اینکه پرچم RBIF صفر شود عملیات خواندن یا نوشتن بر روی PORTB نیز انجام شود در این صورت دیگر امکان تحریک وقفه بدون تغییر در مقدار PORTB وجود نخواهد داشت.
    نوشته شده از کتاب میکروکنترلر PIC مهندس حسین چهرقانی
  5. #5
    2012/06/15
    18
    0

    پاسخ : مشکل در خصوص استفاده از وقفه تغيير وضعيت پورت B در ميکروکنترلر PIC16F877A

    با تشکر از شما
    همانطور که گفته بوديد مجددا پورت B را هم خواندم هم روش نوشتم به صورت زير (در زير وقفه تغيير پورت B). مشکل در نرم افزار شبيه ساز حل شد ولي در حالت عملي باز بدون هيچ اعمال تحريکي در پورت B وقفه اجرا مي گردد آيا عمل خواندن و نوشتن پورت B را درست انجام داده ام يا نه ؟ :question:

    ON INTERRUPT GOTO VAGHFE
    OPTION_REG=%10100100
    INTCON=%10001000
    : MAIN
    A=PORTB
    Goto MAIN
    DISABLE
    :VAGHFE
    I=I+1

    pause 1000
    PORTB=PORTB
    INTCON.0=0
    PORTB=PORTB
    RESUME
    ENABLE
    END
    البته لازمه بگم بخش هاي مربوط به تعريف متغيير ها را براي کم شدن حجم در بالا نياوردم
  6. #6
    2012/05/10
    4
    0

    پاسخ : مشکل در خصوص استفاده از وقفه تغيير وضعيت پورت B در ميکروکنترلر PIC16F877A

    سلام
    نه متاسفانه عمل خواندن و نوشتن را درست انجام ندادید شما پورت بی را خواندید و روی خود ذخیره کردید و این اصلا درست نیست و عمل خواندن و نوشتن را باید در زیر برنامه وقفه انجام دهید مقاومت بالا کش هم فراموش نشود و فقط خواندن هم کفایت می کند

    C=PORTB
    C یک متغیر می باشد این را در آخرین خط برنامه وقفه بنویسید
  7. #7
    2012/06/15
    18
    0

    پاسخ : مشکل در خصوص استفاده از وقفه تغيير وضعيت پورت B در ميکروکنترلر PIC16F877A

    منظور از آخرین خط برنامه وقفه قبل از resume و یا بعد از enable ؟
  8. #8
    2012/05/10
    4
    0

    پاسخ : مشکل در خصوص استفاده از وقفه تغيير وضعيت پورت B در ميکروکنترلر PIC16F877A

    یکم تلاش کنی پیداش می کنی کار سختی نیست
    موفق باشید
  9. #9
    2012/06/15
    18
    0

    پاسخ : مشکل در خصوص استفاده از وقفه تغيير وضعيت پورت B در ميکروکنترلر PIC16F877A

    با تشکر فراوان از کاربر PICC :applause:
    مشکل حل شد و برنامه زير رو به همه تقديم مي کنم اين برنامه يک تايمر هست که با فشرده شدن دکمه فشاري متصل به پورت B7 وقفه تغيير وضعيت پورت B باعث فعال شدنش شده و ثانيه و دقيقه و ساعت سپري شده رو نشان مي دهد براي ميکرو 16F877A نوشته شده کامپايلر PICBASICPRO هست و براي محاسبه زمان سپري شده از تايمر 1 اين ميکرو بهره مي بره و کاملا دقيق است اوسيلاتور ميکرو را 4 MHZ انتخاب کردم :nice:

    TRISB=%10000001
    I VAR BYTE
    SEC VAR BYTE
    TEMP VAR BYTE
    C VAR BYTE
    TMPW VAR WORD
    MINT VAR BYTE
    HOUR VAR BYTE
    TMPW=64286
    HOUR=0
    MINT=0
    SEC=0
    I=0
    TEMP=0

    DEFINE LCD_DREG PORTD
    DEFINE LCD_DBIT 4
    DEFINE LCD_RSREG PORTD
    DEFINE LCD_RSBIT 3
    DEFINE LCD_EREG PORTD
    DEFINE LCD_EBIT 2
    DEFINE LCD_BITS 4
    DEFINE LCD_LINES 2
    DEFINE LCD_COMMANUS 100
    DEFINE LCD_DATAUS 50
    DEFINE LCD_INITMS=100
    LCDINIT
    FLAGS=0

    ON INTERRUPT GOTO VAGH
    OPTION_REG=%00000100
    INTCON=%11001000
    T1CON=%00100000
    PIE1=%00000001
    TMR1H=TMPW.Byte1
    TMR1L=TMPW.BYTE0
    TRISB=%10000000



    :MAIN
    LCDOUT $FE,2
    LCDOUT $FE,$0E


    IF T1CON.0=1 THEN
    LOW PORTC.3
    LCDOUT #HOUR,",",#MINT,",",#SEC

    IF TEMP>200 THEN
    SEC=SEC+1
    TEMP=0
    ENDIF

    IF SEC=60 THEN
    SEC=0
    LCDOUT $FE,1
    MINT=MINT+1
    HIGH PORTC.3
    PAUSE 500
    ENDIF

    IF MINT=60 THEN
    HOUR=HOUR+1
    MINT=0
    LCDOUT $FE,1
    ENDIF

    LOW PORTC.3
    ENDIF

    Goto MAIN


    DISABLE
    :VAGH
    IF T1CON.0=1 THEN
    TEMP=TEMP+1
    TMR1H=TMPW.Byte1
    TMR1L=TMPW.BYTE0
    PIR1.0=0
    ENDIF

    IF INTCON.0=1 THEN
    T1CON.0=1
    PAUSE 50
    HIGH PORTC.3
    INTCON.0=0
    C=PORTB
    ENDIF



    RESUME
    ENABLE
    END



    کاملا تست شده اگر باهاش مشکل داشتيد با من تماس بگيريد:
    sana.link@gmail.com
    :bye
نمایش نتایج: از 1 به 9 از 9

موضوعات مشابه

  1. تغيير وضعيت کليد
    توسط sadegh-emrah در انجمن Labview
    پاسخ: 7
    آخرين نوشته: 2013/10/29, 10:47
  2. مشکل با وقفه ی پورت کام
    توسط mehdiit در انجمن میکروکنترلرهای AVR
    پاسخ: 5
    آخرين نوشته: 2013/03/29, 12:48
  3. وقفه تغيير پورت B
    توسط darkness.signals در انجمن میکروکنترلرهای PIC
    پاسخ: 16
    آخرين نوشته: 2012/06/21, 23:16
  4. کار نکردن پورت های PIC16F877A
    توسط mrh در انجمن میکروکنترلرهای PIC
    پاسخ: 27
    آخرين نوشته: 2010/03/12, 14:02
  5. تغيير وضعيت پايه ها در ميکرو
    توسط hmz1 در انجمن میکروکنترلرهای AVR
    پاسخ: 1
    آخرين نوشته: 2009/06/04, 18:12

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •