PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   MPASM (http://www.picvietnam.com/forum/forumdisplay.php?f=34)
-   -   Help....lệnh bsf trong MPLAB (http://www.picvietnam.com/forum/showthread.php?t=10640)

binhbk247 13-08-2011 12:41 AM

Help....lệnh bsf trong MPLAB
 
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


Múi giờ GMT. Hiện tại là 03:38 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam