PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 27-08-2010, 11:42 AM   #1
shevry
Nhập môn đệ tử
 
Tham gia ngày: Sep 2007
Bài gửi: 6
:
Chương trình báo lỗi, ko bit sai ở đâu?

Mình mới vào nghề, viết thử 1 chương trình LED chạy qua lại nhưng khi biên dịch thì gặp lỗi sau:

Debug build of project `D:\Hung\Tai lieu ky thuat\pic\baitap\vd1.mcp' started.
Language tool versions: MPASMWIN.exe v5.36, mplink.exe v4.36, mplib.exe v4.36
Preprocessor symbol `__DEBUG' is defined.
Fri Aug 27 10:05:14 2010
----------------------------------------------------------------------
Make: The target "D:\Hung\Tai lieu ky thuat\pic\baitap\vd1.o" is out of date.
Executing: "C:\Program Files\Microchip\MPASM Suite\MPASMWIN.exe" /q /p16F887 "vd1.asm" /l"vd1.lst" /e"vd1.err" /o"vd1.o" /d__DEBUG=1
Error[126] D:\HUNG\TAI LIEU KY THUAT\PIC\BAITAP\VD1.ASM 4 : Argument out of range (not a valid config register address)
Message[302] D:\HUNG\TAI LIEU KY THUAT\PIC\BAITAP\VD1.ASM 20 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] D:\HUNG\TAI LIEU KY THUAT\PIC\BAITAP\VD1.ASM 32 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] D:\HUNG\TAI LIEU KY THUAT\PIC\BAITAP\VD1.ASM 40 : Register in operand not in bank 0. Ensure that bank bits are correct.
Message[302] D:\HUNG\TAI LIEU KY THUAT\PIC\BAITAP\VD1.ASM 70 : Register in operand not in bank 0. Ensure that bank bits are correct.
Halting build on first failure as requested.
----------------------------------------------------------------------
Debug build of project `D:\Hung\Tai lieu ky thuat\pic\baitap\vd1.mcp' failed.
Language tool versions: MPASMWIN.exe v5.36, mplink.exe v4.36, mplib.exe v4.36
Preprocessor symbol `__DEBUG' is defined.
Fri Aug 27 10:05:15 2010
----------------------------------------------------------------------
BUILD FAILED


Ko biết chương trình sai ở đâu? nhờ các bậc tiền bối chỉ giúp. ^^
Đây là chương trình của mình

TITLE "Chay LED <->"
PROCESSOR 16f887
#include <p16f887.inc>
__CONFIG _CP_OFF & _WDT_OFF & _XT_OSC
;Khai bao bien
W_SAVE EQU 0X20
STATUS_SAVE EQU 0X21
LAN_LAP EQU 0X22
XOAY EQU 0X23
;Chuong trinh
ORG 0X0000
GOTO Main
ORG 0X0004
GOTO Isr_Tmr1
ORG 0X0005
Main
banksel PORTB
CLRF PORTB
banksel TRISB
CLRF TRISB
banksel T1CON
BCF T1CON,TMR1CS
BCF T1CON,T1CKPS0
BCF T1CON,T1CKPS1
MOVLW 0X9E
MOVWF TMR1H
MOVLW 0X58
MOVWF TMR1L
MOVLW D'5'
MOVWF LAN_LAP
banksel PIE1
BSF PIE1,TMR1IE
BSF INTCON,GIE
banksel T1CON
BSF T1CON,TMR1ON
GOTO $
Isr_Tmr1
banksel INTCON
BCF INTCON,GIE
BCF PIE1,TMR1IE
banksel PIR1
BCF PIR1,TMR1IF
BCF T1CON,TMR1ON
MOVWF W_SAVE
MOVF STATUS,W
MOVWF STATUS_SAVE
MOVLW 0X9E
MOVWF TMR1H
MOVLW 0X58
MOVWF TMR1L
DECFSZ LAN_LAP,1
GOTO Tiep_tuc
MOVLW D'5'
MOVWF LAN_LAP
Ktra_Xoay
BTFSS XOAY,0
GOTO Xoay_Phai
RLF PORTB,0
Ktra_C
BTFSS STATUS,C
GOTO Xuat_Led
COMF XOAY,1
GOTO Ktra_Xoay
Xuat_Led
MOVWF PORTB
Tiep_tuc
MOVF STATUS_SAVE,0
MOVWF STATUS
MOVF W_SAVE,0
BSF PIE1,TMR1IE
BSF INTCON,GIE
BSF T1CON,TMR1ON
RETFIE
Xoay_Phai
RRF PORTB,0
GOTO Ktra_C
END

Đây là Pr-Scr của Chương trình:

http://www.mediafire.com/i/?l36dwzq0d43hcol
http://www.mediafire.com/i/?tkhcs718ca5qwdz
http://www.mediafire.com/i/?dn6uooea1yi5qn4

thay đổi nội dung bởi: shevry, 27-08-2010 lúc 12:08 PM. Lý do: bổ xung Pr-Scr
shevry vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-08-2010, 05:18 PM   #2
unisa
Đệ tử 2 túi
 
Tham gia ngày: May 2005
Bài gửi: 27
:
báo lỗi khai báo fuse sai kìa bạn, mình cũng không biết sửa sao cho phải, bạn thử thay thế này xem
Code:
INCLUDE     <P16F877A.inc>
__CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC
còn mấy cái lỗi
Message[302] D:\HUNG\TAI LIEU KY THUAT\PIC\BAITAP\VD1.ASM 20 : Register in operand not in bank 0. Ensure that bank bits are correct.
mình cũng bị dù dùng nhiều cách như dùng banksel, BSF và BCF status,RP0
nhưng báo thì báo mình vẫn dịch ngon và chạy ngon, ko hiểu nổi luôn :-o
unisa vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-08-2010, 09:06 PM   #3
shevry
Nhập môn đệ tử
 
Tham gia ngày: Sep 2007
Bài gửi: 6
:
Trước hết mình xin cám ơn bạn đã xem và suy ngẫm giùm. Nhìn report của nó thì ai ko biết sai dòng nào. ^^ Vấn đề là ở chỗ phải sửa lại như thế nào cho đúng. Hôm nay mới lục lọi trong mấy cái ví dụ của thằng Microchip (nói thiệt ra là dân VN mình biết rồi toàn giấu đem xuống hòm ko hà, ko biết để lại gì cho con cháu cả). Mình sửa lại cái dòng đó như sau:

__CONFIG _CONFIG1, _CP_OFF & _WDT_OFF & _XT_OSC

Biên dịch xong thì hết error nhưng warning thì dùng banksel vẫn bị. ko hiểu.
shevry vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-08-2010, 12:07 AM   #4
ronin
Đệ tử 1 túi
 
Tham gia ngày: Mar 2009
Bài gửi: 17
:
nếu không phải la chương trình lớn thì wraming không ảnh hưởng gì đâu, nhung bạn cũng hết sức chú ý tới nó đó. bạn làm nhìu sẽ thấy.
ronin vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-08-2010, 09:17 PM   #5
shevry
Nhập môn đệ tử
 
Tham gia ngày: Sep 2007
Bài gửi: 6
:
Mình thấy lạ là sao đã làm giống như chỉ dẫn của datasheet và các chương trình mẫu nhưng vẫn bị warning. Chẳng lẽ MPLab có vấn đề, thật là khó hiểu quá đi. Lúc trước học 89C51 đâu có bị như thế này, chương trình mẫu dạy sao làm như vậy thì ko bao giờ sai. Có lẽ vì thế mà ở VN có nhiều sách 89 nhưng sách PIC thì chỉ mới có 2 quyển. hic. Chẳng lẽ chuyển qua học avr nhỉ.
shevry vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 30-08-2010, 09:34 PM   #6
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi shevry View Post
Mình thấy lạ là sao đã làm giống như chỉ dẫn của datasheet và các chương trình mẫu nhưng vẫn bị warning. Chẳng lẽ MPLab có vấn đề, thật là khó hiểu quá đi. Lúc trước học 89C51 đâu có bị như thế này, chương trình mẫu dạy sao làm như vậy thì ko bao giờ sai. Có lẽ vì thế mà ở VN có nhiều sách 89 nhưng sách PIC thì chỉ mới có 2 quyển. hic. Chẳng lẽ chuyển qua học avr nhỉ.
Chào bạn,

Warning không phải là Error, nên bạn không nên quá bận tâm về nó. Message lại càng không cần lo lắng, vì nó chỉ là một thông báo nhắc nhở bạn (trong chương trình nhỏ của bạn thì chỉ là nhắc nhở rằng cần đảm bảo chọn đúng bank cho các thanh ghi).

Các chương trình mẫu được viết cho các PIC chỉ có một từ cấu hình. Đến gần đây thì PIC16F887 (và một số chip tương tự) được Microchip sản xuất với 2 từ cấu hình, dẫn đến cần có một cách viết khác để thiết lập các từ cấu hình cho các PIC loại này. Và điều này cũng khiến một số chương trình mẫu trở nên "không đúng". Các chip 89 thuộc họ MCS-51 đã rất lâu đời, vốn không có những thay đổi lớn như vậy, nên các chương trình mẫu của chúng ít có cơ hội gặp rắc rối như trên.

Tôi thường dùng cách cấu hình dưới đây cho PIC16F88x:
Code:
	__CONFIG  _CONFIG1, _HS_OSC & _FCMEN_OFF & _IESO_OFF & _CP_OFF & _WDT_OFF & _BOR_ON & _PWRTE_ON & _LVP_OFF & _DEBUG_OFF
	__CONFIG  _CONFIG2, _WRT_OFF & _BOR21V
Phần liên quan đến bộ dao động là _HS_OSC có thể được thay đổi cho thích hợp với cấu hình phần cứng cụ thể.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 01:23 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam