| ??? 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
|
| Topic | Author | Date |
| 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 |



