Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
08/25/10 22:51
Read: times


 
#178319 - help in Assembly compiling please
hi guys

i'm trying to compile the following code in uVision and it gives error:
test-555.asm(359): error A51: TARGET OUT OF RANGE
the label "PROCESS" is availbe, so what that means OUT of range?! range of what?!


								  ;********************************************************************
; APPLICATION PROGRAM FOR COUNTER(LCD ,SQUARE WAVE O/P AT PIN NO. 32 (P0.7) AND KEYBOARD MODULE)
;OUTPUT DISPLAY-----> 
;!!!!!!!!!!!!!!!!!!!!!
;!!STATUS:START/STOP!!
;!!        00:00sec !!
;!!!!!!!!!!!!!!!!!!!!!
;;********************************************************************

                ORG     0000H
                LJMP    STARTUP         ;POWER-ON RESET

                ORG     0003H
                LJMP    INTRPT0         ;EXTERNAL INTERRUPT 0

                ORG     000BH
                LJMP    TIMER0          ;TIMER 0 OVERFLOW

                ORG     0013H
                LJMP    INTRPT1         ;EXTERNAL INTERRUPT 1

                ORG     001BH
                LJMP    TIMER1          ;TIMER 1 OVERFLOW

                ORG     0023H
                LJMP    SERIAL          ;UART RX/TX INTERRUPT

;
;********************************************************************
; BYTE VARIABLES
;
;
TEMP_KEY        DATA    40H
KEY_ID          DATA    41H

CHAR1           DATA    50h
CHAR2           DATA    51h
CHAR3           DATA    52h
CHAR4           DATA    53h
CHAR5           DATA    54h
CHAR6           DATA    55h
CHAR7           DATA    56h
CHAR8           DATA    57h
;                       
CHAR9           DATA    58h
CHAR10          DATA    59h
CHAR11          DATA    5Ah
CHAR12          DATA    5Bh
CHAR13          DATA    5Ch
CHAR14          DATA    5Dh
CHAR15          DATA    5Eh
CHAR16          DATA    5Fh
;
CHAR17          DATA    60h
CHAR18          DATA    61h
CHAR19          DATA    62h
CHAR20          DATA    63h
CHAR21          DATA    64h
CHAR22          DATA    65h
CHAR23          DATA    66h
CHAR24          DATA    67h
;                       
CHAR25          DATA    68h
CHAR26          DATA    69h
CHAR27          DATA    6Ah
CHAR28          DATA    6Bh
CHAR29          DATA    6Ch
CHAR30          DATA    6Dh
CHAR31          DATA    6Eh
CHAR32          DATA    6Fh

;********************************************************************
; BIT VARIABLES
;
LCD_D0          BIT     P1.0
LCD_D1          BIT     P1.1
LCD_D2          BIT     P1.2
LCD_D3          BIT     P1.3
LCD_D4          BIT     P1.4
LCD_D5          BIT     P1.5
LCD_D6          BIT     P1.6
LCD_D7          BIT     P1.7

LCD_EN          BIT     P3.5
LCD_RW          BIT     P3.6
LCD_RS          BIT     P3.7

LCD_DATA        EQU     P1

ADDR1           EQU     80h
ADDR2           EQU     90h

RUNFLG          BIT     20H
;********************************************************************
; CONSTANTS/EXPRESSIONS
;
;********************************************************************
; MAIN PROGRAM STARTS HERE
;
STARTUP:        MOV     SP,#07h
                CLR     RUNFLG
                LCALL   RAM_INIT

                CLR     LCD_RS
                CLR     LCD_RW
                SETB    LCD_EN
                NOP
                CLR     LCD_EN

                LCALL   LCD_INIT
                LCALL   DELAY
                LCALL   DELAY

                MOV     A,#'*'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'*'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'*'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'*'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'*'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'*'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'A'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'T'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'S'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'*'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'*'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'*'

                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'*'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'*'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'*'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'*'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY


                MOV     A,#0C0h
                LCALL   SEND_CMD
                LCALL   CHK_BUSY

                MOV     A,#'C'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'E'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'N'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'T'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY		
                
                MOV     A,#'I'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#20H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'S'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'E'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'C'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'.'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

		MOV     A,#20H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'T'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY		
                
                MOV     A,#'I'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'M'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'E'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#'R'
                LCALL   SEND_DATA
                LCALL   CHK_BUSY



                MOV     R2,#08H
REPEAT:         LCALL   DELAY
                DJNZ    R2,REPEAT

                LCALL   MESSAGE1
                LCALL   DISP1
                LCALL   DISP2

                CLR     RUNFLG
                MOV     CHAR25,#30H
                MOV     CHAR26,#30H
                MOV     CHAR28,#30H
                MOV     CHAR29,#30H

                MOV     A,#0C8H
                LCALL   SEND_CMD
                LCALL   CHK_BUSY

                MOV     A,CHAR25
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR26
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#0CBH
                LCALL   SEND_CMD
                LCALL   CHK_BUSY

                MOV     A,CHAR28
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR29
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                LCALL   TMR0_INIT       ; TIMER 0 CALL

