PDA

View Full Version : Hỏi về lỗi ?


tinhthanthep
03-07-2005, 12:10 AM
Em mới bắt đầu nghiên cứu về PIC theo các tài liệu hướng dẫn của bác Falleaf. Khi làm bài tập nhấp nháy đèn led: em viết bằng MPLAP IDE v7.01:
;Tutorial 1-6
list p=16F628A
#include <p16F628A.inc>

__CONFIG 0x3D18

cblock 0x20
count1
counta
countb
endc

LEDPORT equ PORTB
LEDTRIS equ TRISB

ORG 0x0000

movlw 0x07
movwf CMCON

bsf STATUS, RP0
movlw b'00000000'
movlw LEDTRIS
bcf STATUS, RP0
clrf LEDPORT

loop
movlw b'10000000'
movwf LEDPORT
call delay
movlw b'01000000'
movwf LEDPORT
call delay
movlw b'00100000'
movwf LEDPORT
call delay
movlw b'00010000'
movwf LEDPORT
call delay
movlw b'00001000'
movwf LEDPORT
call delay
movlw b'00000100'
movwf LEDPORT
call delay
movlw b'00000010'
movwf LEDPORT
call delay
movlw b'00000001'
movwf LEDPORT
call delay
movlw b'00000010'
movwf LEDPORT
call delay
movlw b'00000100'
movwf LEDPORT
call delay
movlw b'00001000'
movwf LEDPORT
call delay
movlw b'00010000'
movwf LEDPORT
call delay
movlw b'00100000'
movwf LEDPORT
call delay
movlw b'01000000'
movwf LEDPORT
call delay
goto loop

delay
movlw d'250'
movwf count1
d1
movlw 0xC7
movwf counta
movlw 0x01
movwf countb
delay_0
decfsz counta, f
goto $+2
decfsz countb, f
goto delay_0
decfsz count1, f
goto d1
retlw 0x00

END
Sau đó em dịch sang file hex nhưng nó toàn báo lỗi:
Clean: Deleting intermediary and output files.
Clean: Deleted file "C:\ViXyLy\PIC\Tutorials\Tutorial16\f628Atempo.o".
Clean: Deleted file "C:\ViXyLy\PIC\Tutorials\Tutorial16\f628Atempo.ERR".
Clean: Deleted file "f628Atempo.lst".
Clean: Deleted file "Tutorial16.cof".
Clean: Deleted file "Tutorial16.cod".
Clean: Deleted file "Tutorial16.hex".
Clean: Deleted file "Tutorial16.lst".
Clean: Deleted file "C:\ViXyLy\PIC\Tutorials\Tutorial16\Tutorial16.mcs".
Clean: Done.
Executing: "C:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F628A "f628Atempo.asm" /l"f628Atempo.lst" /e"f628Atempo.err" /o"f628Atempo.o"
Warning[207] C:\VIXYLY\PIC\TUTORIALS\TUTORIAL16\F628ATEMPO.ASM 13 : Found label after column 1. (LEDPORT)
Warning[207] C:\VIXYLY\PIC\TUTORIALS\TUTORIAL16\F628ATEMPO.ASM 14 : Found label after column 1. (LEDTRIS)
Executing: "C:\Program Files\Microchip\MPASM Suite\MPLink.exe" "16f628a.lkr" "C:\ViXyLy\PIC\Tutorials\Tutorial16\f628Atempo.o" /o"Tutorial16.cof"
MPLINK 3.90.01, Linker
Copyright (c) 2005 Microchip Technology Inc.
Error - section '.org_0' can not fit the absolute section. Section '.org_0' start=0x00000000, length=0x0000007e
Errors : 1

BUILD FAILED: Sat Jul 02 09:56:55 2005

Các bác có thể giúp em giải quyết được vấn đề này không ạ? Xin đa tạ các bác!

zero2one
03-07-2005, 12:40 AM
mình đã dịch lại tutorial 1.6 của Nigel rồi, nhưng thấy có lỗi gì đâu nhỉ ?

falleaf
03-07-2005, 12:40 AM
Sau đó em dịch sang file hex nhưng nó toàn báo lỗi:
Clean: Deleting intermediary and output files.
Clean: Deleted file "C:\ViXyLy\PIC\Tutorials\Tutorial16\f628Atempo.o".
Clean: Deleted file "C:\ViXyLy\PIC\Tutorials\Tutorial16\f628Atempo.ERR".
Clean: Deleted file "f628Atempo.lst".
Clean: Deleted file "Tutorial16.cof".
Clean: Deleted file "Tutorial16.cod".
Clean: Deleted file "Tutorial16.hex".
Clean: Deleted file "Tutorial16.lst".
Clean: Deleted file "C:\ViXyLy\PIC\Tutorials\Tutorial16\Tutorial16.mcs".
Clean: Done.
[\quote]

