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 ...

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 28-11-2009, 01:56 AM   #1
triallag
Nhập môn đệ tử
 
Tham gia ngày: Oct 2009
Bài gửi: 2
:
Lỗi khi dịch MPLAB IDE

Đoạn code của em như sau

Code:
LIST P=18F4520
#INCLUDE P18F4520.INC

#define		LATCH_DIR	        TRISA,1
#define		LATCH_DATA	PORTA,1

udata
	GREEN_SCREEN_BUFFER		RES		.8
	RED_SCREEN_BUFFER		RES		.8
	SEVEN_LED_BUFFER		RES		.8
	COLUMN_BUFFER			RES		.8
	
	INDEX_OF_BUFFER			RES		.1
	
	RED_DATA				RES		.1
	GREEN_DATA				RES		.1
	SEVEN_LED_DATA			RES		.1
	COLUMN_DATA				RES		.1

ORG		0X00
GOTO	MAIN
ORG		0X18
GOTO 	ISR_L


MAIN
	CALL	INIT_SPI
	CALL	INIT
	CALL	INIT_TIMER0
	GOTO	$

INIT_TIMER0
	BSF		RCON,IPEN	;enable priority interrupts.
	BSF		INTCON2,TMR0IP
	BCF		INTCON,TMR0IF	
	BSF		INTCON,TMR0IE
	BSF		INTCON,GIEH	
	BSF		INTCON,GIEL	
	CLRF	T0CON
	MOVLW	0xFF
	MOVWF	TMR0H
	MOVLW	0xFE
	MOVWF	TMR0L
	BSF		T0CON,TMR0ON
	RETURN

INIT_SPI
	CLRF	SSPCON1		;SET Fspi = f/4
	BSF		SSPCON1,5	;ENALBLE SPI MODE
	BCF		TRISC,5
	BCF		TRISC,3	
	return

INIT
	MOVLW	0x0F
	MOVWF	ADCON1 
	BCF		LATCH_DIR
	BCF		LATCH_DATA
	CLRF	INDEX_OF_BUFFER
	call 	Column_set_up
	call 	Red_set_up
	call	Green_set_up
	call 	Led_set_up
	RETURN

Buffer_set_up	macro 	buffer, temp_data
	movff temp_data, POSTINC0
	endm

Column_set_up
	movlw 	high 	COLUMN_BUFFER
	movwf 	FSR0H
	movlw 	low 	COLUMN_BUFFER
	movwf 	FSR0L
	movlw 0x01
	Buffer_set_up	COLUMN_BUFFER, WREG
	movlw 0x02
	Buffer_set_up	COLUMN_BUFFER, WREG
	movlw 0x04
	Buffer_set_up	COLUMN_BUFFER, WREG
	movlw 0x08
	Buffer_set_up	COLUMN_BUFFER, WREG
	movlw 0x10
	Buffer_set_up	COLUMN_BUFFER, WREG
	movlw 0x20
	Buffer_set_up	COLUMN_BUFFER, WREG
	movlw 0x40
	Buffer_set_up	COLUMN_BUFFER, WREG
	movlw 0x80
	Buffer_set_up	COLUMN_BUFFER, WREG
	return

Red_set_up
	movlw 	high 	RED_SCREEN_BUFFER
	movwf 	FSR0H
	movlw 	low 	RED_SCREEN_BUFFER
	movwf 	FSR0L
	movlw 0xff
	Buffer_set_up	RED_SCREEN_BUFFER, WREG
	Buffer_set_up	RED_SCREEN_BUFFER, WREG	
	Buffer_set_up	RED_SCREEN_BUFFER, WREG
	Buffer_set_up	RED_SCREEN_BUFFER, WREG	
	Buffer_set_up	RED_SCREEN_BUFFER, WREG
	Buffer_set_up	RED_SCREEN_BUFFER, WREG
	Buffer_set_up	RED_SCREEN_BUFFER, WREG
	Buffer_set_up	RED_SCREEN_BUFFER, WREG
	return
