资源描述:
《实验七 串口扩展实验.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、电子科技大学中山学院学生实验报告院别:电子信息学院课程名称:微处理器实验班级:12电信A姓名:学号:实验名称:七、串口扩展实验实验时间:2014年11月10日成绩:教师签名:批改时间:一、实验原理与目的1.了解I2C串口通信的构成原理和软件编程方法。2.掌握80C51的I2C串口通信仿真方法。3.了解AT24C64的构成原理和软件编程方法。4.掌握80C51对AT24C64读写应用。I2C总线是Philips公司推出的二线制高性能串行总线,SDA为串行数据线,SCL为时钟号线;可以通过器件地址和器件上的子地址对从器件
2、上的存储单元进行读写,并可以是多主模式的。AT24C64是一个基于I2C通信模式的EEPROM器件,共有64Kbit,可以分为256页,每一页有32字节。图3.7.1单片机与AT24C64连接原理图二、实验设备1、PC机一台(已安装KeiluVision、STC_ISP等软件);2、ZSC-1单片机实验箱一台。三、实验内容与分析1、向AT24C64从50H开始的10单元存入10个字符‘0’-‘9’;。①在Keil中编写源程序。参考程序如下(请将下划线部分补充完整):;向E2PROM的50H-59H写入10个字节内容S
3、DAEQUP3.3SCLEQUP3.6WNUMDATA40HWADDRDATA41HWBUFDATA42HRNUMDATA50HRADDRDATA51HRBUFDATA52HADDRSHEQU00HADDRSLEQU50HORG0000HAJMPMAINORG0040HMAIN:MOVSP,#5FHMOVWNUM,#10LCALLLDATA;设置数据缓冲区MOVWADDR,#0A0H;写IICMOVR1,#WBUFCALLWRNBMOVP0,#55H;提示写完成SJMP$LDATA:MOVDPTR,#TAB;把TAB
4、区数据放入写缓冲区MOVR1,#WBUFMOVR7,#10;数据字节MP1:MOVA,#0MOVCA,MOV@R1,AINCINCDJNZR7,MP1RETTAB:DB"0123456789ABCDEF"$INCLUDE(I2C.ASM)END⑤I2C.ASM文件如下;起始信号STA:CLRSCLMOVR6,#5DJNZR6,$SETBSDAMOVR6,#5DJNZR6,$SETBSCL;起始条件建立时间大于4.7usMOVR6,#15DJNZR6,$CLRSDAMOVR6,#15DJNZR6,$CLRSCL;钳住总
5、线,准备发数据MOVR6,#10DJNZR6,$RET;终止信号STP:CLRSDAMOVR6,#5DJNZR6,$SETBSCL;发送结束条件的时钟信号MOVR6,#15DJNZR6,$SETBSDA;结束总线MOVR6,#15DJNZR6,$CLRSCLMOVR6,#10DJNZR6,$SETBSCLRET;发送一个时钟脉冲信号SENDCLK:MOVR6,#40DJNZR6,$SETBSCLMOVR6,#25DJNZR6,$CLRSCLMOVR6,#10DJNZR6,$RET;发送应答位0ACK:CLRSDA;将
6、SDA置0LCALLSENDCLKRET;发送非应答位1NAS:SETBSDA;将SDA置1LCALLSENDCLKRET;应答位检查,正常应答时F0为1,否则为0ACKC:LCALLRBITRET;读一位数据到F0RBIT:MOVR6,#40DJNZR6,$SETBSDAMOVR6,#10DJNZR6,$SETBSCLMOVR6,#20DJNZR6,$MOVC,SDAMOVF0,CCLRSCLMOVR6,#10DJNZR6,$RET;发送一个字节WRB:MOVR0,#8WLP1:RLCAMOVSDA,CLCALLS
7、ENDCLKDJNZR0,WLP1LCALLRBITRET;读一个字节RDB:MOVR0,#8RLP1:LCALLRBITMOVC,F0RLCADJNZR0,RLP1RET;发送n个字节;R1--发送数据首地址;WNUM--发送字节数;WADDR--写寻址WRNB:LCALLSTAMOVA,WADDR;写器件寻址写CALLWRBJBF0,WFENDMOVA,#ADDRSH;写地址高字节CALLWRBJBF0,WFENDMOVA,#ADDRSL;写地址低字节CALLWRBJBF0,WFENDMOVR7,WNUM;缓冲区
8、字节数WRLP:MOVA,@R1;写入字节LCALLWRBJBF0,WFENDINCR1DJNZR7,WRLPWEND:LCALLSTPMOVR7,#00;延时X1:MOVR6,#00DJNZR6,$DJNZR7,X1RETWFEND:SETBSCLRET;读n个字节;R1--存储数据首地址;RNUM--读字节数;RADDR--读寻址RDNB: