Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

facing a problem in assembly code at interfacing 8051 atmel with serial epprom 25c040

Status
Not open for further replies.

hassan ali

Member level 2
Joined
May 18, 2010
Messages
47
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,286
Location
egypt
Activity points
1,667
first sorry for my English language ,,,,,,,

i have already connect my circuit which consists of (LCD,8051,25C040)
and i get the code from a web site but i can't understand all of subroutines such as(out_com , ackpol ) please i need help yo understand this code and this is the code .

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG 0000
ljmp main ; START OF THE PROGRAM
ORG 0100

CS BIT P1.2 ; CHIP SELECT
MCSI BIT P1.0 ; SERIAL INPUT
MCSO BIT P1.3 ; SERIAL OUTPUT
SCK BIT P1.1 ; SERIAL SHIFT CLOCK
WREN_CMD EQU 06 ; WRITE ENABLE
WRITE_CMD EQU 02 ; WRITE DATA TO EEPROM
READ_CMD EQU 03 ; READ EEPROM DATA
WRDI_CMD EQU 04 ; WRITE DISABLE
RDSR_CMD EQU 05 ; READ STATUS REGISTER COMMAND
MAX_NUM_POLL EQU 50H ; NUMBER OF TIMES TO POLL EEPROM
ADDR0_TEST EQU 2DH ; MEMORY LOCATIONS USED BY THE PROGRAM
ADDR1_TEST EQU 41H
IDLE_STATE EQU 000FH ; INITIAL STATE OF THE CONTROL PORT( x1111 )
STACK_TOP EQU 060H ; STACK TOP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MAIN:
MOV A,#100
mov SP,#stack_top
clr EA ; DISABLE INTERRUPTS
mov P1,#IDLE_STATE ; RESET CONTROL SIGNALS TO EEPROM
mov DPTR,#ADDR0_TEST ; GET BYTE ADDRESS TO WRITE TO
lcall wrbyt ; WRITE (A) TO THE MEMORY (DP)
mov DPTR,#ADDR1_TEST ; GET BYTE ADDRESS
lcall rdbyt ; READ THE BYTE VALUE
LJMP MAIN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

TO WRITW BYTE IN EPPROM

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
wrbyt:
acall EE_wren ; SEND WRITE ENABLE COMMAND
clr cs ; CS ENABLED
acall EE_write_cmd ; ISSUE WRITE COMMAND
mov A,DPL
acall outbyt ; SEND THE ADDRESS
mov A,R1
acall outbyt ; SEND DATA
setb cs ; CS DISABLED
ret

EE_wren:
clr cs ; ACTIVATE CS
mov A,#WREN_CMD ; WRITE ENABLE COMMAND
lcall outbyt ; OUTPUT THE COMMAND
setb cs ; DEACTIVATE CS
ret

outbyt:
mov R0,#08 ; bit counter
outbyt1:
clr sck ; force clock low
rlc A
mov MCSO,C
setb sck ; take clock line hi
djnz r0,outbyt1
setb MCSO
ret

EE_write_cmd:
mov A,#WRITE_CMD ; SEND WRITE COMMAND TO THE EEPROM
ajmp out_cmd


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
READ BYTE FROM EPPROM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

rdbyt:
clr cs ; CS ENABLED
acall EE_read_cmd ; ISSUE READ COMMAND
mov A,DPL
acall outbyt ; SEND THE ADDRESS
mov R0,#08 ; BIT COUNTER
rdbyt1:
clr sck ; FORCE CLOCK LOW
setb sck ; TAKE CLOCK LINE HI
mov C,MCSI
rlc A
djnz R0,rdbyt1
setb cs ; CS DISABLED
ret


EE_read_cmd:
mov A,#READ_CMD ; SEND READ COMMAND TO THE EEPROM
out_cmd: ; \/ \/
mov B,DPH ; GET BYTE ADDRESS
mov C,B.0
mov ACC.3,C
ajmp outbyt


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

INTIALLIZATION FOR LCD

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

LCD:

EN equ P2.0

RS equ P2.1

RW equ P2.2

mov A,#38H ; Setting Up the LCD

lcall command

mov A,#0EH ; Display On

Lcall command

mov A,#06H ; Entry Mode

Lcall command

mov A,#82H

Lcall command

MOV A,R4
MOV B,#10
DIV AB
MOV R7,B

MOV B,#10
DIV AB
MOV R6,B
MOV R5,A

MOV A,R5
ORL A,#30H
ACALL DATW
ACALL DELAY1

MOV A,R6
ORL A,#30H
ACALL DATW
ACALL DELAY1

MOV A,R7
ORL A,#30H
ACALL DATW
ACALL DELAY1

RET


command:

clr RW

clr RS

setB EN

MOV P3,A

lcall delay1

clr EN

RET



datw:

SETB RS

clr RW

SETB EN

MOV P3,A

lcall delay1

clr EN

RET


delay1:

mov r2,#255

loop1: mov r3,#120

loop2: djnz r3,loop2

djnz r2,loop1
RET

END

---------- Post added at 01:16 ---------- Previous post was at 01:09 ----------

and this is the circuit image
29_1301353966.jpg
 

Be specific in what you don't understand.

i.e. "I don't understand this code:"
Code:
EE_read_cmd:
mov A,#READ_CMD ; SEND READ COMMAND TO THE EEPROM
out_cmd: ; \/ \/
mov B,DPH ; GET BYTE ADDRESS
mov C,B.0
mov ACC.3,C
ajmp outbyt

This way people can offer help.
Nobody is going to explain the entire source code to you.

also when you post the code you should use code tags so the code is formatted correctly making it readable by others. Use the "#" icon above, then post the code between the code tags.
 
thanks a lot for u , and am so sorry because am a beginner to show my problems so i wasn't know these roles but now i will do ,,,

but now i want any help to solve my problem
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top