PROCESS:        LCALL   WAIT_FOR_KEY

                MOV     A,KEY_ID
                CLR     C
                SUBB    A,#01H          ;CHECK IF IT IS START/STOP KEY
                JZ      STRT_STP

                MOV     A,KEY_ID
                CLR     C
                SUBB    A,#02H          ;CHECK IF IT IS RESET KEY
                JZ      RST_KEY

                MOV     A,KEY_ID
                CLR     C
                SUBB    A,#04H          ;CHECK IF IT IS PULSE KEY
                JZ      PULSE_KEY

                CLR     A
                MOV     TEMP_KEY,A
                MOV     KEY_ID,A
                SJMP PROCESS

RST_KEY:        MOV     A,#0C8H
                LCALL   SEND_CMD
                LCALL   CHK_BUSY

                MOV     A,#30H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#30H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#0CBH
                LCALL   SEND_CMD
                LCALL   CHK_BUSY

                MOV     A,#30H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#30H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY


RST_CNTR:       MOV     A,#30H
                MOV     CHAR29,A
                MOV     CHAR28,A
                MOV     CHAR26,A
                MOV     CHAR25,A

                SJMP    PROCESS

STRT_STP:       CPL     RUNFLG
                MOV     KEY_ID,#00H
                MOV     TEMP_KEY,#00H
                JB      RUNFLG,MODIFY
                LCALL   MESSAGE1
                LCALL   DISP1
                SJMP    PROCESS
MODIFY:         LCALL   MESSAGE2
                LCALL   DISP1
                SJMP    PROCESS //error is here too!!!

PULSE_KEY:      JB      RUNFLG,INCR
                MOV     KEY_ID,#00H
                MOV     TEMP_KEY,#00H
                SJMP    PROCESS

INCR:           LCALL   COUNTER
                MOV     A,#0C8H
                LCALL   SEND_CMD
                LCALL   CHK_BUSY

                MOV     A,CHAR25
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR26
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#0CBH
                LCALL   SEND_CMD
                LCALL   CHK_BUSY

                MOV     A,CHAR28
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR29
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     KEY_ID,#00H
                MOV     TEMP_KEY,#00H
                LJMP    PROCESS //error is here too!!!!!!!!!!!!!!!!!!


;********************************************************************
; FUNCTIONS/SUBROUTINES

RAM_INIT:       MOV     R0,#30H
                CLR     A
REPEAT3:        MOV     @R0,A

                INC     R0
                CJNE    R0,#00H,REPEAT3
                RET

LCD_INIT:       ACALL   DELAY
                ACALL   DELAY
                ACALL   DELAY
                ACALL   DELAY

                MOV     A,#30h
                ACALL   SEND_CMD
                ACALL   DELAY
                ACALL   DELAY

                MOV     A,#30h
                ACALL   SEND_CMD
                MOV     R7,#0FFh
                DJNZ    R7,$
                MOV     R7,#0FFh
                DJNZ    R7,$
                ACALL   CHK_BUSY

                MOV     A,#30h
                ACALL   SEND_CMD
                ACALL   CHK_BUSY

                MOV     A,#38h
                ACALL   SEND_CMD
                ACALL   CHK_BUSY

                MOV     A,#08h
                ACALL   SEND_CMD
                ACALL   CHK_BUSY

                MOV     A,#0Eh
                ACALL   SEND_CMD
                ACALL   CHK_BUSY

                MOV     A,#06h
                ACALL   SEND_CMD
                ACALL   CHK_BUSY

                MOV     A,#01h
                ACALL   SEND_CMD
                ACALL   CHK_BUSY

                MOV     A,#0CH
                ACALL   SEND_CMD
                ACALL   CHK_BUSY

                ACALL   DELAY
                ACALL   DELAY
                RET
;
;
CHK_BUSY:       MOV     LCD_DATA,#0FFh
                CLR     LCD_RS
                SETB    LCD_RW
                NOP
CHECK:          CLR     LCD_EN
                SETB    LCD_EN
                NOP
                JB      LCD_D7,CHECK
                CLR     LCD_EN
                RET
;
;
SEND_CMD:       MOV     LCD_DATA,A
                CLR     LCD_RS
                CLR     LCD_RW
                SETB    LCD_EN
                NOP
                NOP
                CLR     LCD_EN
                RET
;
;
SEND_DATA:      MOV     LCD_DATA,A
                SETB    LCD_RS
                CLR     LCD_RW
                SETB    LCD_EN
                NOP
                NOP
                CLR     LCD_EN
                RET
