PDA

View Full Version : Help....lệnh bsf trong MPLAB


binhbk247
13-08-2011, 12:41 AM
Ví dụ em có 1 đoạn code như thế này

#include p16f877a.inc
__config _hs_osc & _wdt_off & _lvp_off

count equ 0x20

org 0x00
goto main
main
banksel trisb
clrf trisb
banksel portb
clrf portb
movlw d'2'
movwf count
bsf portb,count
goto $
end

Mục đích của em là set bit RB2 lên mức 1 nhưng khi mô phỏng chương trình lại set bit RB0 lên mức 1. Anh chị nào giải thích giúp em với được ko ạ..???? Thanks a lot

phatcddt08a
17-08-2011, 09:59 AM
mà bạn viết không sai mà hơi dài bsf portb,2 là dc rồi,

itanium7000
17-08-2011, 10:42 AM
Bạn viết sai rồi, mình chưa biết về PIC nhưng theo mình hiểu thì chỉ thị BSF mà bạn sử dụng trên với argument là thanh ghi count thì sẽ không còn đúng. BSF chỉ chấp nhận argument là bit (từ 0 đến 7) chứ không phải là byte (thanh ghi count).

Khi tham số không nằm trong phạm vi cho phép, BSF tự động sử dụng bit 0 nên kết quả của bạn là RB0 lên mức 1.

Vì vậy bạn có thể sử dụng:
BSF PORTB, 2 (hoặc: BSF PORTB, RB0)

Chắc bạn đang tìm cách BSF PORTB với bit không định trước?

ladykiller
20-11-2011, 11:26 PM
bsf portb,count lệnh này lạ quá chắc trong thanh ghi portb không có cái bít nào tên "count" nên nó không hiểu
ví dụ là dùng tên bít: bsf status,z thì chắc nó hiểu vì trong thanh ghi status có bit tên z

binhthuong2903
23-04-2012, 03:04 AM
bác itanium7000 nói đúng đấy, theo tôi lúc nắp mạch thật chắc chẳng có led nào sáng cả
vì đoạn code trên bạn đã biến count thành 1 điện chỉ của 1 thanh ghi

kidmaster08
09-09-2012, 10:51 AM
muon the phải
count equ 2 cái đã
asem không như C đâu bạn