This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

small changes code doesnt work...

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

The following file is the one which is edited this doesnt work,the text that are added/edited are in bold...

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

Parents Reply Children
No data