السلام عليكم
اخوتي اني احاول ان اتعامل مع ذواكر ال eeprom ولكن واجهتني مشاكل عندما حاولت حفظ البايت
البرنامج في المرفقات
والبرنامج هو حفظ قيمة رقم يتم اظهاره على 7segment
فعند الضغط على زر save يتم حفظ قيمة الرقم الظاهر
وعند الضغط على زر الload يتم استرجاع الرقم التي تم حفظه في البداية
والزر inc يقوم على زيادة الرقم الظاهر على الشاشة
ممكن لو تساعدوني في العثور على الخطا
TEMP equ 30h
D.ADR EQU 45H
SCL EQU P3.3
SDA EQU P3.4
REC.DAT EQU 41H
START: MOV A,#0
CALL HEX27SEG
MOV P1,TEMP
INCA: JB P3.0,SAVE
INC A
CALL HEX27SEG
MOV P1,TEMP
CALL DELAY1
SAVE: JB P3.1,LOAD
MOV D.ADR,#1
MOV 50H,A
MOV A,#10100000B
CALL START.P
CALL SEND
CALL ACK
CALL DELAY
MOV A,D.ADR
CALL SEND
CALL ACK
CALL DELAY
MOV A,50H
CALL SEND
CALL ACK
CALL DELAY
CALL STOP
MOV A,50H
LOAD: JB P3.2,INCA
MOV A,#10100010B
CALL START.P
CALL SEND
CALL ACK
CALL DELAY
MOV A,D.ADR
CALL SEND
CALL ACK
CALL DELAY
MOV A,10100011B
CALL START.P
CALL SEND
CALL ACK
CALL DELAY
CALL READ
CALL DELAY
CALL STOP
MOV A,REC.DAT
CALL HEX27SEG
MOV P1,TEMP
CALL DELAY1
JMP INCA
;-----------------------------------------------------
SEND: MOV R6,#8
NEXT: RLC A
MOV SDA,C
CALL DELAY
SETB SCL
CALL DELAY
CLR SCL
CALL DELAY
DJNZ R6,NEXT
RET
;------------------------------------------------------------------------------
READ: MOV R6,#8
S: SETB SCL
CALL DELAY
CLR SCL
CALL DELAY
MOV C,SDA
RLC A
DJNZ R6,S
RRC A
MOV REC.DAT,A
RET
;----------------------------------------------------------------------------
ACK: SETB SCL
CALL DELAY
CLR SCL
RET
;----------------------------------------------------------------------------
START.P: SETB SCL ;START CONDITION
SETB SDA
CALL DELAY
CLR SDA
CALL DELAY
CLR SCL
CALL DELAY
RET
;----------------------------------------------------------------------------
STOP: CLR SDA
SETB SCL ;STOP CONDITION
CALL DELAY
SETB SDA
RET
;----------------------------------------------------------------------------
DELAY: MOV 6FH,#3
LOOP: MOV 6EH,#255
DJNZ 6EH,$
DJNZ 6FH,LOOP
RET
;----------------------------------------------------------------------------
hex27seg: mov r3,a
MOV DPTR,#TABLE
MOVC A,*A+DPTR
MOV TEMP,A
MOV A,R3
RET
table: db 40h,79h,24h,30h,19h,12h,02h,78h,00h,10h,08h,03h,46 h,21h,06h,0eh
;-------------------------------------------------------------------------------
delay1: mov r2,#2
loop3: mov r1,#255
loop2: mov r0,#255
loop1: djnz r0,loop1
djnz r1,loop2
djnz r2,loop3
ret
البرنامج هنا
http://www.4shared.com/file/lddRRktL/TEST_EEPROM.html