Hello All, I am having a few problems using a few assembler directives from today morning. I had a lcd routine program.Its working fine and I have been using this for past 1 year. Now to make the code more modular,I have made a few changes using the assembler directives.This code doesnt work,and I am unable to figure it out why.A little help is needed. The following are the two files.The first one is the one which is working fine...
;SUBROUTINE TO DISPLAY DATA ON A 2 LINE LCD IN 4 BIT MODE ;PRECAUTION, THE LCD_INIT SUBROUTINE SHOULD BE CALLED ONLY ONCE ;THIS IS A WORKING CODE. ;SYSTEM uC --> 89C51 ;CLOCK --> 11.0592 MHz TEMP1 EQU 6FH TEMP2 EQU 6EH TEMP3 EQU 6DH TEMP4 EQU 6CH TEMP5 EQU 6BH LCD_D3 EQU P2.2 LCD_D2 EQU P2.3 LCD_D1 EQU P2.4 LCD_D0 EQU P2.5 EN EQU P2.6 RS EQU P2.7 LITE EQU P2.1 ORG 0000H LJMP 0100H ORG 0100H LCALL DLAYms SETB LITE LCALL LCD_INIT ;THIS WILL INITIALISE THE LCD FOR 4 BIT MODE ;REMEMBER THIS LCD_INIT SHOULD BE CALLED ONLY ONCE. ASDF: MOV DPTR,#TITLE1 LCALL LCD_LINE1 ;THIS WILL DISPLAY THE MESSAGE ON LINE 1 OF THE LCD MOV DPTR,#TITLE2 LCALL LCD_LINE2 ;THIS WILL DISPLAY THE MESSAGE ON LINE 1 OF THE LCD LCALL L_DELAY LJMP ASDF ; ;full code not shown,the same code is there in both the files unedited ; ; END
name lcd lcd_prg segment code lcd_const segment code lcd_var segment data rseg lcd_var TEMP1: ds 1 TEMP2: ds 1 TEMP3: ds 1 TEMP4: ds 1 TEMP5: ds 1 LCD_D3 EQU P2.2 LCD_D2 EQU P2.3 LCD_D1 EQU P2.4 LCD_D0 EQU P2.5 EN EQU P2.6 RS EQU P2.7 LITE EQU P2.1 cseg at 0 using 0 jmp start rseg lcd_const TITLE1: DB " Hello World... " TITLE2: DB " Welcome 2 8051 " Q0: DB "PRESS PORT0 I/P." Q1: DB "PORT0 VALUE ." rseg lcd_prg start: LCALL DLAYms SETB LITE LCALL LCD_INIT ;THIS WILL INITIALISE THE LCD FOR 4 BIT MODE ;REMEMBER THIS LCD_INIT SHOULD BE CALLED ONLY ONCE. ASDF: MOV DPTR,#TITLE1 LCALL LCD_LINE1 ;THIS WILL DISPLAY THE MESSAGE ON LINE 1 OF THE LCD MOV DPTR,#TITLE2 LCALL LCD_LINE2 ;THIS WILL DISPLAY THE MESSAGE ON LINE 1 OF THE LCD LCALL L_DELAY LJMP ASDF ; ;the rest of the code is same as above ; END
You have traced your asm source in debugger? Look at registers, interrupts, flags and etc..