PDA

View Full Version : Sườn chương trình cơ bản bằng MPASM


falleaf
24-05-2005, 11:26 PM
;================================================= ==================================================
; 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 PIC16F628A
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

;================================================= ==================================================

chuchinh
18-05-2006, 04:44 PM
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.

namqn
18-05-2006, 06:02 PM
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,

chuchinh
19-05-2006, 12:57 PM
Ồ, 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.

falleaf
19-05-2006, 03:06 PM
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.

ntc
19-05-2006, 03:15 PM
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//showthread.php?t=238&page=6

:D

chuchinh
19-05-2006, 03:28 PM
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!