Hi everyone...i need some urgent help with a program that i am trying to write...the program is suppose to...Erase the EEPROM, then read a value from variable EEADR and store in EEBYT and also output the value to port 3 and finally write a byte to the EEPROM...if you have any suggestions or see any problems with my code please help!...its not working properly
size EQU 9
EEBYT EQU 20h
EEADR EQU 80h
CS EQU p1.0
SK EQU p1.1
DI EQU p1.2
DO EQU p1.3
clr CS ; low
clr SK ; low
setb DI ; high
setb DO ; high
call ewen ;enable write
call eral ;erase device
call ewds ;disable writing
mov c,EEADR ;move EEADR into c
mov EEBYT,c ;move c into EEBYT
mov p3,EEBYT ;move EEBYT to port 3
;write byte to EEPROM
mov EEADR, #7fh ; address
mov EEBYT, #55h ; data
mov a, EEBYT
call write ;call write routine
write:
setb CS
mov dpl, #101b
mov b, #3
call outdata
mov dpl, EEADR
mov b, #size ; bit count
call outdata
mov dpl, EEBYT
mov b, #8
call outdata
clr CS ; drop CS
eral:
setb CS ; raise CS
mov dptr, #(10010b SHL (size-2))
mov b, #(size+3)
call outdata
clr CS ; drop CS
ret
ewen:
setb CS ; raise CS
mov dptr, #(10011b SHL (size-2))
mov b, #(size+3)
call outdata
clr CS ; drop CS
ret
ewds:
setb CS
mov dptr, #(10000b SHL (size-2))
mov b, #(size+3)
call outdata
clr CS
ret
outdata:
push b
mov a, b ; get bit count
mov a, dpl
call shout
pop b
ret
shout:
out:
clr SK ; drop clock
rlc a ; move bit into CY
mov DI, c ; output bit
nop ; delay min 400 nS
setb SK ; raise clock
djnz b, out ; next bit / delay min one u
clr SK ; drop clock
ret
END