PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > MPASM

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

MPASM Lập trình bằng hợp ngữ là một việc làm vô cùng vất vả, tuy nhiên, để hiểu và làm việc với vi điều khiển, hợp ngữ trở thành một công cụ khá đắc lực ...

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 22-11-2007, 09:43 PM   #16
uydanh
Đệ tử 4 túi
 
Tham gia ngày: Jan 2007
Bài gửi: 79
:
Em học PIC16 chưa được bao lâu. Do tự tìm hiểu nên có nhưng lỗi rất hay gặp nhưng ko thể nào giải thích nỗi. Hôm nay, em gõ y nguyên một đoạn code vô tình kiếm được vào mplab, nó báo lỗi thế này :
Error - section '.org_0' can not fit the absolute section. Section '.org_0' start=0x00000004, length=0x00000046
Errors : 1

Link step failed.
BUILD FAILED: Thu Nov 22 21:26:50 2007
Nó chỉ báo lỗi như thế, nhưng bên trên lại không thấy dòng error nào. Kinh nghiệm của em là cứ bỏ dòng ORG 0000 đi là ok. Nhưng hôm nay, chương trình này sử dụng ngắt nên trước đó xài ORG 0x0004, bây giờ bỏ ORG 0000 cũng vô tác dụng. Quả thật em không hiểu vì sao nữa. Bê y nguyên của người ta vào mà vẫn không chạy được. Rất mong mọi người giúp đỡ và giảng giải chổ này giùm em. Chân thành cảm ơn.
uydanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-11-2007, 09:59 PM   #17
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 uydanh View Post
Em học PIC16 chưa được bao lâu. Do tự tìm hiểu nên có nhưng lỗi rất hay gặp nhưng ko thể nào giải thích nỗi. Hôm nay, em gõ y nguyên một đoạn code vô tình kiếm được vào mplab, nó báo lỗi thế này :
Error - section '.org_0' can not fit the absolute section. Section '.org_0' start=0x00000004, length=0x00000046
Errors : 1

Link step failed.
BUILD FAILED: Thu Nov 22 21:26:50 2007
Nó chỉ báo lỗi như thế, nhưng bên trên lại không thấy dòng error nào. Kinh nghiệm của em là cứ bỏ dòng ORG 0000 đi là ok. Nhưng hôm nay, chương trình này sử dụng ngắt nên trước đó xài ORG 0x0004, bây giờ bỏ ORG 0000 cũng vô tác dụng. Quả thật em không hiểu vì sao nữa. Bê y nguyên của người ta vào mà vẫn không chạy được. Rất mong mọi người giúp đỡ và giảng giải chổ này giùm em. Chân thành cảm ơn.
Bạn nên post những gì bạn đã gõ vào MPLAB. Đây là lỗi xuất hiện khi liên kết chương trình, có những đoạn được quy định sẵn trong kịch bản liên kết, dành cho những mục đích khác nhau (như vector reset, các vector ngắt, các trang chương trình). Tôi cũng gặp những lỗi như thế này, và thường can thiệp vào tập tin liên kết để phản ánh đúng cấu trúc cụ thể của chương trình.

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
Old 23-11-2007, 10:03 AM   #18
uydanh
Đệ tử 4 túi
 
Tham gia ngày: Jan 2007
Bài gửi: 79
:
Đây là toàn bộ chương trình mà em kiếm được.
Code:
;===================================================================================================
;CHUONG TRINH SU DUNG TIMER0 HIEN THI LED 7 DOAN
;===================================================================================================
	processor 16f877a
	#include	<p16f877a.inc>
	__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF
;===================================================================================================
;KHAI BAO BIEN
;===================================================================================================
	count1		EQU 0x20			;Cac thanh ghi su dung trong chuong trinh delay
	counta      EQU 0x21
	countb		EQU	0x22

	hang_don_vi	EQU 0x23			;Cac thanh ghi chua gia tri can
	hang_chuc	EQU 0x24			;hien thi ra led 7 doan
	
	W_save		EQU	0x25			;Cac thanh ghi dung de cat cac
	PCLATH_save	EQU	0x26			;thanh ghi quan trong khi thuc thi
	STATUS_save	EQU	0x27			;chuong trinh ngat
	FSR_save	EQU 0x28
;====================================================================================================
;CHUONG TRINH NGAT
;====================================================================================================
	ORG 0x0004
	GOTO ISR
ISR
;====================================================================================================
;DOAN CHUONG TRINH BAT BUOC DAU CHUONG TRINH NGAT DE LUU CAC THANH GHI QUAN TRONG
;====================================================================================================
	MOVWF	W_save
	SWAPF	STATUS,W
	CLRF 	STATUS
	MOVWF 	STATUS_save
	MOVF	PCLATH,W
	MOVWF 	PCLATH_save
	CLRF	PCLATH
	MOVF	FSR,W
	MOVWF	FSR_save
	
	
	BTFSS	INTCON,TMR0IF			;Kiem tra co ngat Timer0
	GOTO	exit_int				;Neu co ngat chua duoc set, thoat khoi
									;chuong trinh ngat
	BCF		INTCON,TMR0IF			;Neu co ngat da duoc set, thi tien hanh xoa co ngat de
									;nhan biet thoi diem tiep theo xay ra ngat
;====================================================================================================
;CAC THAO TAC CHINH CUA CHUONG TRINH NGAT TRONG TRUONG HOP CO NGAT TIMER0 XAY RA
;====================================================================================================
	INCF 	hang_don_vi				;tang hang don vi
	MOVLW	0x0A				
	XORWF	hang_don_vi,0			;so sanh hang don vi voi 10
	BTFSS 	STATUS,Z				;neu chua bang 10
	GOTO 	exit_int				;thi thoat khoi chuong trinh ngat
	CLRF	hang_don_vi				;neu bang 10 roi thi xoa hang don vi
	INCF	hang_chuc,1				;tang hang chuc len 1
	MOVLW	0x0A					
	XORWF	hang_chuc,0				;so sanh hang chuc voi 10
	BTFSS	STATUS,Z				;neu chua bang 10
	GOTO 	exit_int				;thi thoat khoi chuong trinh ngat
	CLRF	hang_chuc				;neu da bang 10 thi xoa hang chuc, bat dau dem lai
	GOTO 	exit_int
;=====================================================================================================
;DOAN CHUONG TRINH BAT BUOC TRUOC KHI ROI KHOI NGAT
;=====================================================================================================
exit_int
	MOVF 	FSR_save,W
	MOVWF 	FSR
	MOVF 	PCLATH_save,W
	MOVWF	PCLATH
	SWAPF	STATUS_save,W
	MOVWF 	STATUS
	SWAPF 	W_save,1
	SWAPF	W_save,0
	RETFIE
;====================================================================================================
;KET THUC CHUONG TRINH NGAT
;====================================================================================================
	ORG 	0x0000
	GOTO	start
	ORG 	0x050
;====================================================================================================
;BAT DAU CHUONG TRINH CHINH
;====================================================================================================
start
;====================================================================================================
;KHOI TAO CAC PORT
;====================================================================================================
	BCF		STATUS,RP1
	BSF		STATUS,RP0				;Chon bank1

	MOVLW	0x00
	MOVWF	TRISD					;PORTD la port xuat
	MOVLW	b'11111100'
	MOVWF	TRISB					;PORTB <1:0> la output
	
	BCF 	STATUS,RP0				;Chon bank0
	
	CLRF	PORTD
	MOVLW	b'00000011'				;tat cac led hang chuc va hang don vi
	MOVWF	PORTB

;====================================================================================================
;KHOI TAO TIMER 0
;====================================================================================================
	CLRF	TMR0					;xoa thanh ghi TMR0
	CLRF	INTCON
	BSF		STATUS,RP0				;chon Bank 1 
	MOVLW 	b'10000001'				;tat chuc nang keo len o PORTB 	bit7=RBPU=1
									;chon xung dem la xung noi		bit6=TOCS=0 
									;xung clock tac dong canh len	bit5=TOSE=0
									;toc do dem tac dong len TIMER0	bit3=PSA=0
	MOVWF 	OPTION_REG				;tan so prescaler la 1:4
	
	BCF		STATUS,RP0
	BSF		INTCON,TMR0IE			;cho phep ngat timer0
	BSF		INTCON,PEIE				;cho phep ngat ngoai vi
	BSF		INTCON,GIE				;cho phep toan bo cac ngat
;====================================================================================================
;KHOI TAO CAC BIEN
;====================================================================================================
	CLRF	hang_chuc
	CLRF	hang_don_vi
;====================================================================================================
;VONG LAP CHINH
;====================================================================================================
main
	CALL 	hien_thi
	GOTO 	main
;====================================================================================================
;CHUONG TRINH CON HIEN THI CAC GIA TRI CHUA TRONG CAC THANH GHI hang_chuc VA hang_don_vi
;HIEN RA CAC LED HANG DON VI VA HANG CHUC
;====================================================================================================
hien_thi
	MOVF	hang_chuc,0				;hien thi LED hang chuc
	CALL	table
	MOVWF	PORTD
	MOVLW	b'11111101'
	MOVWF	PORTB
	CALL	delay_1ms

	
	MOVF	hang_don_vi,0			;hien thi LED hang don vi
	CALL 	table
	MOVWF	PORTD
	MOVLW	b'11111110'
	MOVWF	PORTB
	CALL	delay_1ms
	RETURN
;======================================================================================================
;CAC CHUONG TRINH CON DUNG CHO CHUONG TRINH CON HIEN_THI
;======================================================================================================
table
	ADDWF	PCL,1
	RETLW	0xC0
	RETLW	0xF9
	RETLW	0xA4
	RETLW	0xB0
	RETLW	0x99
	RETLW	0x92
	RETLW	0x82
	RETLW	0xF8
	RETLW	0x80
	RETLW	0x90
delay_1ms
	MOVLW 	d'100'
	MOVWF 	count1
d2	MOVLW	0xC7
	MOVWF	counta
	MOVLW	0x01
	MOVWF	countb
delay_1
	DECFSZ	counta,1
	GOTO 	$+1
	DECFSZ	countb,1
	GOTO	delay_1
	DECFSZ	count1,1
	GOTO 	d2
	RETURN
END
Em cảm ơn anh Nam rất nhiều. Anh giúp em giải quyết triệt để cái lỗi này luôn nha anh Nam.
uydanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-11-2007, 10:08 AM   #19
uydanh
Đệ tử 4 túi
 
Tham gia ngày: Jan 2007
Bài gửi: 79
:
Và đây là lỗi mplab báo :
Code:
Clean: Deleting intermediary and output files.
Clean: Deleted file "C:\ngat\16F877ATMPO.o".
Clean: Deleted file "C:\ngat\16F877ATMPO.lst".
Clean: Deleted file "C:\ngat\ngattimer.mcs".
Clean: Done.
Executing: "C:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F877A "16F877ATMPO.ASM" /l"16F877ATMPO.lst" /e"16F877ATMPO.err" /o"16F877ATMPO.o"
Warning[207] C:\NGAT\16F877ATMPO.ASM 10 : Found label after column 1. (count1)
Warning[207] C:\NGAT\16F877ATMPO.ASM 11 : Found label after column 1. (counta)
Warning[207] C:\NGAT\16F877ATMPO.ASM 12 : Found label after column 1. (countb)
Warning[207] C:\NGAT\16F877ATMPO.ASM 14 : Found label after column 1. (hang_don_vi)
Warning[207] C:\NGAT\16F877ATMPO.ASM 15 : Found label after column 1. (hang_chuc)
Warning[207] C:\NGAT\16F877ATMPO.ASM 17 : Found label after column 1. (W_save)
Warning[207] C:\NGAT\16F877ATMPO.ASM 18 : Found label after column 1. (PCLATH_save)
Warning[207] C:\NGAT\16F877ATMPO.ASM 19 : Found label after column 1. (STATUS_save)
Warning[207] C:\NGAT\16F877ATMPO.ASM 20 : Found label after column 1. (FSR_save)
Message[305] C:\NGAT\16F877ATMPO.ASM 49 : Using default destination of 1 (file).
Message[302] C:\NGAT\16F877ATMPO.ASM 92 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] C:\NGAT\16F877ATMPO.ASM 94 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] C:\NGAT\16F877ATMPO.ASM 112 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Warning[205] C:\NGAT\16F877ATMPO.ASM 179 : Found directive in column 1. (END)
Executing: "C:\Program Files\Microchip\MPASM Suite\MPLink.exe" "C:\ngat\16f877a.lkr" "C:\ngat\16F877ATMPO.o" /o"ngattimer.cof" /M"ngattimer.map" /W
MPLINK 4.11, Linker
Copyright (c) 2007 Microchip Technology Inc.
Error - section '.org_0' can not fit the absolute section. Section '.org_0' start=0x00000004, length=0x00000046
Errors    : 1

Link step failed.
BUILD FAILED: Fri Nov 23 09:58:54 2007
uydanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-11-2007, 10:19 AM   #20
uydanh
Đệ tử 4 túi
 
Tham gia ngày: Jan 2007
Bài gửi: 79
:
À quên, em xin nói rõ thêm : khi em tạo một project trong malab thì tức nhiên nó sẽ khai báo sẵn một số thứ như vecto ngắtv.v...Trong các trường hợp đó cứ gõ ORG 0000 trong chương trình chính của mình là báo lỗi như trên. Em nghĩ có lẽ vì có các khai sẵn của mplab rồi nên chương trình ko bắt đầu từ 0000 nữa, vậy báo lỗi là đúng và em xóa đi, chương trình OK liền.
Còn khi tạo một project mà em xóa tất cả những khai báo mặc nhiên của mplab thì chương trình không bao giờ dịch được dù em gõ đúng hoàn toàn không sai một từ so với chương trình mẫu. Lỗi nó cũng báo giống như trên.
Đoạn chương trình trên em gõ vào mplab khi xóa hết các khai báo mặc nhiên của mplab.Nói chung đó là tất cả những gì trên trang soạn thảo chương trình của em, không có các khai báo sẵn của mplab.
uydanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-11-2007, 05:59 PM   #21
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
Tôi dùng Project Wizard để tạo ra một project mới, chọn PIC16F877A, chọn bộ công cụ ngôn ngữ là MPASM, sau đó tạo một thư mục mới cho project, và chấp nhận các thiết lập khác của MPLAB. Sau đó tôi tạo một tập tin .asm mới trong MPLAB và copy toàn bộ source code của bạn vào một tập tin đó, lưu lại và thêm tập tin đó vào project. Quá trình biên dịch diễn ra thành công, với các warning như đã xuất hiện trong trường hợp của bạn. Tôi dùng MPLAB 7.60.

Bạn thử làm lại theo các bước mà tôi đã mô tả xem sao, nếu vẫn không biên dịch thành công thì tôi sẽ nói thêm về các biện pháp khác.

Phần khai báo biến của bạn nên viết như sau để tránh các warning [207]:
Code:
	cblock 0x20
	count1			;Cac thanh ghi su dung trong chuong trinh delay
	counta
	countb

	hang_don_vi		;Cac thanh ghi chua gia tri can
	hang_chuc		;hien thi ra led 7 doan
	
	W_save			;Cac thanh ghi dung de cat cac
	PCLATH_save		;thanh ghi quan trong khi thuc thi
	STATUS_save		;chuong trinh ngat
	FSR_save
	endc
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
Old 23-11-2007, 08:39 PM   #22
uydanh
Đệ tử 4 túi
 
Tham gia ngày: Jan 2007
Bài gửi: 79
:
Trời, làm theo những bước mà anh Nam nói, quả thật chương trình dịch rất ngon, không còn một lỗi nào cả. Cảm ơn anh Nam rất nhiều.
À, em cũng đã đặt câu hỏi này bên diễn đàn khoa Điện của DHBK HCM mà chưa thấy ai trả lời. Anh cho phép em chép nguyên văn trả lời của anh qua đó nha anh Nam, để bạn nào bị giống em có cách giải quyết. (em chép trước rồi ,hihii)
Cảm ơn anh Nam rất nhiều.
uydanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-11-2007, 02:52 PM   #23
microchipnam
Nhập môn đệ tử
 
Tham gia ngày: Sep 2007
Bài gửi: 2
:
loi nay nen viet nhu sau moi dung:
org 0x00
goto start
org 0x06 ;gia tri nay co the tuy thuoc vao lenh bao "..lengh..." o phan bao loi!!!
microchipnam vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-11-2007, 02:57 PM   #24
microchipnam
Nhập môn đệ tử
 
Tham gia ngày: Sep 2007
Bài gửi: 2
:
loi nay anh cung gap ,em nen them vao cac lenh sau (nen dat o dau chuong trinh)
org 0x00
goto start
org 0x46
microchipnam 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à 04:08 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