PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > MPASM

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

MPASM Lập trình bằng hợp ngữ là một việc làm vô cùng vất vả, tuy nhiên, để hiểu và làm việc với vi điều khiển, hợp ngữ trở thành một công cụ khá đắc lực ...

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 16-07-2006, 11:17 PM   #1
Ngoc Du
Đệ tử 1 túi
 
Tham gia ngày: May 2006
Bài gửi: 13
:
Giúp em tìm cách khác phục lỗi trong mplink

Chào các bác!
Em có làm một project dùng MPLAB IDE v7.31 gồm có 4 file .asm; 1 file .inc và một file .LKR .
Khi build all thì có lỗi thông báo như sau các bác giúp em xem tại sao lại có lỗi đó và khắc phục thế nào?
Executing: "C:\Program Files\Microchip\MPASM Suite\mplink.exe" "E:\Output files for pic\NTDV\16C765.LKR" "E:\Output files for pic\NTDV\aMain.o" "E:\Output files for pic\NTDV\bdescript.o" "E:\Output files for pic\NTDV\chidclass.o" "E:\Output files for pic\NTDV\dusb_ch9.o" /m"RCMF.map" /o"RCMF.cof"
MPLINK 4.02, Linker
Copyright (c) 2006 Microchip Technology Inc.
Error - could not find definition of symbol 'PutEP1' in file 'E:\Output files for pic\NTDV\aMain.o'.
Errors : 1


Khi vào help thì được trả lời như sau:
Could not find definition of symbol 'symName' in file `filename'.
A symbol symName is used without being defined in file filename

Cảm ơn các bác trước
Ngoc Du vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-07-2006, 12:28 AM   #2
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Cái symbol 'PutEP1' của bạn được dùng trong 'aMain.asm', nhưng chưa từng được định nghĩa (bằng EQU) ở đâu đó trong 'aMain.asm' hay trong các tập tin .inc mà bạn đã dùng.

Trong tập tin 'P16C765.inc' rõ ràng không có định nghĩa cho ký hiệu này.

Nếu bạn biết địa chỉ của nó, giả sử đó là một thanh ghi, thì bạn có thể định nghĩa nó bằng EQU ngay trong tập tin mà bạn dùng nó.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-07-2006, 12:57 AM   #3
Ngoc Du
Đệ tử 1 túi
 
Tham gia ngày: May 2006
Bài gửi: 13
:
Đúng là PutEP1 em dùng ở 'aMain.asm', PUTEP1 là một macro được khai báo như sau (marco viết trong file 'def.inc')
PUTEP1 macro
PutEP1
global PutEP1
...
return
endm

có một cái macro PUTEP2 cũng được khai báo tương tự như PUTEP1 ở trên và cũng nằm trong file 'def.inc'

PUTEP2 macro
PutEP2
global PutEP2
...
return
endm


Trong file 'aMain.asm' có khai báo
#include "def.inc"
extern PutEP1
extern PutEP2


Và lạ ở một điều nữa là em không sửa gì cái project đó cả mà chỉ buld all lại một lần nữa thì nó báo lỗi sau
Executing: "C:\Program Files\Microchip\MPASM Suite\mplink.exe" "E:\Output files for pic\NTDV\16c765.lkr" "E:\Output files for pic\NTDV\aMain.o" "E:\Output files for pic\NTDV\bdescript.o" "E:\Output files for pic\NTDV\chidclass.o" "E:\Output files for pic\NTDV\dusb_ch9.o" /o"RCMF.cof" /M"RCMF.map"
MPLINK 4.02, Linker
Copyright (c) 2006 Microchip Technology Inc.
Error - could not find definition of symbol 'PutEP2' in file 'E:\Output files for pic\NTDV\aMain.o'.
Errors : 1

Không biết có phải do MLAB IDE hay Mplink có vấn đề hay không

thay đổi nội dung bởi: Ngoc Du, 18-07-2006 lúc 05:31 AM.
Ngoc Du vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-07-2006, 10:44 PM   #4
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Hai cái macro PUTEP1 và PUTEP2 thì ok, nhưng 2 symbol PutEP1 và PutEP2 thì có vẻ không ổn, chúng được khai báo (declare) là global, nhưng lại không được định nghĩa (define). Do đó mới có thông báo lỗi "Could not find definition ...". Cần phân biệt khai báo với định nghĩa.

MPLINK biết được hai symbol đó là symbol toàn cục, nhưng không biết chính xác chúng là cái gì, mang giá trị bao nhiêu.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-07-2006, 05:46 AM   #5
Ngoc Du
Đệ tử 1 túi
 
Tham gia ngày: May 2006
Bài gửi: 13
:
Em cảm ơn bác namqn đã quan tâm giúp đỡ em. Em đã tìm ra nguyên nhân gây lỗi rồi. Đúng là em đã khai báo các nhãn PutEP1 và PutEP2 trong các macro PUTEP1 và PUTEP2 nhưng do em sơ ý chưa gọi đến các macro ở một chỗ bất kỳ nào đó nên đoạn code viết trong macro chưa được tạo ra ở một chỗ bất kỳ nào trong file .o. Trong các macro em lại tạo các chương trình con PutEP1 và PutEP2, các chương trình con này được gọi trong khi macro chưa được gọi một lần nào nên đương nhiên là không tồn tại 2 cái nhãn này trong file .o.
Ngoc Du vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 28-08-2006, 07:00 PM   #6
nily
Nhập môn đệ tử
 
nily's Avatar
 
Tham gia ngày: Oct 2005
Bài gửi: 3
:
các bác ơi giúp em với ,cái này sửa thế nào thế ?
MPLINK 4.04, Linker
Copyright (c) 2006 Microchip Technology Inc.
Error - section '.org_0' can not fit the absolute section. Section '.org_0' start=0x00000000, length=0x00000012
Errors : 1
__________________
nilyforever
nily vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 28-08-2006, 09:23 PM   #7
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi nily View Post
các bác ơi giúp em với ,cái này sửa thế nào thế ?
MPLINK 4.04, Linker
Copyright (c) 2006 Microchip Technology Inc.
Error - section '.org_0' can not fit the absolute section. Section '.org_0' start=0x00000000, length=0x00000012
Errors : 1
Bạn post phần code của bạn lên đi. Linker không thể đặt đoạn code mà bạn đã tạo ra.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 31-08-2006, 06:05 PM   #8
nily
Nhập môn đệ tử
 
nily's Avatar
 
Tham gia ngày: Oct 2005
Bài gửi: 3
:
Đoạn code của em đơn giản thế này thôi .quick buid thi dc rồi mà sao buidall thi báo lỗi
#include <p16f877a.inc> ;file hearder dinh kem
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
;khai bao configuration bit
;-------------------------------------
;Bat dau chuong trinh
;-------------------------------------
ORG 0x000
goto start
start
bsf STATUS,RP0 ;chon bank 2 de cau hinh thanh ghi trisb
bcf STATUS,RP1
clrf TRISB ;cau hinh portb la port ra
bsf STATUS,RP0 ;chon bank 0
bsf STATUS,RP1
movlw b'00110110';gan gia tri cho port b
movwf PORTB
loop
goto loop ;vong lap vo tan de ket thuc chuong trinh
END
__________________
nilyforever
nily vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 31-08-2006, 06:39 PM   #9
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi nily
Đoạn code của em đơn giản thế này thôi .quick buid thi dc rồi mà sao buidall thi báo lỗi
#include <p16f877a.inc> ;file hearder dinh kem
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
;khai bao configuration bit
;-------------------------------------
;Bat dau chuong trinh
;-------------------------------------
ORG 0x000
goto start
start
bsf STATUS,RP0 ;chon bank 2 de cau hinh thanh ghi trisb
bcf STATUS,RP1
clrf TRISB ;cau hinh portb la port ra
bsf STATUS,RP0 ;chon bank 0
bsf STATUS,RP1
movlw b'00110110';gan gia tri cho port b
movwf PORTB
loop
goto loop ;vong lap vo tan de ket thuc chuong trinh
END
Lệnh build all để build một project. Nếu bạn quick build được thì có nghĩa là bạn chỉ build chương trình đơn giản với 1 tập tin .asm thôi. Để dùng lệnh build all thì bạn phải tạo một project, bạn xem hướng dẫn trong tài liệu 'MPLAB IDE Quick Start Guide' (DS51281, phiên bản hiện thời là DS51281F), ở chương 2, về cách tạo một project trong MPLAB IDE.

Link để download:
http://www.microchip.com/Microchip.W...part=SW007002#

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-10-2006, 10:08 AM   #10
Jerry
Đệ tử 5 túi
 
Jerry's Avatar
 
Tham gia ngày: Sep 2006
Bài gửi: 100
:
To nily : Bạn click đúp vào file 16f877.lkr trong phần linker scripts của project ra, sau đó bạn sẽ nhìn thấy dòng chữ này :
CODEPAGE NAME=vectors START=0x00 END=0x0D PROTECTED

Bạn sửa thành :
CODEPAGE NAME=vectors START=0x00 END=0x0020 PROTECTED

sau đó dịch lại, đảm bảo OK.
Jerry vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 10:16 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam