PDA

View Full Version : Lỗi khi dịch MPLAB IDE


triallag
28-11-2009, 01:56 AM
Đoạn code của em như sau

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

namqn
28-11-2009, 08:47 AM
Bạn hãy thêm ORG 0x28 vào ngay trước nhãn "MAIN".

Thân,

namqn
28-11-2009, 09:57 AM
Tôi vừa dịch thử code của bạn với MPLAB IDE v8.20, quá trình liên kết thành công, không bị lỗi giống như bạn.

Thân,

triallag
28-11-2009, 04:23 PM
Cảm ơn mình cài lại version mới chạy ngon luôn ko cần add thêm file .lkr:D