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