PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   MPASM (http://www.picvietnam.com/forum/forumdisplay.php?f=34)
-   -   Lỗi khi dịch MPLAB IDE (http://www.picvietnam.com/forum/showthread.php?t=5407)

triallag 28-11-2009 01:56 AM

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

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


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

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam