سلام به همه
من دو تا برنامه خیلی ساده برای مدار زیر نوشتم که با فشار دادن دگمه ای که به Portb.b7 وصله LEDی که به Portb.b0 وصله روشن بشه.

همونطور که میبینین در یکی از برنامه ها تست دگمه رو با دستور BTFSS انجام دادم و در برنامه دیگه با دستور BTFSC و در هر دو برنامه LED روشن میشه و تا اینجا درست.
ولی در برنامه ای که با دستور BTFSS نوشتم LED بعد از اینکه دستم رو از روی دگمه برمیدارم خاموش میشه.
حالا این سوالا برام پیش اومده
با اینکه از دستوری برای خاموش کردن LED استفاده نکردم چطور میشه که LED خاموش میشه؟ یعنی وقتی من یه بیتی رو Set میکنم چطور ممکنه خود به خود Reset بشه؟
ضمنا چطور میشه بعد از دستور BSF که آخرین دستور هست برنامه دوباره وضعیت دگمه رو تست میکنه؟ همونطور که میبینین دستور BSF بیرون حلقه هستش و ضمنا آخرین دستور هم هست و باید طبیعتا برنامه با دستور End کارش رو تموم کنه.
من دو تا برنامه خیلی ساده برای مدار زیر نوشتم که با فشار دادن دگمه ای که به Portb.b7 وصله LEDی که به Portb.b0 وصله روشن بشه.

کد:
CLRF 0x06 BSF 0x03, 5 MOVLW 0xFE MOVWF 0x86 BCF 0x03, 5 START BTFSC 0x06, 7 BSF 0x06, 0 GOTO START END
کد:
CLRF 0x06 BSF 0x03, 5 MOVLW 0xFE MOVWF 0x86 BCF 0x03, 5 START BTFSS 0x06, 7 GOTO START BSF 0x06, 0 END
ولی در برنامه ای که با دستور BTFSS نوشتم LED بعد از اینکه دستم رو از روی دگمه برمیدارم خاموش میشه.
حالا این سوالا برام پیش اومده
با اینکه از دستوری برای خاموش کردن LED استفاده نکردم چطور میشه که LED خاموش میشه؟ یعنی وقتی من یه بیتی رو Set میکنم چطور ممکنه خود به خود Reset بشه؟
ضمنا چطور میشه بعد از دستور BSF که آخرین دستور هست برنامه دوباره وضعیت دگمه رو تست میکنه؟ همونطور که میبینین دستور BSF بیرون حلقه هستش و ضمنا آخرین دستور هم هست و باید طبیعتا برنامه با دستور End کارش رو تموم کنه.
دیدگاه