06300720040
夏晓天电子信息科学与技术
【预习报告】
一.实验目的
掌握基于MCS-51系统的I2C总线扩展的方法
二.实验内容
1.利用MCS-51系统的P1口模拟I2C总线接口,扩展串口存储器24C16,每次存入1个数据,并反复读回,用示波器测试读回的波形。(分别以数据AAH,55H测试)2.将MCS-51系统片内存储器的10个数据存入串口存储器24C16并读回,分别设置存入的地址为页地址+00H和页地址+07H。读回为地址页地址+00H,将读回的
三.电原理图和程序清单
8-4-1.硬件连接图:
程序清单:
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:
SCL EQU P1.0
SDA EQU P1.1
MRD EQU 40H
;发送部分
SNDN: LCALL START ;启动
MOV A,#0A0H ;发控制字,写
武汉时代职业学院LCALL SEND ;发送
JB F0,SNDN ;非正常应答则重新发送 MOV A,#00H ;发送地址
LCALL SEND ;发送
LCALL CACK ;检查应答位
JB F0,SNDN ;非正常应答则重新发送 MOV A,#0AAH ;发送数据
LCALL SEND ;发送
LCALL CACK ;检查应答位
JB F0,SNDN ;非正常应答则重新发送 LCALL STOP ;停止
LCALL DELAY2 ;延迟一段时间再读回;接收部分
REVN: LCALL START ;启动
MOV A,#0A0H ;发控制字,写
LCALL SEND ;发送
LCALL CACK ;检查应答位
JB F0,REVN ;非正常应答则重新发送 MOV A,#00H ;发送地址
LCALL SEND ;发送
LCALL CACK ;检查应答位
词语翻译
JB F0,REVN ;非正常应答则重新发送 LCALL START ;再次启动
MOV A,#0A1H ;发控制字,读
LCALL SEND ;发送
LCALL ACKS ;发送应答位
LCALL REV ;接收
MOV MRD,A ;接收的数据存放在40H LCALL NACKS ;发送非应答位
LCALL STOP ;停止
SJMP REVN ;再次接收
;启动信号传递
START:SETB SDA
NOP
SETB SCL
LCALL DELAY
CLR SDA
LCALL DELAY
CLR SCL
NOP
RET
;停止信号传递
STOP: CLR SDA
NOP
NOP
SETB SCL
LCALL DELAY
SETB SDA
LCALL DELAY
;CLR SDA
;
CLR SCL
RET
;发送一个字节
SEND: MOV R0,#08H ;8位数据长度送R0
WLP: RLC A ;发送数据左移,使发送位入C JC WR1 ;判断发送为1还是0,发送1转WR1 AJMP WR0 ;发送0转WR0
WLP1: DJNZ R0,WLP ;8位是否发送完?未完转WLP
RET ;8位发送完结束
WR1: SETB SDA ;发送1程序段
NOP
SETB SCL
LCALL DELAY
CLR SCL
;CLR SDA
AJMP WLP1
WR0: CLR SDA ;发送0程序段
NOP
SETB SCL
LCALL DELAY
CLR SCL
AJMP WLP1
;接收一个字节
REV: MOV R0,#08H ;8位数据长度入R0
REV0: SETB SDA ;置VSDA为输入方式
NOP
SETB SCL ;使VSDA上数据有效
digital chaosNOP
MOV C,SDA ;读入VSDA引脚状态
MOV A,R2 ;读入0程序段,由C拼装入R2中 CLR SCL ;使VSCL=0可继续接收数据位
RLC A
MOV R2,A
LCALL DELAY
DJNZ R0,REV0 ;8位是否读完?未读完转RLP
RET
;发送应答位
ACKS: CLR SDA
NOP
NOP
SETB SCL
LCALL DELAY
CLR SCL
NOP
NOP
;SETB SDA
RET
;
发送非应答位
城市生活2008NACKS:SETB SDA
NOP
NOP
SETB SCL
LCALL DELAY
CLR SCL
NOP
NOP
;CLR SDA
RET
;
检查应答位
CACK: SETB SDA ;置VSDA为输入方式
NOP
NOP
SETB SCL ;使VSDA上数据有效
CLR F0 ;预设F0=0
NOP
NOP
MOV C,SDA ;输入VSDA引脚状态
JNC CEND ;检查VSDA状态,正常应答转CEND,且F0=0 SETB F0 ;无正常应答,F0=1
CEND: NOP
CLR SCL ;子程序结束,使VSCL=0
NOP
RET
;延时
DELAY: NOP
NOP
NOP
NOP
RET
;延时2
DELAY2:MOV R6,#0FFH
DEL1: MOV R7,#0FFH
D EL2: DJNZ R7,DEL2
DJNZ R6,DEL1
RET
END
8-4-2.硬件连接图:
程序清单:
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:
SCL EQU P1.0
SDA EQU P1.1
MTD EQU 30H
MRD EQU 40H
MOV R0,#0AH
MOV R1,#30H
MOV A,#00H
STR: MOV @R1,A ;0~9分别存放在30H~39H INC R1
INC A
DJNZ R0,STR
;发送部分1
MOV R1,#30H
MOV R0,#0AH
SNDN1: LCALL START ;启动
MOV A,#0A0H ;发控制字,写
LCALL SEND ;发送
LCALL CACK ;检查应答位
JB F0,SNDN1 ;非正常应答则重新发送 MOV A,#00H ;发送地址
LCALL SEND ;发送
中国3d电视试验频道LCALL CACK ;检查应答位
JB F0,SNDN1 ;非正常应答则重新发送L1: MOV A,@R1 ;取发送数据
LCALL SEND ;发送
LCALL CACK ;检查应答位
JB F0,SNDN1 ;非正常应答则重新发送INC R1
DJNZ R0,L1 ;未发完10个数据则转L1 LCALL STOP ;停止
LCALL DELAY2 ;延迟一段时间再读回
;发送部分2
MOV R1,#30H
MOV R0,#0AH
SNDN2: LCALL START ;启动
MOV A,#0A0H ;发控制字,写
LCALL SEND ;发送
LCALL CACK ;检查应答位
冯天瑜
JB F0,SNDN2 ;非正常应答则重新发送