C
choi_new
Guest
친애하는 친구,
죄송 해요, 나를 다시입니다.
내가 AT24C512 데이터에 액세스하는 8051 코드를 작성했습니다.
BTW, 난 단지 EPROM 에뮤했을 때 보드를 사용하여 읽을 수있습니다 FFH 내 프로그램을 찾았지만, 난 이미 EEPROM이에 bmp 파일 레코딩.
그래서, 난 내 프로그램에 버그가 있다고 생각.
아래에있는 내 코드입니다.
누군가 날 프로그램을 찾아 도와 드릴까요??
고마워 만!!피터
;;==== 코드SDA는 비트 P2.2
SCL 비트 P2.3
; SDA는 비트 P2.3
; SCL 비트 P2.2
ADD0 비트 P2.0
Add1 비트 P2.1
FADDR EQU 0A0H
ADDR_HI1 EQU 30H
ADDR_LO1 EQU 31H
ADDR_HI2 EQU 32H
ADDR_LO2 EQU 33H
RAM_DATA EQU 34H
ORG를 00h
MOV ADDR_HI1, # 00h
MOV ADDR_LO1, # 00h
MOV ADDR_HI2, # 00h
MOV ADDR_LO2, # 00h
MOV RAM_DATA, # 00h
가능한 I2C :
INC DPTR
MOV ADDR_HI2, DPH
MOV ADDR_LO2, DPL
LCALL READ_RANDOM
NOP
MOV, RAM_DATA
MOV, RAM_DATA
MOV, RAM_DATA
MOV, RAM_DATA
SJMP 가능한 I2C
READ_CURRENT :
; AT24Cxx 현재 주소 읽기 기능입니다.
; A에서 대답을 반환 데이터 프로그래밍 주소 호출
; 반환 버스를 사용할 수없는 설정을 나타냅니다 CY 자료
; 또는 해결 장치를 인정하지 못했습니다.
LCALL 스타트
제이 X_45; 취소 버스를 사용할 수없는 경우
; RL; 비트 3시 1분에 프로그램의 주소
; ORL, # FADDR; 주소 고정에 추가
; SETB ACC.0; 읽기 지정 운영
MOV, # 0A0H
LCALL 샤우트; 장치의 주소를 보내
제이 X_44; 중단없는 경우 인정
LCALL 신; 바이트의 데이터를 수신
MOV RAM_DATA,
LCALL NAK; 바이트를 인정하지 않아
CLR은 C; 분명 오류 플래그
X_44 :
LCALL 정지
RET
X_45 :
RETREAD_RANDOM :
; AT24Cxx 임의의 읽기 기능입니다.
;에서 호출 프로그램의 주소와 2 바이트의 주소
; 쌍 ADDR_HI 등록 : ADDR_LO.A에서 반환 데이터를
; 반환 버스를 사용할 수없는 설정을 나타냅니다 CY 자료
; 또는 해결 장치를 인정하지 못했습니다.
밀어 B 조
MOV B 조,; 프로그램의 주소를 복사하기
; 내부 주소를 설정하는 명령을 쓸 보내기 바보야.
LCALL 스타트
제이 X_47; 취소 버스를 사용할 수없는 경우
; RL; 비트 3시 1분에 프로그램의 주소
; ORL, # FADDR; 주소 고정에 추가
; CLR을 ACC.0, 쓰기 작업을 지정
MOV, # 0A0H
LCALL 샤우트; 장치의 주소를 보내
제이 X_46; 중단없는 경우 인정
MOV, ADDR_HI1;; 주소의 높은 바이트를 보내
LCALL 샤우트;
제이 X_46; 중단없는 경우 인정
MOV, ADDR_LO1; 주소가 낮은 바이트를 보내
LCALL 샤우트;
제이 X_46; 중단없는 경우 인정
MOV, ADDR_HI2;; 주소의 높은 바이트를 보내
LCALL 샤우트;
제이 X_46; 중단없는 경우 인정
MOV, ADDR_LO2; 주소가 낮은 바이트를 보내
LCALL 샤우트;
제이 X_46; 중단없는 경우 인정
; 통화 현재 주소 읽기 기능입니다.
MOV, B 조; 프로그램 주소
LCALL READ_CURRENT
LJMP X_47; 종료
X_46 :
LCALL 정지X_47 : POP를 B 조
RET시작 :
;, 높은 정의 스타트 보내기 높은가격순 - 낮은가격순 SDA는 SCL와 함께합니다.
; SCL, SDA는 낮게 돌아가기.
만약 버스를 사용할 수없습니다; 반환 설정의 CY.
SETB SDA는
SETB SCL
; 확인 버스가없습니다.
JNB SDA는, X_40; 경우에는 고등학교가 아니라 점프
JNB SCL, X_40; 경우에는 고등학교가 아니라 점프
NOP; 설치 지연 및 지연주기를 시행
CLR은 SDA는
nop; 잡아 지연 시행
nop;
nop;
nop;
nop;
CLR은 SCL
CLR은 C; 분명 오류 플래그
SJMP X_41
X_40 :
SETB C; 설정 오류 플래그
X_41 :
RET
정지 :
;, 낮은 정의된 전송 중지 높은 높이의 SDA는 SCL와 함께합니다.
; SCL 낮은 진입 예상.SCL, SDA는 고속 돌아가기.
CLR은 SDA는
nop; SCL 낮은 데이터를 설치 시행
nop
SETB SCL
nop; 설치 지연 시행
nop;
nop;
nop;
nop;
SETB SDA는
RET샤우트 :
; AT24Cxx에 바이트를 비트 쉬프트 가장 중요한 첫 번째.
; SCL, SDA는 낮은 진입 예상.SCL 낮게 돌아가기.
; 데이터와 호출 대답을 보내
; 반환 노예로 인정하고 실패를 표시하도록 설정의 CY.
; 대답을 망가뜨리고
밀어 B 조
MOV B 조, # 8; 비트 카운터
X_42 :
RLC; CY 자료로 이동할 비트
SDA는 MOV는 C; 출력 비트
nop; SCL 낮은 데이터를 설치 시행
SETB SCL; 시계 인상
nop; SCL 높은 집행
nop;
nop;
nop;
CLR은 SCL; 드롭 클럭
DJNZ B 조, X_42; 다음 비트
SETB SDA는; 릴리스 SDA는 ACK는에 대한
nop; SCL 낮은 원조 시행
nop;
SETB SCL; ACK는 시계가 인상
nop; SCL 높은 집행
nop;
nop;
nop;
MOV C를 SDA는; ACK는 약간 좀
CLR은 SCL; 드롭 ACK는 시계
; LCALL ACK는
POP를 B 조
RET
신 :
; AT24Cxx에서 바이트에서 가장 중요한 첫 번째 비트 쉬프트.
; SCL 낮은 진입 예상.SCL 낮게 돌아가기.
; 반환 데이터가 A에서 바이트를 받았습니다
; SETB SDA는; SDA는 입력 확인
; B 조 밀어
; MOV B 조, # 8; 비트 수를
; X_43 :
; nop; 시행 SCL 낮은 데이터를 설치
; nop;
; nop;
; SETB SCL; 시계 인상
; nop; 집행 높은 SCL
; nop;
; MOV C를 SDA는; 입력 비트
;로 RLC; 이동할 비트 바이트
; CLR은 SCL; 드롭 클럭
; DJNZ B 조, X_43; 다음 비트
; POP를 B 조
; RET
SETB SDA는;; SDA는 입력,使SDA는为高,准备读확인
B 조 밀어;
MOV B 조, # 08D ;;;;; 비트 카운트,设置位计数器
L2 : NOP;; 시행 SCL 및 데이터 설정을 낮은保持SCL为低且使数据稳定
NOP
SETB SCL;; 시계를 들어올리면,升高时钟
NOP;; SCL 높은 집행,保持SCL为高
NOP
MOV C를 SDA는;; 입력 비트,输入位
RLC;; 바이트로 이동할 비트,将位移入
CLR은 SCL;; 드롭 다운 시계,降低时钟
DJNZ B 조, L2;; 다음 비트,传送下一位
POP를 B 조
RET
NAK :
; 부정적인 시계를 비트 ()이 높은 것을 인정합니다.
; SCL 낮은 진입 예상.SDA는 SCL 낮은 높이와 돌아가기.
SETB SDA는; NAK 비트
nop; SCL 낮은 데이터를 설치 시행
nop;
SETB SCL; 시계 인상
nop; SCL 높은 집행
nop;
nop;
nop;
CLR은 SCL; 드롭 클럭
RET
ACK는 :
; 비트 ()이 낮은 것을 인정을 시계.
; SCL 낮은 진입 예상.SCL, SDA는 낮게 돌아가기.
CLR은 SDA는;는 ACK 비트
nop; SCL 낮은 데이터를 설치 시행
nop;
setb SCL; 시계 인상
nop; SCL 높은 집행
nop;
nop;추가 1 분 후 :그냥 기억,이 코드를 aurthor 아닙니다.
후에 그것을 읽고 난 그냥 내 응용 프로그램에 대한 코드를 변경할 수있습니다.
그래서, 지금 홀더 오전 복사할 수없습니다
죄송 해요, 나를 다시입니다.
내가 AT24C512 데이터에 액세스하는 8051 코드를 작성했습니다.
BTW, 난 단지 EPROM 에뮤했을 때 보드를 사용하여 읽을 수있습니다 FFH 내 프로그램을 찾았지만, 난 이미 EEPROM이에 bmp 파일 레코딩.
그래서, 난 내 프로그램에 버그가 있다고 생각.
아래에있는 내 코드입니다.
누군가 날 프로그램을 찾아 도와 드릴까요??
고마워 만!!피터
;;==== 코드SDA는 비트 P2.2
SCL 비트 P2.3
; SDA는 비트 P2.3
; SCL 비트 P2.2
ADD0 비트 P2.0
Add1 비트 P2.1
FADDR EQU 0A0H
ADDR_HI1 EQU 30H
ADDR_LO1 EQU 31H
ADDR_HI2 EQU 32H
ADDR_LO2 EQU 33H
RAM_DATA EQU 34H
ORG를 00h
MOV ADDR_HI1, # 00h
MOV ADDR_LO1, # 00h
MOV ADDR_HI2, # 00h
MOV ADDR_LO2, # 00h
MOV RAM_DATA, # 00h
가능한 I2C :
INC DPTR
MOV ADDR_HI2, DPH
MOV ADDR_LO2, DPL
LCALL READ_RANDOM
NOP
MOV, RAM_DATA
MOV, RAM_DATA
MOV, RAM_DATA
MOV, RAM_DATA
SJMP 가능한 I2C
READ_CURRENT :
; AT24Cxx 현재 주소 읽기 기능입니다.
; A에서 대답을 반환 데이터 프로그래밍 주소 호출
; 반환 버스를 사용할 수없는 설정을 나타냅니다 CY 자료
; 또는 해결 장치를 인정하지 못했습니다.
LCALL 스타트
제이 X_45; 취소 버스를 사용할 수없는 경우
; RL; 비트 3시 1분에 프로그램의 주소
; ORL, # FADDR; 주소 고정에 추가
; SETB ACC.0; 읽기 지정 운영
MOV, # 0A0H
LCALL 샤우트; 장치의 주소를 보내
제이 X_44; 중단없는 경우 인정
LCALL 신; 바이트의 데이터를 수신
MOV RAM_DATA,
LCALL NAK; 바이트를 인정하지 않아
CLR은 C; 분명 오류 플래그
X_44 :
LCALL 정지
RET
X_45 :
RETREAD_RANDOM :
; AT24Cxx 임의의 읽기 기능입니다.
;에서 호출 프로그램의 주소와 2 바이트의 주소
; 쌍 ADDR_HI 등록 : ADDR_LO.A에서 반환 데이터를
; 반환 버스를 사용할 수없는 설정을 나타냅니다 CY 자료
; 또는 해결 장치를 인정하지 못했습니다.
밀어 B 조
MOV B 조,; 프로그램의 주소를 복사하기
; 내부 주소를 설정하는 명령을 쓸 보내기 바보야.
LCALL 스타트
제이 X_47; 취소 버스를 사용할 수없는 경우
; RL; 비트 3시 1분에 프로그램의 주소
; ORL, # FADDR; 주소 고정에 추가
; CLR을 ACC.0, 쓰기 작업을 지정
MOV, # 0A0H
LCALL 샤우트; 장치의 주소를 보내
제이 X_46; 중단없는 경우 인정
MOV, ADDR_HI1;; 주소의 높은 바이트를 보내
LCALL 샤우트;
제이 X_46; 중단없는 경우 인정
MOV, ADDR_LO1; 주소가 낮은 바이트를 보내
LCALL 샤우트;
제이 X_46; 중단없는 경우 인정
MOV, ADDR_HI2;; 주소의 높은 바이트를 보내
LCALL 샤우트;
제이 X_46; 중단없는 경우 인정
MOV, ADDR_LO2; 주소가 낮은 바이트를 보내
LCALL 샤우트;
제이 X_46; 중단없는 경우 인정
; 통화 현재 주소 읽기 기능입니다.
MOV, B 조; 프로그램 주소
LCALL READ_CURRENT
LJMP X_47; 종료
X_46 :
LCALL 정지X_47 : POP를 B 조
RET시작 :
;, 높은 정의 스타트 보내기 높은가격순 - 낮은가격순 SDA는 SCL와 함께합니다.
; SCL, SDA는 낮게 돌아가기.
만약 버스를 사용할 수없습니다; 반환 설정의 CY.
SETB SDA는
SETB SCL
; 확인 버스가없습니다.
JNB SDA는, X_40; 경우에는 고등학교가 아니라 점프
JNB SCL, X_40; 경우에는 고등학교가 아니라 점프
NOP; 설치 지연 및 지연주기를 시행
CLR은 SDA는
nop; 잡아 지연 시행
nop;
nop;
nop;
nop;
CLR은 SCL
CLR은 C; 분명 오류 플래그
SJMP X_41
X_40 :
SETB C; 설정 오류 플래그
X_41 :
RET
정지 :
;, 낮은 정의된 전송 중지 높은 높이의 SDA는 SCL와 함께합니다.
; SCL 낮은 진입 예상.SCL, SDA는 고속 돌아가기.
CLR은 SDA는
nop; SCL 낮은 데이터를 설치 시행
nop
SETB SCL
nop; 설치 지연 시행
nop;
nop;
nop;
nop;
SETB SDA는
RET샤우트 :
; AT24Cxx에 바이트를 비트 쉬프트 가장 중요한 첫 번째.
; SCL, SDA는 낮은 진입 예상.SCL 낮게 돌아가기.
; 데이터와 호출 대답을 보내
; 반환 노예로 인정하고 실패를 표시하도록 설정의 CY.
; 대답을 망가뜨리고
밀어 B 조
MOV B 조, # 8; 비트 카운터
X_42 :
RLC; CY 자료로 이동할 비트
SDA는 MOV는 C; 출력 비트
nop; SCL 낮은 데이터를 설치 시행
SETB SCL; 시계 인상
nop; SCL 높은 집행
nop;
nop;
nop;
CLR은 SCL; 드롭 클럭
DJNZ B 조, X_42; 다음 비트
SETB SDA는; 릴리스 SDA는 ACK는에 대한
nop; SCL 낮은 원조 시행
nop;
SETB SCL; ACK는 시계가 인상
nop; SCL 높은 집행
nop;
nop;
nop;
MOV C를 SDA는; ACK는 약간 좀
CLR은 SCL; 드롭 ACK는 시계
; LCALL ACK는
POP를 B 조
RET
신 :
; AT24Cxx에서 바이트에서 가장 중요한 첫 번째 비트 쉬프트.
; SCL 낮은 진입 예상.SCL 낮게 돌아가기.
; 반환 데이터가 A에서 바이트를 받았습니다
; SETB SDA는; SDA는 입력 확인
; B 조 밀어
; MOV B 조, # 8; 비트 수를
; X_43 :
; nop; 시행 SCL 낮은 데이터를 설치
; nop;
; nop;
; SETB SCL; 시계 인상
; nop; 집행 높은 SCL
; nop;
; MOV C를 SDA는; 입력 비트
;로 RLC; 이동할 비트 바이트
; CLR은 SCL; 드롭 클럭
; DJNZ B 조, X_43; 다음 비트
; POP를 B 조
; RET
SETB SDA는;; SDA는 입력,使SDA는为高,准备读확인
B 조 밀어;
MOV B 조, # 08D ;;;;; 비트 카운트,设置位计数器
L2 : NOP;; 시행 SCL 및 데이터 설정을 낮은保持SCL为低且使数据稳定
NOP
SETB SCL;; 시계를 들어올리면,升高时钟
NOP;; SCL 높은 집행,保持SCL为高
NOP
MOV C를 SDA는;; 입력 비트,输入位
RLC;; 바이트로 이동할 비트,将位移入
CLR은 SCL;; 드롭 다운 시계,降低时钟
DJNZ B 조, L2;; 다음 비트,传送下一位
POP를 B 조
RET
NAK :
; 부정적인 시계를 비트 ()이 높은 것을 인정합니다.
; SCL 낮은 진입 예상.SDA는 SCL 낮은 높이와 돌아가기.
SETB SDA는; NAK 비트
nop; SCL 낮은 데이터를 설치 시행
nop;
SETB SCL; 시계 인상
nop; SCL 높은 집행
nop;
nop;
nop;
CLR은 SCL; 드롭 클럭
RET
ACK는 :
; 비트 ()이 낮은 것을 인정을 시계.
; SCL 낮은 진입 예상.SCL, SDA는 낮게 돌아가기.
CLR은 SDA는;는 ACK 비트
nop; SCL 낮은 데이터를 설치 시행
nop;
setb SCL; 시계 인상
nop; SCL 높은 집행
nop;
nop;추가 1 분 후 :그냥 기억,이 코드를 aurthor 아닙니다.
후에 그것을 읽고 난 그냥 내 응용 프로그램에 대한 코드를 변경할 수있습니다.
그래서, 지금 홀더 오전 복사할 수없습니다