《電子DIY》之使用51單片機驅動EEPROM器件AT24C02、IIC通信、實物製作(彙編語言)

一,IIC串行總線系統基本結構如下圖:

在這裏插入圖片描述
備註:標準IIC普通模式下,數據的傳輸速率爲100kbps,高速模式下可達400kbps,總線擴展的器件數量是由電容負載確定,IIC總線上每一個節點器件的接口都有一定的等效電容,電容量越大,傳輸延遲越高。

二,IIC協議和24C02器件介紹

見此文:
IIC和24C02介紹

24C02實物圖:
在這裏插入圖片描述
51單片機最小系統:原理圖和實物圖
在這裏插入圖片描述
(實際使用時,須在P0口外接上拉電阻)
在這裏插入圖片描述

3,24C02程序源碼:

SDA BIT P2.4
SCL BIT P2.3
WORDADRR EQU   66H          ;WORDADRR EQU   30H
DATEADDR EQU   66H
SLAVE_W EQU  0XA0
SLAVE_R EQU  0XA1
 	ORG  0000H
    LJMP MAIN
 	ORG  0030H
MAIN:
	MOV A,#SLAVE_W
	MOV R7,#08H
	MOV R1,#WORDADRR
LOOP:   
    MOV @R1,A
	INC A
	INC R1
	DJNZ R7,LOOP
	;賦值用於測試
	LCALL WRITEDATA
	MOV 72H,#100
Q3:
	MOV 71H,#100
Q1:
	MOV 70H,#47
Q0:
	DJNZ 70H,Q0
	NOP
	DJNZ 71H,Q1
	MOV 70H,#46
Q2:
	DJNZ 70H,Q2
	NOP
	DJNZ 72H,Q3
	MOV 70H,#48
Q4:
	DJNZ 70H,Q4	
	;delay
	ACALL READ_8
	LJMP RETURN
WRITEDATA:
	ACALL IICSTART   ;8字節發送
	MOV A,#SLAVE_W
	ACALL IICSEND
	ACALL ACK
	JNB  ACC.4 ,D1
	LJMP ERR
D1:
    MOV  A,#WORDADRR
	ACALL   IICSEND
	ACALL   ACK
	JNB  ACC.4,D2
	LJMP  ERR
D2:
	MOV R0,#DATEADDR
	MOV R6,#08H
D4: 
	MOV A,@R0
	ACALL IICSEND
	ACALL ACK
	JNB  ACC.4,D3
	LJMP ERR
D3:
	INC R0
	DJNZ R6,D4
	ACALL  STOP
	RET	
READ_8:
	ACALL IICSTART          ;序列讀8字節
	MOV A,#SLAVE_W	     ;從機地址+W
	ACALL IICSEND
	ACALL ACK
	JNB  ACC.4,D5
	LJMP ERR
D5:
	MOV A,#WORDADRR
	ACALL IICSEND
	ACALL  ACK
	JNB  ACC.4,D6
	LJMP ERR
D6:
	ACALL IICSTART
	MOV A,#SLAVE_R	         ;從機地址+R
	ACALL  IICSEND
	ACALL  ACK
	JNB  ACC.4,D7
	LJMP ERR
D7: 
	MOV R0,#51H
	MOV R6,#07H
D9:     
	ACALL RECIEVE
	MOV @R0 ,A
	ACALL DATA0ORACK
D8: 
	INC R0
	DJNZ R6,D9
	ACALL RECIEVE
	MOV @R0,A
	ACALL DAT1ORNACK
	ACALL STOP
	RET
IICSEND:	
	MOV R7,#08H      
L0:
	RLC	A
	JC	L1
	ACALL L0
	AJMP  L2
L1:
	ACALL DAT1ORNACK
L2:	
	DJNZ R7,L0
	RET	
RECIEVE:	
	MOV R7,#08H
BACK1: 
	SETB  SDA
	SETB  SCL
	NOP
	NOP
	NOP
	NOP
	MOV C,SDA
	RLC A
    CLR SCL
	DJNZ R7,BACK1
	RET	
IICSTART:	
	SETB SCL          
	SETB SDA
	NOP
	NOP
	NOP
	NOP
	CLR	SDA
	NOP
	NOP
	NOP
	NOP
	CLR SCL
	RET	
STOP:	
	CLR	SDA    
	SETB SCL
	NOP
	NOP
	NOP
	NOP
	SETB SDA
	NOP
	NOP
	NOP
	NOP
	NOP
	CLR	SCL
	CLR	SDA
	RET	
ACK:
	SETB SCL    
	SETB SDA
	NOP
	NOP
	NOP
	NOP
	NOP
	MOV A,P2
	JNB ACC.4,L4
	AJMP ACK
L4:
	CLR SCL
	NOP
	RET	
DATA0ORACK:
	CLR	SDA   
	SETB SCL
	NOP
	NOP
	NOP
	NOP
	CLR	SCL
	SETB SDA
	RET	
DAT1ORNACK:	
	SETB SDA     
	SETB SCL
	NOP
	NOP
	NOP
	NOP
	CLR	SCL
	CLR	SDA
	RET
ERR:
	AJMP RETURN
RETURN:
	END
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章