实验七-串口扩展实验

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

电子科技大学中山学院学生实验报告院别:电子信息学院课程名称:微处理器实验班级:12电信A姓名:学号:实验名称:七、串口扩展实验实验时间:2014年11月10日成绩:教师签名:批改时间:一、实验原理与目的1.了解I2C串口通信的构成原理和软件编程方法。2.掌握80C51的I2C串口通信仿真方法。3.了解AT24C64的构成原理和软件编程方法。4.掌握80C51对AT24C64读写应用。I2C总线是Philips公司推出的二线制高性能串行总线,SDA为串行数据线,SCL为时钟号线;可以通过器件地址和器件上的子地址对从器件上的存储单元进行读写,并可以是多主模式的。AT24C64是一个基于I2C通信模式的EEPROM器件,共有64Kbit,可以分为256页,每一页有32字节。A089S51SCLP3.3SDAWPA1A2P3.6+5V5.1KΩ×2VccVcc图3.7.1单片机与AT24C64连接原理图二、实验设备1、PC机一台(已安装KeiluVision、STC_ISP等软件);2、ZSC-1单片机实验箱一台。三、实验内容与分析1、向AT24C64从50H开始的10单元存入10个字符‘0’-‘9’;。①在Keil中编写源程序。参考程序如下(请将下划线部分补充完整):;向E2PROM的50H-59H写入10个字节内容SDAEQUP3.3SCLEQUP3.6WNUMDATA40HWADDRDATA41HWBUFDATA42HRNUMDATA50HRADDRDATA51HRBUFDATA52HADDRSHEQU00HADDRSLEQU50HORG0000HAJMPMAINORG0040HMAIN:MOVSP,#5FHMOVWNUM,#10LCALLLDATA;设置数据缓冲区MOVWADDR,#0A0H;写IICMOVR1,#WBUFCALLWRNBMOVP0,#55H;提示写完成SJMP$LDATA:MOVDPTR,#TAB;把TAB区数据放入写缓冲区MOVR1,#WBUFMOVR7,#10;数据字节MP1:MOVA,#0MOVCA,MOV@R1,AINCINCDJNZR7,MP1RETTAB:DB0123456789ABCDEF$INCLUDE(I2C.ASM)END⑤I2C.ASM文件如下;起始信号STA:CLRSCLMOVR6,#5DJNZR6,$SETBSDAMOVR6,#5DJNZR6,$SETBSCL;起始条件建立时间大于4.7usMOVR6,#15DJNZR6,$CLRSDAMOVR6,#15DJNZR6,$CLRSCL;钳住总线,准备发数据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;将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,CLCALLSENDCLKDJNZR0,WLP1LCALLRBITRET;读一个字节RDB:MOVR0,#8RLP1:LCALLRBITMOVC,F0RLCADJNZR0,RLP1RET;发送n个字节;R1--发送数据首地址;WNUM--发送字节数;WADDR--写寻址WRNB:LCALLSTAMOVA,WADDR;写器件寻址写CALLWRBJBF0,WFENDMOVA,#ADDRSH;写地址高字节CALLWRBJBF0,WFENDMOVA,#ADDRSL;写地址低字节CALLWRBJBF0,WFENDMOVR7,WNUM;缓冲区字节数WRLP:MOVA,@R1;写入字节LCALLWRBJBF0,WFENDINCR1DJNZR7,WRLPWEND:LCALLSTPMOVR7,#00;延时X1:MOVR6,#00DJNZR6,$DJNZR7,X1RETWFEND:SETBSCLRET;读n个字节;R1--存储数据首地址;RNUM--读字节数;RADDR--读寻址RDNB:LCALLSTAMOVA,WADDR;写器件寻址LCALLWRBJBF0,RFENDMOVA,#ADDRSH;写地址高字节CALLWRBJBF0,RFENDMOVA,#ADDRSL;写地址低字节CALLWRBJBF0,RFENDLCALLSTAMOVA,RADDR;写器件寻址读LCALLWRBJBF0,RFENDMOVR7,RNUM;读字节数RNLP:LCALLRDBMOV@R1,ADJNZR7,FASKLCALLNASREND:LCALLSTPRETRFEND:SETBSCLRETFASK:CALLACKINCR1SJMPRNLP2、读程序1所写入的10个字符并把它们在上位机上显示。参考程序如下(请将下划线部分补充完整):;读取50H-59H的10个字节内容,并显示在上位机;参考程序1定义相关内容ORG0000HAJMPMAINORG0040HMAIN:MOVSP,#5FHMOVWADDR,#0A0H;读数据MOVRADDR,#0A1HMOVRNUM,#10MOVR1,#RBUFCALLRDNBCALLUARTINIT;初始化UARTCALLDIS;回送上位机SJMP$UARTINIT:MOVTMOD,;设置T1为方式2MOVTH1,;设置波特率为9600MOVTL1,MOVSCON,#40H;设置串口位方式1MOVPCON,#00HSETBTR1;定时器1开始计数RETDIS:MOVR7,RNUMMOVR1,#RBUFDISLP:MOVA,@R1MOVSBUF,A;开始发送JNBTI,$CLRTIINCR1DJNZR7,DISLPRET$INCLUDE(I2C.ASM)END注意,为检验EEPOM写入效果,进行程序2前,可以关掉实验箱电源。利用STC-ISP软件提供的串口助手进行通信,并注意相关参数的设置要与单片机程序程序设置一致。3、接收从上位机传来的以$结束的不超过10个字符,写入AT24C64从50H开始的单元,然后读出回显到上位机。;上位机输入,写,读,回显;参考程序1,2,编写相关内容ORG0000HAJMPMAINORG0040HMAIN:MOVSP,#5FHLCALLUARTINIT;串口初始化LCALLRECEIVE;接收上位机数据MOVWADDR,#0A0H;写数据MOVR1,#WBUFCALLWRNBMOVRADDR,#0A1H;读数据MOVRNUM,WNUMMOVR1,#RBUFCALLRDNBCALLDIS;显示到上位机SJMP$RECEIVE:MOVR7,#0MOVR1,#WBUFRRR:JNBRI,$CLRRIMOVA,SBUFCJNEA,#'$',REVLPSJMPRRENDREVLP:MOV@R1,AINCR1INCR7CJNER7,#8,RRRRREND:MOVWNUM,R7RET$INCLUDE(I2C.ASM)END四、实验结论1、I2C是二线制高性能的串行总线,包括SDA串行数据线和SCL时钟号线。2、通过实验,初步了解了I2C的工作原理及其应用。

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功