Đoạn này chẳng có gì để xem, nó chỉ báo rằng nó dịch như vậy. Và đã làm xong.

[quote=tinhthanthep]
Executing: "C:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F628A "f628Atempo.asm" /l"f628Atempo.lst" /e"f628Atempo.err" /o"f628Atempo.o"
Warning[207] C:\VIXYLY\PIC\TUTORIALS\TUTORIAL16\F628ATEMPO.ASM 13 : Found label after column 1. (LEDPORT)
Warning[207] C:\VIXYLY\PIC\TUTORIALS\TUTORIAL16\F628ATEMPO.ASM 14 : Found label after column 1. (LEDTRIS)
Executing: "C:\Program Files\Microchip\MPASM Suite\MPLink.exe" "16f628a.lkr" "C:\ViXyLy\PIC\Tutorials\Tutorial16\f628Atempo.o" /o"Tutorial16.cof"
MPLINK 3.90.01, Linker
Copyright (c) 2005 Microchip Technology Inc.
Error - section '.org_0' can not fit the absolute section. Section '.org_0' start=0x00000000, length=0x0000007e
Errors : 1

BUILD FAILED: Sat Jul 02 09:56:55 2005


Bạn không đưa cho tôi file bạn viết bằng MPLAB, post lên đây rất khó xem, các phần tôi hướng dẫn về viết các đoạn mã ban đầu cũng không giống của tôi làm, tôi cũng không hiểu mạch bạn làm thế nào.

Tuy nhiên, theo báo lỗi, do bạn không viết theo các cột như trong bài hướng dẫn của tôi đã viết.

Nó báo lỗi là bạn có viết một cái nhãn không nằm ở cột thứ nhất.

Nhìn trên này tôi không thể phân biệt được cột nào với cột nào. Đó là lý do vì sao tôi nhắc các bạn gửi kèm file ASM đi theo, khi cần thiết có thể phát hiện các lỗi kiểu này. Đây là điều rất cần cho các hướng dẫn ban đầu. Sau này các bạn sẽ không còn thắc mắc những lỗi nhỏ này nữa.

Bạn nhớ gửi kèm file theo, và trong file viết các mô tả phần cứng cũng như các mô tả như tôi hướng dẫn.

Nếu cần kiểm tra, tôi chỉ cần đưa vào MPLAB dịch một cái, xem các lỗi đó như thế nào, chứ bạn viết lên thế này, rất mất thời gian cho tôi, và vì vậy, tôi sẽ rất lười trả lời các bài thế này.

Điều này cũng tương tự cho các thành viên đã rành về PIC khác, họ cũng rất muốn giúp các bạn, nhưng các bạn toàn làm khó họ. Tôi nghĩ rằng, những thành viên làm việc với PIC đã lâu, cũng đang theo dõi những bài viết ở đây, nhưng họ thấy chưa cần lên tiếng, vì tôi đang bắt đầu từ những bài học cơ bản, vì vậy, khi các bạn hỏi, xin đừng hỏi riêng tôi, mà hỏi tất cả mọi người. Công việc của tôi là tổng hợp các bài viết của các bạn để viết tutorial.

Ngoài ra, tôi sẽ cố gắng trả lời các câu hỏi của các bạn trong phạm vi thời gian cho phép của tôi, vì rằng không thể trả lời hết cho tất cả mọi người, vừa email, vừa forum. Đợt vừa rồi tôi hơi bị quá tải.

Mong các bạn thông cảm, sức người có hạn. Kể từ nay, tôi sẽ không trả lời các câu hỏi trên email nữa, chỉ trả lời các câu hỏi trên diễn đàn.

Cuối cùng, tôi mong các bạn đã rành về PIC giúp tôi một tay, vì vấn đề cơ bản tưởng là đơn giản nhưng không đơn giản chút nào. Mong các bạn giúp tôi sửa chữa những bài viết của tôi nếu thấy có điểm không ổn.

Tôi sẽ bắt đầu làm việc lại vào ngày 20/7, tôi cần thời gian nghỉ ngơi khá lâu, vì tôi đã không được nghỉ lâu rồi.

tinhthanthep
07-07-2005, 07:23 PM
Tôi gửi kèm file viết bằng MPLAP vào đây nhờ bác falleaf giải quyết giúp. Sau khi dịch file này sang đuôi hex thì nó thông báo như sau:
Clean: Deleting intermediary and output files.
Clean Warning: File "C:\PICTut\Tutorial12\f628Atempo.o" doesn't exist.
Clean Warning: File "C:\PICTut\Tutorial12\f628Atempo.ERR" doesn't exist.
Clean: Deleted file "f628Atempo.lst".
Clean: Deleted file "Tutorial12.cof".
Clean: Deleted file "Tutorial12.cod".
Clean: Deleted file "Tutorial12.hex".
Clean: Deleted file "Tutorial12.lst".
Clean: Deleted file "C:\ViXyLy\PIC\Tutorials\Tutorial12\Tutorial12.mcs".
Clean: Done.
Executing: "C:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F628A "f628Atempo.asm" /l"f628Atempo.lst" /e"f628Atempo.err" /o"f628Atempo.o"
Message[302] C:\VIXYLY\PIC\TUTORIALS\TUTORIAL12\F628ATEMPO.ASM 24 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] C:\VIXYLY\PIC\TUTORIALS\TUTORIAL12\F628ATEMPO.ASM 25 : Register in operand not in bank 0. Ensure that bank bits are correct.Executing: "C:\Program Files\Microchip\MPASM Suite\MPLink.exe" "16f628a.lkr" "C:\ViXyLy\PIC\Tutorials\Tutorial12\f628Atempo.o" /o"Tutorial12.cof"
MPLINK 3.90.01, Linker
Copyright (c) 2005 Microchip Technology Inc.
Errors : 0

MP2COD 3.90.01, COFF to COD File Converter
Copyright (c) 2005 Microchip Technology Inc.
Errors : 0

MP2HEX 3.90.01, COFF to HEX File Converter
Copyright (c) 2005 Microchip Technology Inc.
Errors : 0

Loaded C:\ViXyLy\PIC\Tutorials\Tutorial12\Tutorial12.cof
BUILD SUCCEEDED: Mon Jan 01 00:51:31 2001

Nhưng các bác để ý thấy rằng tuy là đã Build Succeeded nhưng vẫn có 2 Message (phần gạch chân), như vậy tức là chương trình vẫn còn một vấn đề gì đó?
Tôi vẫn cứ thử dùng ICPROG nạp chương trình vào PIC6F628A, cuối cùng của việc nạp hiện ra thông báo: Verify failed at address 0000h. Sau đó tui cắm vào mạch LED của tui nhưng chẳng thấy LED nào sáng cả. Mong các bác giúp tôi giải quyết vấn đề này?
Thank các bác rất nhiều!

falleaf
08-07-2005, 12:06 AM
messages chỉ là các thông báo, không phải là các lỗi, vì nó không nằm trong lỗi mà chương trình dịch có thể phát hiện chắc chắn, cho nên nó thông báo để nhắc nhở người viết kiểm tra lại.

Lỗi đó là các thanh ghi ở dòng đó, không phải nằm trong bank 0, cho nên bạn phải kiểm tra lại trong chương trình, trước khi truy nhập vào các file đó, bạn đã chuyển bank chưa.

Thông báo này rất bình thường, khi bạn tương tác với thanh ghi TRIS chẳng hạn, hoặc bất kỳ thanh ghi nào nằm ngoài bank 0, dòng thông báo này sẽ xuất hiện.

falleaf
08-07-2005, 12:08 AM
Bạn thấy rõ ràng, trong chương trình bạn gửi lên, có thêm dòng TRISA, cho nên có 2 thông báo ở hai dòng liên tiếp TRISA và TRISB tôi nghĩ trong chương trình của bạn nó là dòng 24, 25.

Chỉ đơn giản như vậy thôi.

Nhớ rằng, trình dịch chỉ kiểm tra được lỗi cú pháp (syntax) chứ không kiểm tra được lỗi thuật toán.

Chúc vui.

falleaf
08-07-2005, 12:13 AM
Trong phần hướng dẫn về debug chương trình và sửa lỗi, tôi sẽ cố gắng hướng dẫn kỹ hơn các phần này. Thời gian này tôi rất bận, cho nên mong các bạn thông cảm, sẽ không có nhiều bài viết mới.

tinhthanthep
08-07-2005, 06:18 PM
Tớ mua mạch nạp và PIC16F628A của bác bình anh. Sau khi đã viết chương trình như phần trình bầy bên trên. Tớ nạp vào chip thì nó thông báo: Verify failed at address 0000h. Bác falleaf thử xem lỗi như thế có nghĩa là gì? vì sau đó tôi thử cắm PIC vào mạch LED nhưng không có đèn nào sáng cả? Bác falleaf thử kiểm tra lại cái chương trình tôi viết còn có lỗi gì nữa không?
thanks!

falleaf
09-07-2005, 03:49 AM
Các lỗi này đã được trình bày tương đối kỹ trên diễn đàn điện tử. Vì vậy, bạn tạm thời sang đó xem, khi nào có thời gian, tôi sẽ chuyển bài bên đó về đây. Lỗi của bạn bị không chỉ có một mình bạn bị, mà tất cả những người mới dùng lần đầu không biết đều bị lỗi naỳ, sau đó thì hoàn toàn phát hiện ra không có lỗi gì cả.

Tham khảo bên diễn đàn điện tử, hình như phần mạch pg2c dở chứng thì phải.

chúc vui

tinhthanthep
12-07-2005, 11:14 PM
Nếu bác nào dùng mạch nạp PG2C mà không nạp được thì thay con trở 1,5k bằng con 1k nhá.