PDA

View Full Version : Lỗi khi dịch MPASM


disciplepic
11-04-2007, 09:52 AM
Xin được giúp đỡ

Hiện tôi đang sử dụng phần mềm MPLAB IDE v7.41 để viết trình điều khiển cho bộ vi sử lý pic16f684. Tôi đã có các trương trình bằng asm ví dụ viết cho bộ sử lý này nhưng trong quá trình dịch phần mềm MPLINK 4.04 báo lỗi:

"Error - could not find definition of symbol 'LEDREGISTER' in file 'C:\Documents and Settings\IOIT\My Documents\PICkit1\Lesson 5\Asm\pglookup.o'.
Errors : 1"

và tôi khong biết làm ra sao bạn có thể zúp tôi được không? (tôi dùng bộ dịch là Microchip MPASM toolsuite).

Cám ơn rất nhiều.

namqn
11-04-2007, 06:36 PM
Xin được giúp đỡ

Hiện tôi đang sử dụng phần mềm MPLAB IDE v7.41 để viết trình điều khiển cho bộ vi sử lý pic16f684. Tôi đã có các trương trình bằng asm ví dụ viết cho bộ sử lý này nhưng trong quá trình dịch phần mềm MPLINK 4.04 báo lỗi:

"Error - could not find definition of symbol 'LEDREGISTER' in file 'C:\Documents and Settings\IOIT\My Documents\PICkit1\Lesson 5\Asm\pglookup.o'.
Errors : 1"

và tôi khong biết làm ra sao bạn có thể zúp tôi được không? (tôi dùng bộ dịch là Microchip MPASM toolsuite).

Cám ơn rất nhiều.
Đã trả lời bạn bên dientuvietnam.

Thân,

quochung53
15-11-2007, 02:35 PM
Em là dân mới nên không biết cách gởi bài lên diễn đàn, nên hỏi trong đây mong các Anh thông cảm.

E sử dụng MPASM, khi dich chuong trình nó không chuyển bank.

;test chuyen bank
list p=16f877A
#include <p16f877A.inc>

ORG 0X0
GOTO MAIN

ORG 0X5
MAIN
CLRF STATUS
BSF STATUS,RP0

;BANKSEL TRISB

CLRF TRISB

END

đáng lẽ khi CLRF TRISB thì nó phải CLRF 0x86 ở bank1 nhưng nó lại LCRF 0x6 ở bank0:

0007 0186 CLRF 0x6 15: CLRF TRISB

mong các Anh chi dum. phai khai bao lam sao khi dich bằng Microchip MPASM toolsuite để cho nó chuyển đúng bank.
Message[302] E:\PIC\TESTBANK.ASM 15 : Register in operand not in bank 0. Ensure that bank bits are correct

Jerry
16-11-2007, 10:01 AM
Bạn căn cứ vào đâu để nói rằng nó xóa 0x6 ở bank 0? Bạn debug bằng MPLAB SIM vào nhìn thấy như vậy, hay bằng cách nào khác mà bạn thấy như vậy? Theo như đoạn chương trình bạn viết, chắc chắc nó sẽ xóa TRISB ở địa chỉ 0x86. Còn cái message kia chỉ là thông báo cho bạn biết rằng bạn đang thao tác với 1 thanh ghi không phải ở bank 0. Bạn cần chắc chắc đã dựng/xóa các bit chọn bank tương ứng. Tuy nhiên tôi cũng khuyến cáo bạn nên viết thêm lệnh BCF STATUS,RP0 vào trước lệnh END.