PDA

View Full Version : Lỗi thường gặp - 628A


Thangleduc
17-10-2006, 12:59 AM
Anh Hiệp ơi, em copy cái code của anh viết ở diễn đàn vào Mplab IDE rồi nhấn Alt + F10, sao no hiện nhiều lỗi vậy ?


Code mà em copy là: ;================================================= =======
; Ten chuong trinh : Mach test den LED_1
; Nguoi thuc hien : Falleaf
; Ngay thuc hien : 23/05/2005
; Phien ban : 1.0
; Mo ta phan cung : Dung PIC16F628A - thach anh 10MHz
; : LED giao tiep voi PORTB
; : Cuc am cua LED noi voi GND
; : RB0 - RB7 la cac chan output
;----------------------------------------------------------------
; Ngay hoan thanh : 23/05/2005
; Ngay kiem tra : 23/05/2005
; Nguoi kiem tra : Doan Hiep
;----------------------------------------------------------------
; Chu thich : Mo ta cac diem khac nhau cua cac phien ban khac nhau
; : hoac cac chu thich khac
; : vd, dung che do Power On Reset, PORTB = 00000000
; : hoac, chuong trinh viet cho PIC Tutorial
; : hoac, chuong trinh nay hoan toan mien phi va co the dung cho
; : moi muc dich khac nhau
;================================================= =======

;================================================= ======
TITLE "Mach test LED_1"
PROCESSOR P16F628A
INCLUDE <P16F628A.inc>
__CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF &_HS_OSC

;================================================= ==============================
;================================================= ==============================
ORG 0x0000
GOTO MAIN


ORG 0x0005

MAIN
BANKSEL TRISB ; bank select
CLRF TRISB ; trisb = 00000000
; portb = output
BANKSEL PORTB
BSF PORTB, 0 ; rb0 = 1
; RB0 = 5V
GOTO $ ; dung chuong trinh tai day
; vong lap tai cho^~
; khong bao gio ket thuc
END. ; lenh bat buoc de ket thuc
;================================================= ===============================


Roi em Alt + F10, nó hiện errors như sau:


Quote:" Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "C:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p18F452 "Test 1.asm" /l"Test 1.lst" /e"Test 1.err"
Warning[215] C:\DOCUMENTS AND SETTINGS\JIMMY LEDUC\MY DOCUMENTS\MY WORKS\MECHTRONICS ENGINEERING\PRACTICING\MPLAB IDE\TEST 1.ASM 25 : Processor superseded by command line. Verify processor symbol.
Message[301] C:\PROGRAM FILES\MICROCHIP\MPASM SUITE\P16F628A.INC 35 : MESSAGE: (Processor-header file mismatch. Verify selected processor.)
Warning[230] C:\DOCUMENTS AND SETTINGS\JIMMY LEDUC\MY DOCUMENTS\MY WORKS\MECHTRONICS ENGINEERING\PRACTICING\MPLAB IDE\TEST 1.ASM 27 : __CONFIG has been deprecated for PIC18 devices. Use directive CONFIG.
Error[126] C:\DOCUMENTS AND SETTINGS\JIMMY LEDUC\MY DOCUMENTS\MY WORKS\MECHTRONICS ENGINEERING\PRACTICING\MPLAB IDE\TEST 1.ASM 27 : Argument out of range (not a valid config register address)
Warning[226] C:\DOCUMENTS AND SETTINGS\JIMMY LEDUC\MY DOCUMENTS\MY WORKS\MECHTRONICS ENGINEERING\PRACTICING\MPLAB IDE\TEST 1.ASM 32 : Destination address must be word aligned
Error[157] C:\DOCUMENTS AND SETTINGS\JIMMY LEDUC\MY DOCUMENTS\MY WORKS\MECHTRONICS ENGINEERING\PRACTICING\MPLAB IDE\TEST 1.ASM 35 : ORG at odd address
Warning[226] C:\DOCUMENTS AND SETTINGS\JIMMY LEDUC\MY DOCUMENTS\MY WORKS\MECHTRONICS ENGINEERING\PRACTICING\MPLAB IDE\TEST 1.ASM 44 : Destination address must be word aligned
Warning[207] C:\DOCUMENTS AND SETTINGS\JIMMY LEDUC\MY DOCUMENTS\MY WORKS\MECHTRONICS ENGINEERING\PRACTICING\MPLAB IDE\TEST 1.ASM 47 : Found label after column 1. (END.)
Error[129] C:\DOCUMENTS AND SETTINGS\JIMMY LEDUC\MY DOCUMENTS\MY WORKS\MECHTRONICS ENGINEERING\PRACTICING\MPLAB IDE\TEST 1.ASM 49 : Expected (END)
Error[173] C:\DOCUMENTS AND SETTINGS\JIMMY LEDUC\MY DOCUMENTS\MY WORKS\MECHTRONICS ENGINEERING\PRACTICING\MPLAB IDE\TEST 1.ASM 49 : Source file path exceeds 62 characters (C:\DOCUMENTS AND SETTINGS\JIMMY LEDUC\MY DOCUMENTS\MY WORKS\MECHTRONICS ENGINEERING\PRACTICING\MPLAB IDE\TEST 1.ASM)
Halting build on first failure as requested.
BUILD FAILED: Mon Oct 16 12:32:54 2006
".

Có ai biết gì thêm thì chi mình với, đọc 1 hồi rồi mù, hixhix.

Em vào Configure -> Select Device -> rồi chọn Pic16F628A. rồi quay lại cái code của anh, em nhấn Alt + F10, thì nó chỉ còn chưng này errors à:

Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "C:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F628A "Test 1.asm" /l"Test 1.lst" /e"Test 1.err"
Warning[215] C:\DOCUMENTS AND SETTINGS\JIMMY LEDUC\MY DOCUMENTS\MY WORKS\MECHTRONICS ENGINEERING\PRACTICING\MPLAB IDE\TEST 1.ASM 25 : Processor superseded by command line. Verify processor symbol.
Message[302] C:\DOCUMENTS AND SETTINGS\JIMMY LEDUC\MY DOCUMENTS\MY WORKS\MECHTRONICS ENGINEERING\PRACTICING\MPLAB IDE\TEST 1.ASM 39 : Register in operand not in bank 0. Ensure that bank bits are correct.
Error[173] C:\DOCUMENTS AND SETTINGS\JIMMY LEDUC\MY DOCUMENTS\MY WORKS\MECHTRONICS ENGINEERING\PRACTICING\MPLAB IDE\TEST 1.ASM 48 : Source file path exceeds 62 characters (C:\DOCUMENTS AND SETTINGS\JIMMY LEDUC\MY DOCUMENTS\MY WORKS\MECHTRONICS ENGINEERING\PRACTICING\MPLAB IDE\TEST 1.ASM)
Halting build on first failure as requested.
BUILD FAILED: Mon Oct 16 13:09:18 2006

chipchipvn
17-10-2006, 06:49 AM
Mình trả lời hộ bác F, hình như code này không có gì sai cả ( :D Bác F viết mừ) nhưng chỉ có 1 cái là đường dẫn (path) của file ASM của bạn quá dài (>62 ký tự) nên nó không chạy được thôi. Bạn sửa đường dẫn cho ngắn lại là xong thui.

Thangleduc
17-10-2006, 07:36 AM
I got it, love you, chipchpVn.

lamhoang
17-10-2006, 11:08 AM
Đề nghí chuyển bài này vào phần những câu hỏi thông thường để mọi người dễ theo dõi.
Đóng góp với mong muốn diễn đàn tốt hơn!

MHz
17-10-2006, 02:26 PM
Mình trả lời hộ bác F, hình như code này không có gì sai cả ( :D Bác F viết mừ) nhưng chỉ có 1 cái là đường dẫn (path) của file ASM của bạn quá dài (>62 ký tự) nên nó không chạy được thôi. Bạn sửa đường dẫn cho ngắn lại là xong thui.
...chính xác, à mà còn 1 lỗi nữa nè :
Sau lệnh END không có dấu chấm (.), bác xóa dấu chấm "chết tiệt" đó đi thì Ok... :D

Thangleduc
17-10-2006, 02:29 PM
Hi, mình chẳng biết post câu hỏi ở đâu cả.

Mình có thêm câu hỏi này:

KHi mình viết code để cho LED nó sáng, nhưng sao mình ko biết viết như thế nào:
0000 = 0
0001 = 1
0010 = 2
0011 = 3
0100 = 4
0101 = 5
0110 = 6
0111 = 7
1000 = 8
.............
11111 = F


Vậy thì mình viết code như thế nào để set từng LED nó chay ?

Port P1.1 = 0000 0000 = ....??....
Port P1.1 = 1000 0000 = ....??....
Port P1.1 = 0100 0000 = ....??....
Port P1.1 = 0010 0000 = ....??....
Port P1.1 = 0001 0000 = ....??....
Port P1.1 = 0000 1000 = ....??....
Port P1.1 = 0000 0100 = ....??....
Port P1.1 = 0000 0010 = ....??....
Port P1.1 = 0000 0001 = ....??....

Đó là chạy 1 đèn một

Còn chay 2 đèn 1 lúc:

Port P1.1 = 1100 0000 = ....??....
Port P1.1 = 0110 0000 = ....??....
Port P1.1 = 0011 0000 = ....??....
Port P1.1 = 0001 1000 = ....??....
Port P1.1 = 0000 1100 = ....??....
Port P1.1 = 0000 0110 = ....??....
Port P1.1 = 0000 0011 = ....??....

Còn chay 3 đèn 1 lúc:

Port P1.1 = 1110 0000 = ....??....
Port P1.1 = 0111 0000 = ....70....
Port P1.1 = 0011 1000 = ....C7....
Port P1.1 = 0001 1100 = ....??....
Port P1.1 = 0000 1110 = ....??....
Port P1.1 = 0000 0111 = ....??....

Còn chay 4 đèn 1 lúc:

Port P1.1 = 1111 0000 = ....??....
Port P1.1 = 0111 1000 = ....??....
Port P1.1 = 0011 1100 = ....??....
Port P1.1 = 0001 1110 = ....??....
Port P1.1 = 0000 1111 = ....??....

Còn chay 5 đèn 1 lúc:

Port P1.1 = 1111 1000 = ....??....
Port P1.1 = 0111 1100 = ....??....
Port P1.1 = 0011 1110 = ....??....
Port P1.1 = 0001 1111 = ....??....

Còn chạy như vầy thì sao ?

Port P1.1 = 1111 1111 = ....FF....



Mình thấy nhiều người viết code để chạy LED, nhưng lại ko biết "công thức" để biết các số BINARY sang HEXADECIMAL

chipchipvn
17-10-2006, 03:17 PM
Mình thấy cái này chỉ có cách là học thuộc thôi :D (mình cũng chỉ làm thế, không bít trò nào hay hơn), nhưng có một mẹo nhỏ (hình như bạn cũng bít rùi). Mình tách 4 số thành một nhóm, rùi bi-hex ( mình nghĩ cũng dễ nhớ thui) có 15 cái à. Vd: 01111100= 0111 1100 = 7 C = 7C. Mình chỉ bít có thế :d. Ngòai ra không biết hơn. :D

spirit
17-10-2006, 05:35 PM
Hi, mình chẳng biết post câu hỏi ở đâu cả.

Mình có thêm câu hỏi này:

KHi mình viết code để cho LED nó sáng, nhưng sao mình ko biết viết như thế nào:
0000 = 0
0001 = 1
0010 = 2
0011 = 3
0100 = 4
0101 = 5
0110 = 6
0111 = 7
1000 = 8
.............
11111 = F


Vậy thì mình viết code như thế nào để set từng LED nó chay ?

Port P1.1 = 0000 0000 = ....??....
Port P1.1 = 1000 0000 = ....??....
Port P1.1 = 0100 0000 = ....??....
Port P1.1 = 0010 0000 = ....??....
Port P1.1 = 0001 0000 = ....??....
Port P1.1 = 0000 1000 = ....??....
Port P1.1 = 0000 0100 = ....??....
Port P1.1 = 0000 0010 = ....??....
Port P1.1 = 0000 0001 = ....??....

Đó là chạy 1 đèn một

Còn chay 2 đèn 1 lúc:

Port P1.1 = 1100 0000 = ....??....
Port P1.1 = 0110 0000 = ....??....
Port P1.1 = 0011 0000 = ....??....
Port P1.1 = 0001 1000 = ....??....
Port P1.1 = 0000 1100 = ....??....
Port P1.1 = 0000 0110 = ....??....
Port P1.1 = 0000 0011 = ....??....

Còn chay 3 đèn 1 lúc:

Port P1.1 = 1110 0000 = ....??....
Port P1.1 = 0111 0000 = ....70....
Port P1.1 = 0011 1000 = ....C7....
Port P1.1 = 0001 1100 = ....??....
Port P1.1 = 0000 1110 = ....??....
Port P1.1 = 0000 0111 = ....??....

Còn chay 4 đèn 1 lúc:

Port P1.1 = 1111 0000 = ....??....
Port P1.1 = 0111 1000 = ....??....
Port P1.1 = 0011 1100 = ....??....
Port P1.1 = 0001 1110 = ....??....
Port P1.1 = 0000 1111 = ....??....

Còn chay 5 đèn 1 lúc:

Port P1.1 = 1111 1000 = ....??....
Port P1.1 = 0111 1100 = ....??....
Port P1.1 = 0011 1110 = ....??....
Port P1.1 = 0001 1111 = ....??....

Còn chạy như vầy thì sao ?

Port P1.1 = 1111 1111 = ....FF....



Mình thấy nhiều người viết code để chạy LED, nhưng lại ko biết "công thức" để biết các số BINARY sang HEXADECIMAL

Bạn tham khảo thêm kĩ thuật bảng của mod Chính
Theo mình nghĩ viết số binary sẽ dễ dàng trong việc quản lí led vì chỉ cần nhìn vào là thấy ngay.Còn số hex thì để nhìn cho gọn mà thôi
Bạn viết như trên là sai rồi phải là thế này chứ
ví dụ :PORTB=xxxxxxxxx chứ không phải port P1.1 vì đây là 1 byte mà

Thangleduc
18-10-2006, 06:40 AM
uh, cảm ơn bạn, nhưng mà mình nghe nói, nếu viết nhiều code kiêu Binary nhiều th2 tốn nhiều memory cua IC lắm, hình nhu có cách viết nào đó cũng do the same job mà lại ngắn và ít tốn bộ nhớ lắm. Có ai biết ko, post lên chỉ mọi người đi, cảm ơn.

spirit
19-10-2006, 06:47 PM
Đồng ý với bạn viết mã binary sẽ tốn nhiều bộ nhớ của chip hơn mã hex điều (này mình cũng đã kiểm chứng rồi).Nhưng theo mình nghĩ tốn không nhiều lắm đâu nếu bạn viết Code không quá lớn,ai mà viết hết rom của pic16F628(hoặc những con pic cao hơn) thì mình bái phục họ đã đạt trình đọ thượng thừa rồi.
Chính vì vậy chúng ta nên viết sao cho dẽ hiểu nhất nhìn vào là xác định mình đang viết cái gì.
Còn cách mà bạn muốn không biết là cái này không nữa?
addwf PCL,f
dt "mã hex_1,mã hex2,..."
-->một dạng của kĩ thuật bảng
Cái này là theo mình nghĩ thôi nha,có thể không đúng như vậy đâu.