;
;
DISP1:          MOV     A,#80h
                LCALL   SEND_CMD
                LCALL   CHK_BUSY
             
                MOV     A,CHAR1
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR2
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR3
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR4
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR5
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR6
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR7
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR8
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR9
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR10
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR11
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR12
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR13
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR14
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR15
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,CHAR16
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                RET
;
;
DISP2:          MOV     A,#0C0h
                LCALL   SEND_CMD
                LCALL   CHK_BUSY

                MOV     A,#20H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#20H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#20H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#20H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#20H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#20H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#20H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#20H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#30H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#30H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#3AH
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#30H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#30H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#73H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#65H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                MOV     A,#63H
                LCALL   SEND_DATA
                LCALL   CHK_BUSY

                RET

DELAY:          MOV     R6,#00H
                MOV     R7,#00H
WAIT:           DJNZ    R6,$
                DJNZ    R7,WAIT
                RET

REPEAT4:        MOVC    A,@A+DPTR
                MOV     @R0,A
                INC     R0
                INC     R1
                MOV     A,R1
                CJNE    R1,#10H,REPEAT4
                CLR     A
                MOV     R0,A
                MOV     R1,A
                RET

COUNTER:        MOV     A,CHAR29
                SUBB    A,#3AH
                INC     A
                JZ      CARRY1
                INC     CHAR29
                RET

CARRY1:         MOV     CHAR29,#30H
                MOV     A,CHAR28
                CLR     C
                INC     A
                SUBB    A,#3AH
                INC     A
                JZ      CARRY2
                INC     CHAR28
                RET

CARRY2:         MOV     CHAR28,#30H 
                MOV     A,CHAR26
                CLR     C
                INC     A
                SUBB    A,#3AH
                JZ      CARRY3
                INC     CHAR26
                RET

CARRY3:         MOV     CHAR26,#30H   
                MOV     A,CHAR25
                CLR     C
                INC     A
                SUBB    A,#3AH
                JZ      CARRY4
                INC     CHAR25
                RET


CARRY4:         MOV     CHAR25,#30H
                RET

;
WAIT_FOR_KEY:   MOV     A,P2
                CPL     A
                JZ      WAIT_FOR_KEY    ; NO KEY PRESSED

                MOV     TEMP_KEY,A      ; KEY PRESS DETECTED
                LCALL   DELAY
                MOV     A,P2
                CPL     A
                CLR     C
                SUBB    A,TEMP_KEY
                JNZ     WAIT_FOR_KEY
                MOV     KEY_ID,TEMP_KEY
                MOV     TEMP_KEY,#00H
                RET

MESSAGE1:       MOV     CHAR1,#'S'
                MOV     CHAR2,#'T'
                MOV     CHAR3,#'A'
                MOV     CHAR4,#'T'

                MOV     CHAR5,#'U'
                MOV     CHAR6,#'S'
                MOV     CHAR7,#20H
                MOV     CHAR8,#':'

                MOV     CHAR9,#'S'
                MOV     CHAR10,#'T'
                MOV     CHAR11,#'O'
                MOV     CHAR12,#'P'

                MOV     CHAR13,#20H
                MOV     CHAR14,#20H
                MOV     CHAR15,#20H
                MOV     CHAR16,#20H


                RET


MESSAGE2:       MOV     CHAR1,#'S'
                MOV     CHAR2,#'T'
                MOV     CHAR3,#'A'
                MOV     CHAR4,#'T'

                MOV     CHAR5,#'U'
                MOV     CHAR6,#'S'
                MOV     CHAR7,#20H
                MOV     CHAR8,#':'

                MOV     CHAR9,#'S'
                MOV     CHAR10,#'T'
                MOV     CHAR11,#'A'
                MOV     CHAR12,#'R'

                MOV     CHAR13,#'T'
                MOV     CHAR14,#20H
                MOV     CHAR15,#20H
                MOV     CHAR16,#20H

                RET
;
;SQUARE WAVE GENERATION ROUTINE
;
TMR0_INIT:      MOV     TL0,#0F0H
                MOV     TH0,#0DBH
                SETB    IE.7          ;iNTRUPPUT ENABLE
                SETB    IE.1
                MOV     TMOD,#01H     ;
                NOP
                NOP
                SETB    TCON.4        ; SET TR1
                RET
;
;
;********************************************************************
; INTERRUPT SERVICE ROUTINES
;********************************************************************
;

INTRPT0:        NOP
                RETI
;
;********************************************************************
;
TIMER0:         CLR     TCON.4		; CLEAR TR1
                CPL     P0.7		; COMPLEMENT P0.7
                MOV     TL0,#0F0H
                MOV     TH0,#0D0H
                SETB    TCON.4
                RETI
;
;********************************************************************
;
INTRPT1:        NOP
                RETI
;
;********************************************************************
;
TIMER1:         NOP
                RETI
;
;********************************************************************
;
SERIAL:         NOP
                RETI
;
;********************************************************************
;DISPLAY STRINGS
;

END


 



List of 5 messages in thread
TopicAuthorDate
help in Assembly compiling please            01/01/70 00:00      
   Instructions can't always store full target address            01/01/70 00:00      
      Dear Per Westermark            01/01/70 00:00      
   Code is horrific            01/01/70 00:00      
      hi Michael            01/01/70 00:00      

Back to Subject List