![]() |
Sườn chương trình cơ bản bằng MPASM
1 Attachment(s)
Code:
;=================================================================================================== |
Thực sự là em copy nguyên cả code này vào mà nó cứ báo lỗi:
Make: The target "E:\Test\test1\test1.o" is out of date. Executing: "C:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F628A "test1.asm" /l"test1.lst" /e"test1.err" Warning[215] E:\TEST\TEST1\TEST1.ASM 24 : Processor superseded by command line. Verify processor symbol. Message[302] E:\TEST\TEST1\TEST1.ASM 38 : Register in operand not in bank 0. Ensure that bank bits are correct. Loaded E:\Test\test1\test1.COD. BUILD SUCCEEDED: Mon May 01 15:32:03 2006 Là do gì hả bác??? Thành thật xin lỗi vì post bài này ở 2 nơi, nhưng đang bức xúc vì vừa bắt đầu đã bị out ngay. |
Cái warning cho biết việc chọn bộ xử lý tại dòng lệnh có mức ưu tiên cao hơn (nghĩa là nó sẽ là bộ xử lý được dùng để biên dịch), bạn phải kiểm tra để đảm bảo nó đúng là bộ xử lý bạn muốn dùng.
Cái message cho biết thanh ghi bạn đang thao tác không nằm ở bank 0, bạn phải tự có các lệnh chuyển bank thanh ghi thích hợp. Nhưng chương trình đã được biên dịch thành công, bạn còn muốn gì nữa? Thân, |
Ồ, em đã nhìn thấy dòng này:
BUILD SUCCEEDED: Mon May 01 15:32:03 2006 Xin lỗi vì em là newbie mà, chỉ vừa mới nhập môn thôi. Sau khi đọc hướng dẫn học PIC trong một ngày nên em áp dụng luôn bằng cách down MPASM và copy code của các bác vào chạy chứ chưa làm gì khác cả. Việc có warning + message khiến em khó hiểu: phải chăng đầu chương trình mình đều phải khai báo PROCESSOR ... và nó luôn có cái warning này. Còn cái message thì sao, em đã khai báo BANKSEL TRISB như các bác rồi mà, nghĩa là mình đã chuyển vùng làm việc về bank 1, sau đó có lệnh chuyển về bank 0. Có phải là chương trình này đúng nhưng khi có một thao tác không theo tuần tự bộ nhớ thì nó sẽ có các warning hay message, nếu vậy thì khi bị lỗi thật làm sao phân biệt được nhỉ? Không hiểu nên hỏi lung tung, mong các bác thứ lỗi. Cảm ơn bài viết của bác Hiệp thật rõ ràng và dễ hiểu. |
Cho dù em có khai báo BANKSEL thì nó vẫn warning/message, nghĩa là vẫn nhắc em coi lại, nếu em đã khai báo rồi thì thôi, nếu em chưa khai báo thì em bổ sung. Anh lưu ý, vì trình dịch nó không thể hiểu, và không thể bắt người viết chương trình viết dòng BANKSEL ngay trước khi tương tác thanh ghi. Có thể người ta chuyển BANK trước đó rồi, đến đó người ta không cần chuyển nữa.
Cái nguy hiểm là chuyển qua BANK1, nhưng sau đó lại không chuyển ngược lại BANK0, thì khi làm việc với các thanh ghi của BANK0, nó lại hoàn toàn không thông báo gì cả. Như vậy, em đừng lo lắng về việc nó thông báo, mặc dù em đã có lệnh BANKSEL. Coi như đó là một lời nhắc nhở, và chính xác nó là lời nhắc nhở. Chúc vui. |
Mình có giải thích một số vấn đề liên quan tại chỗ này.
Bạn tham khảo thêm. http://www.picvietnam.com/forum//sho...p?t=238&page=6 :D |
Bây giờ thì em đã hiểu, cảm ơn bác. Chiều nay em sẽ đi mua một con PIC16F628A về lắp mạch chạy luôn. Hy vọng em sẽ sử dụng được PIC trong thời gian sớm nhất!
|
Múi giờ GMT. Hiện tại là 10:47 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