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

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
08/30/07 10:36
Read: times


 
#143751 - help me in debugging asm code
on running the following asm code, the display "TANKTRACKS" continues in a loop 3 to 4 times. and mode info is displayed based on external pin inputs p1.0 and p1.1. please help me in debugging so that the display comes only once.



;LCD PROGRAM TO DISPLAY "TANKTRACKS..."

RS EQU P2.5
EN EQU P1.2
LCD EQU P0

ORG 0
LJMP MAIN
ORG 0023H
LJMP SRL_ISR
ORG 0030H
MAIN:
SETB P1.0; MAKE THEM AS INPUT PINS
SETB P1.1;
MOV IE,0H ; DISABLE INTERRUPTS
ACALL INIT_LCD; INIT LCD
MOV A,#54H ; DISPLAY "TANKTRACKS"
ACALL DISP_CHAR
MOV A,#41H
ACALL DISP_CHAR
MOV A,#4EH
ACALL DISP_CHAR
MOV A,#4BH
ACALL DISP_CHAR
MOV A,#54H
ACALL DISP_CHAR
MOV A,#52H
ACALL DISP_CHAR
MOV A,#41H
ACALL DISP_CHAR
MOV A,#43H
ACALL DISP_CHAR
MOV A,#4BH
ACALL DISP_CHAR
MOV A,#53H
ACALL DISP_CHAR
MOV R3,#1FH
AGAIN:ACALL DELAY_CHAR
DJNZ R3,AGAIN
MOV A,P1; READING MODE INFO
ANL A,#03H; STORING ONLY P1.0 AND P1.1
MOV R1,A; MODE INFO IN R1
ACALL SETSRL ; SET SERIAL PORT
MOV DPTR,#0000H ; PTR FOR STORING/ READING GPS DATA IN NVRAM
ACALL SHOW_STATUS
MOV IE,#90H ; ENABLE SERIAL INTERRRUPT
LJMP WAIT
INIT_LCD:
MOV A, #38H
ACALL LCDCMD
MOV A,#02H
ACALL LCDCMD
MOV A,#0FH
ACALL LCDCMD
MOV A,#81H
ACALL LCDCMD
MOV A,#01H
ACALL LCDCMD
RET
LCDCMD:
MOV LCD,A
CLR RS
SETB EN
ACALL DELAY_INIT
CLR EN
RET
DELAY_INIT:
MOV R7,#0FFH
LOOP:MOV R0,01H
DELAY:DJNZ R0,DELAY
DJNZ R7,LOOP
RET
DELAY_CHAR:
MOV R7,#0FFH
LOOP1:MOV R0,09H
DELAY1:DJNZ R0,DELAY1
DJNZ R7,LOOP1
RET
DISP_CHAR:
SETB RS
MOV LCD,A
SETB EN
ACALL DELAY_CHAR
CLR EN
ACALL DELAY_CHAR
RET
SETSRL: MOV TMOD,#20H ; TIMER 1 , AUTO RELOAD MODE
MOV SCON,#50H ; 8N1
MOV TH1,#0FDH; 9600 BAUDS
MOV A,PCON ; DOUBLE THE BAUD RATE
SETB ACC.7
MOV PCON,A
SETB TR1 ; START TIMER T1
RET
SHOW_STATUS:MOV A,#01H
ACALL LCDCMD
MOV A,#82H
ACALL LCDCMD
MOV A,#4DH
ACALL DISP_CHAR
MOV A,#4FH
ACALL DISP_CHAR
MOV A,#44H
ACALL DISP_CHAR
MOV A,#45H
ACALL DISP_CHAR
RET
SRL_ISR:
MOV A,#0C8H
ACALL LCDCMD
MOV A,#1AH
ACALL DISP_CHAR
MOV A,R1
JB ACC.1,MODE3OR4
JB ACC.0,MODE1
SJMP MODE2
MODE3OR4: JB ACC.0,MODE3
SJMP MODE4
MODE1:
MOV A,#24H
ACALL DISP_CHAR
JB TI,TRANS1
MOV A,SBUF
MOV R2,A; STORE RECD BYTE IN R2 TEMPORARILY
MOV A,82H; DPTR DPH TO ACC
CLR C; CLEAR CARRY
SUBB A,#0FFH
JNC NOTFULL
CLR C
MOV A,83H
SUBB A,#1FH
JC NOTFULL
SJMP FULL
NOTFULL:MOV A,R2 ; GET RECD BYTE BACK FROM R2
MOVX @DPTR,A
INC DPTR
CLR RI
RETI
FULL:MOV IE,80H ; NVRAM FULL SO DISABLE SERIAL INTERRUPT
RETI
TRANS1: CLR TI
RETI

MODE2: NOP
MODE3: NOP
MODE4: NOP
WAIT: MOV A,#01H
ACALL DISP_CHAR
MOV A,#0C1H
ACALL LCDCMD
SJMP WAIT
END




List of 5 messages in thread
TopicAuthorDate
help me in debugging asm code            01/01/70 00:00      
   too tough to read            01/01/70 00:00      
   Formatted and some comments            01/01/70 00:00      
      LCD and Serial Port Initialization            01/01/70 00:00      
         it\\\'s still very badly written            01/01/70 00:00      

Back to Subject List