nó báo lỗi thế này khi dịch
MPLINK 4.04, Linker
Copyright (c) 2006 Microchip Technology Inc. Error - Absolute code section '.org_2' must start at a word-aligned address. Errors : 1 BUILD FAILED: Sat Jul 21 21:08:03 2007 file ASM thì ko báo lỗi gì ,nhưng khi link thì lỗi như vậy ,mấy anh chỉ giùm ,đang thử sài MPASM . |
Trích:
Thân, |
code hơi dài copy của ng khác để thử
Code:
;******************************************************** project gồm 3 file (đã add vô) : led.asm (file trên) ,p18f4550.inc ,18f4550.lkr khi dịch thì output như sau : Executing: "C:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p18F4550 "led.asm" /l"led.lst" /e"led.err" /o"led.o" /c- Executing: "C:\Program Files\Microchip\MPASM Suite\MPLink.exe" "C:\Documents and Settings\miti\Desktop\pic\18F4550.lkr" "C:\Documents and Settings\miti\Desktop\pic\led.o" /o"test2.cof" /M"test2.map" MPLINK 4.04, Linker Copyright (c) 2006 Microchip Technology Inc. Error - Absolute code section '.org_2' must start at a word-aligned address. Errors : 1 BUILD FAILED: Sun Jul 22 11:43:42 2007 còn quá trình assembly thì ko có lỗi nào. Anh chỉ giùm:D |
Code:
org 0 ;Reset Vector |
Trích:
Executing: "C:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p18F4550 "led.asm" /l"led.lst" /e"led.err" /o"led.o" /c- Executing: "C:\Program Files\Microchip\MPASM Suite\MPLink.exe" "C:\Documents and Settings\Minh Tien\Desktop\pic\18F4550.lkr" "C:\Documents and Settings\Minh Tien\Desktop\pic\led.o" /o"test2.cof" /M"test2.map" MPLINK 4.04, Linker Copyright (c) 2006 Microchip Technology Inc. Error - section '.org_1' can not fit the absolute section. Section '.org_1' start=0x00000004, length=0x00000220 Errors : 1 BUILD FAILED: Mon Jul 23 09:41:31 2007 hay anh nào ra tay post giùm em project bất kỳ của 18f ,miễn là dịch ko lỗi để em còn biết dg mò |
Mình đoán bạn copy code của 16F đổi sang 18F, tổ chức bộ nhớ chương trình hai dòng này khác nhau. Với 16F vector 0x04 là vector ngắt, còn 2 vector ngắt của 18F ở 0x08 và 0x18, do đó code thường bắt đầu ở 0x2a.
Bạn thử đoạn code này xem sao. Code:
|
có lẽ anh nói đúng ,hồi trưa ,em đã thử dời đoạn Main sang vị trí mới ,ở 100h thì nó ko có lỗi gì ,ra luôn file HEX
và cái vụ config nó , hình như trc giờ chưa / ít ai trong PIC VN nói về nó ( chỉ nói về 16f ) ,và tập lệnh nữa ,hinh như coi trọng 16f ,bỏ quên 18f :D ko hiểu sao ,có khi nó đang chạy thì nó dừng ,(em đã tắt WDT ) |
nó báo lỗi những dòng lệnh :
movwf LATB, a những dòng kết thúc bằng chữ "a" nó nói a chưa dc định nghĩa ,nhưng cái này đúng cú pháp mà |
Trích:
Về chuyện cấu hình, PIC18F có khá nhiều từ cấu hình, và các cấu hình cũng thay đổi khá nhiều theo họ chip. Thậm chí các cụm bit cùng một ý nghĩa nhưng có nhiều họ đặt tên khác nhau. Do đó, dùng chip nào thì xem chip đó. Vì lý do các cấu hình cho PIC18 phức tạp mà Microchip đã viết hẳn ra 1 tập tin hướng dẫn cấu hình đi kèm C18 (trong thư mục con 'doc' của thư mục cài đặt C18) và một tập tin khác ở dạng pdf là 'PIC18 Configuration Setting Addendum' (DS51537) có thể download từ trang web của Microchip. Tập lệnh của PIC18 có thể tham khảo như một phần của tài liệu 'PIC18C Family Reference Manual' (DS39500), có thể download từ trang web của Microchip. Thân, |
xóa chữ a đi thì chương trình chạy bt ,chắc nó coi như 16f
cấu hình ,em vô menu chỉnh trực tiếp luôn ,cũng OK Tập lệnh có trong datasheet ,em mới vừa tìm dc Cảm ơn anh Sẵn cho em hỏi luôn ,nếu mã viết cho 16f mà sài cho 18f thì cần lưu ý / sửa những chỗ nào Em có 1 file ASM <của Microchip >mà nó ko có mậy cái vụ org gì hết ,vậy thì khi dịch và nạp thì sao ,nó cũng xài ngắt |
Trích:
nếu trong đoạn chương trình trên có xài ngắt ,mà ISR lại rất dài ,thì ta viết như thế nào ,có phải thế này ko : ORG 0 goto main ORG 0x18 goto ISR ORG 0x2a ISR ....... ...... retfie main ..... ..... đúng ko anh ? chỗ này quan trọng vì ko qua nó thì cũng ko có file HEX chắci ai cũng gặp thế này khi sài 18f |
Trích:
Thân, |
unbanked RAM (0x70-0x7F) là của 16f ,khai báo như sau
unbanked udata_shr W_s res 1 Temp res 1 anh chỉ cho : khi sửa lại cho 18f thì mình sửa thế nào :) |
Trích:
Code:
udata_acs |
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 |
Em học PIC16 chưa được bao lâu. Do tự tìm hiểu nên có nhưng lỗi rất hay gặp nhưng ko thể nào giải thích nỗi. Hôm nay, em gõ y nguyên một đoạn code vô tình kiếm được vào mplab, nó báo lỗi thế này :
Error - section '.org_0' can not fit the absolute section. Section '.org_0' start=0x00000004, length=0x00000046 Errors : 1 Link step failed. BUILD FAILED: Thu Nov 22 21:26:50 2007 Nó chỉ báo lỗi như thế, nhưng bên trên lại không thấy dòng error nào. Kinh nghiệm của em là cứ bỏ dòng ORG 0000 đi là ok. Nhưng hôm nay, chương trình này sử dụng ngắt nên trước đó xài ORG 0x0004, bây giờ bỏ ORG 0000 cũng vô tác dụng. Quả thật em không hiểu vì sao nữa. Bê y nguyên của người ta vào mà vẫn không chạy được. Rất mong mọi người giúp đỡ và giảng giải chổ này giùm em. Chân thành cảm ơn. |
Trích:
Thân, |
Đây là toàn bộ chương trình mà em kiếm được.
Code:
;=================================================================================================== |
Và đây là lỗi mplab báo :
Code:
Clean: Deleting intermediary and output files. |
À quên, em xin nói rõ thêm : khi em tạo một project trong malab thì tức nhiên nó sẽ khai báo sẵn một số thứ như vecto ngắtv.v...Trong các trường hợp đó cứ gõ ORG 0000 trong chương trình chính của mình là báo lỗi như trên. Em nghĩ có lẽ vì có các khai sẵn của mplab rồi nên chương trình ko bắt đầu từ 0000 nữa, vậy báo lỗi là đúng và em xóa đi, chương trình OK liền.
Còn khi tạo một project mà em xóa tất cả những khai báo mặc nhiên của mplab thì chương trình không bao giờ dịch được dù em gõ đúng hoàn toàn không sai một từ so với chương trình mẫu. Lỗi nó cũng báo giống như trên. Đoạn chương trình trên em gõ vào mplab khi xóa hết các khai báo mặc nhiên của mplab.Nói chung đó là tất cả những gì trên trang soạn thảo chương trình của em, không có các khai báo sẵn của mplab. |
Tôi dùng Project Wizard để tạo ra một project mới, chọn PIC16F877A, chọn bộ công cụ ngôn ngữ là MPASM, sau đó tạo một thư mục mới cho project, và chấp nhận các thiết lập khác của MPLAB. Sau đó tôi tạo một tập tin .asm mới trong MPLAB và copy toàn bộ source code của bạn vào một tập tin đó, lưu lại và thêm tập tin đó vào project. Quá trình biên dịch diễn ra thành công, với các warning như đã xuất hiện trong trường hợp của bạn. Tôi dùng MPLAB 7.60.
Bạn thử làm lại theo các bước mà tôi đã mô tả xem sao, nếu vẫn không biên dịch thành công thì tôi sẽ nói thêm về các biện pháp khác. Phần khai báo biến của bạn nên viết như sau để tránh các warning [207]: Code:
cblock 0x20 |
Trời, làm theo những bước mà anh Nam nói, quả thật chương trình dịch rất ngon, không còn một lỗi nào cả. Cảm ơn anh Nam rất nhiều.
À, em cũng đã đặt câu hỏi này bên diễn đàn khoa Điện của DHBK HCM mà chưa thấy ai trả lời. Anh cho phép em chép nguyên văn trả lời của anh qua đó nha anh Nam, để bạn nào bị giống em có cách giải quyết. (em chép trước rồi ,hihii) Cảm ơn anh Nam rất nhiều. |
loi nay nen viet nhu sau moi dung:
org 0x00 goto start org 0x06 ;gia tri nay co the tuy thuoc vao lenh bao "..lengh..." o phan bao loi!!! |
loi nay anh cung gap ,em nen them vao cac lenh sau (nen dat o dau chuong trinh)
org 0x00 goto start org 0x46 |
Múi giờ GMT. Hiện tại là 05:11 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