Green_set_up
	movlw 	high 	GREEN_SCREEN_BUFFER
	movwf 	FSR0H
	movlw 	low 	GREEN_SCREEN_BUFFER
	movwf 	FSR0L
	movlw 0x00
	Buffer_set_up	GREEN_SCREEN_BUFFER, WREG
	Buffer_set_up	GREEN_SCREEN_BUFFER, WREG
	Buffer_set_up	GREEN_SCREEN_BUFFER, WREG
	Buffer_set_up	GREEN_SCREEN_BUFFER, WREG
	Buffer_set_up	GREEN_SCREEN_BUFFER, WREG
	Buffer_set_up	GREEN_SCREEN_BUFFER, WREG
	Buffer_set_up	GREEN_SCREEN_BUFFER, WREG
	Buffer_set_up	GREEN_SCREEN_BUFFER, WREG
	Buffer_set_up	GREEN_SCREEN_BUFFER, WREG

	return

Led_set_up
	movlw 	high 	SEVEN_LED_BUFFER
	movwf 	FSR0H
	movlw 	low 	SEVEN_LED_BUFFER
	movwf 	FSR0L
	movlw 0x00
	Buffer_set_up	SEVEN_LED_BUFFER, WREG
	Buffer_set_up	SEVEN_LED_BUFFER, WREG
	Buffer_set_up	SEVEN_LED_BUFFER, WREG
	Buffer_set_up	SEVEN_LED_BUFFER, WREG
	Buffer_set_up	SEVEN_LED_BUFFER, WREG
	Buffer_set_up	SEVEN_LED_BUFFER, WREG
	Buffer_set_up	SEVEN_LED_BUFFER, WREG
	Buffer_set_up	SEVEN_LED_BUFFER, WREG
	Buffer_set_up	SEVEN_LED_BUFFER, WREG

	return

SPI_TRANSMIT	MACRO	TEMP_DATA;Has data been received (transmit complete)?
	MOVF 	TEMP_DATA, W	 ;W reg = contents of TXDATA
	MOVWF	SSPBUF
	BTFSS	SSPSTAT, BF	
	GOTO 	$-2	 ;No
	ENDM

UPDATE_DATA		MACRO	BUFFER,TEMP_DATA
	MOVLW	HIGH BUFFER			
	MOVWF	FSR0H 
	MOVLW	LOW	BUFFER			
	MOVWF	FSR0L
	MOVFF	INDEX_OF_BUFFER,WREG	
	ADDWF	FSR0L,F
	CLRF	        WREG
	ADDWFC	FSR0H	
	MOVFF	INDF0,TEMP_DATA
	ENDM

CLOCK_STORAGE
	BSF		LATCH_DATA
	NOP
	NOP
	BCF		LATCH_DATA
	NOP
	NOP
	BSF		LATCH_DATA
	RETURN

INCREASING_INDEX
	incf	INDEX_OF_BUFFER
	movlw .8
	cpfseq INDEX_OF_BUFFER
	goto exit
	clrf INDEX_OF_BUFFER
exit	
	return	

DISPLAY
	
	UPDATE_DATA		RED_SCREEN_BUFFER,RED_DATA
	UPDATE_DATA		GREEN_SCREEN_BUFFER,GREEN_DATA
	UPDATE_DATA		SEVEN_LED_BUFFER,SEVEN_LED_DATA
	UPDATE_DATA		COLUMN_BUFFER,COLUMN_DATA
	SPI_TRANSMIT	COLUMN_DATA
	SPI_TRANSMIT	SEVEN_LED_DATA
	SPI_TRANSMIT	GREEN_DATA
	SPI_TRANSMIT	RED_DATA
	CALL			INCREASING_INDEX
	CALL			CLOCK_STORAGE
	RETURN
 
ISR_L
	BCF		INTCON,TMR0IF	
	BCF		INTCON,TMR0ON
	MOVLW	0xFF
	MOVWF	TMR0H
	MOVLW	0xFE
	MOVWF	TMR0L
	call 	DISPLAY
	BSF		INTCON,TMR0ON

	retfie	
END
Em dùng IDE v7.05, con 18f4520, và đã add file 18f4520.lkr vào project, dịch thì ko báo lỗi, dòng cuối nó báo:
MPLINK 4.06, Linker
Copyright (c) 2006 Microchip Technology Inc.
Error - section '.org_1' can not fit the absolute section. Section '.org_1' start=0x00000018, length=0x000001d6
Errors : 1
lỗi này có nghĩa là gì vậy, sửa lại làm sao, mong mấy anh chỉ giúp

thay đổi nội dung bởi: namqn, 28-11-2009 lúc 08:41 AM. Lý do: định dạng code
triallag vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


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à 11:20 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