《(25)--7.5 串行口应用举例单片机原理及应用.ppt》由会员分享,可在线阅读,更多相关《(25)--7.5 串行口应用举例单片机原理及应用.ppt(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第7章 单片机串行口原理及应用7.5 7.5 串行口的应用举例串行口的应用举例方式方式1 1的的应用应用单片机之间的单片机之间的通信通信MCS-51MCS-51单片机的串行口方式单片机的串行口方式1 1为为8 8位数据传输模式,方式位数据传输模式,方式2 2与方式与方式3 3区区别在于波特率的计算方法不同,两种方式均为别在于波特率的计算方法不同,两种方式均为9 9位数据传输模式。位数据传输模式。这些工作模式都可用于单片机之间、单片机与外围设备之间的串行这些工作模式都可用于单片机之间、单片机与外围设备之间的串行通信通信。本节课本节课将将列出列出串行口工作在方式串行口工作在方式1 1的的实例实例,
2、关于方式关于方式3 3的实例的实例大家可以在学习方式大家可以在学习方式1 1的基础上自学。的基础上自学。7.5 7.5 串行口的应用举例串行口的应用举例【例】【例】MCS-51MCS-51单片机进行通信。要求甲机将内部单片机进行通信。要求甲机将内部RAMRAM地址地址30H30H开始存储的开始存储的2020个数据送入乙机器中内部个数据送入乙机器中内部RAMRAM地址地址40H40H开始的存储空间中。要求双方的开始的存储空间中。要求双方的串行口均采用方式串行口均采用方式1 1、中断方式进行数据传输。波特率为、中断方式进行数据传输。波特率为4800bit/s4800bit/s,晶振频,晶振频率为率
3、为11.0592MHz11.0592MHz。试分别写出甲、乙机器。试分别写出甲、乙机器的的发送发送与与接收程序。接收程序。30H31H32H43H40H41H42H53H.data2data3data20data1.data2data3data1甲机器乙机器data20MOV SCON,#40H;串行口工作在方式1MOV TMOD,#20H;设置定时器T1工作在方式2MOV TH1,#0FAH;设置定时器初值MOV TL1,#0FAH =250=07.5 7.5 串行口的应用举例串行口的应用举例运行以下程序以前,假设运行以下程序以前,假设30H30H开始的存储空间已经存入需要传输的数据。开始的
4、存储空间已经存入需要传输的数据。由题意可知,甲机串行口中断方式发送程序如下所示:由题意可知,甲机串行口中断方式发送程序如下所示:ORG 0000HAJMP MAINORG 0023HLJMP SerialOutORG 0030HMOV SCON,#40H;串行口工作在方式1MOV TMOD,#20H;设置定时器T1工作在方式2MOV TH1,#0FAH;设置定时器初值MOV TL1,#0FAHSETB TR1;开定时器SETB EA;开总中断SETB ES;开串行口中断MOV R0,#30H;指针指向内部RAM30HMOV R7,#20;一共发送20个数据MOV A,R0;取出需要发送的第一个
5、数据MOV SBUF,A;送入SBUF发送DEC R7SJMP$MAIN:7.5 7.5 串行口的应用举例串行口的应用举例运行以下程序以前,假设运行以下程序以前,假设30H30H开始的存储空间已经存入需要传输的数据。开始的存储空间已经存入需要传输的数据。由题意可知,甲机串行口中断方式发送程序如下所示:由题意可知,甲机串行口中断方式发送程序如下所示:SerialOut:CLR TI;清除发送中断标志INC R0;指针加1MOV A,R0;取出需要发送的下一个数据MOV SBUF,A;发送下一个数据DJNZ R7,ENDSICLR ES;所有数据发送完毕关闭中断标志位ENDSI:RETI;中断返回
6、7.5 7.5 串行口的应用举例串行口的应用举例乙机串行口中断方式接收的程序如下所示:乙机串行口中断方式接收的程序如下所示:ORG 0000HAJMP MAINORG 0023HLJMP SerialInORG 0030HMAIN:MOV SCON,#50H;串行口工作在方式1,允许接收MOV TMOD,#20H;设置定时器T1工作在方式2MOV TH1,#0FAH;设置定时器初值MOV TL1,#0FAHSETB TR1;开定时器SETB EA;开总中断SETB ES;开串行口中断MOV R0,#40H;指针指向内部RAM40H SJMP$SerialIn:CLR RI;清除接收中断标志MO
7、V A,SBUF;取出SBUF中的数据放入存储区MOV R0,AINC R0;接收下一个数据ENDSI:RETI;中断返回7.5 7.5 串行口的应用举例串行口的应用举例【例】【例】MCS-51MCS-51单片机进行通信。需要发送内部单片机进行通信。需要发送内部RAMRAM地址为地址为40H40H开始的开始的2020个数据,若个数据,若发送完毕,则重新从发送完毕,则重新从40H40H开始发送。同时设备允许接收,并将接收到的数据放入内开始发送。同时设备允许接收,并将接收到的数据放入内部部RAMRAM地址为地址为60H-80H60H-80H开始的存储区中,若存储区满,则继续从开始的存储区中,若存储
8、区满,则继续从60H60H开始更新存储信开始更新存储信息。要求串行口采用方式息。要求串行口采用方式1 1、中断方式进行数据传输。波特率为、中断方式进行数据传输。波特率为4800bit/s4800bit/s,晶振频率,晶振频率为为11.0592MHz11.0592MHz。试编写该单片机的全双工通信程序。(用户可以将需要发送的数据。试编写该单片机的全双工通信程序。(用户可以将需要发送的数据预先存入预先存入40H40H开始的存储空间内。开始的存储空间内。)初始化:初始化:T1T1工作在方式工作在方式2 2,因此,因此,TMOD=20HTMOD=20H;MOV TMOD,#MOV TMOD,#20H2
9、0H串行口工作在方式串行口工作在方式1 1,允许接收,允许接收,SCON=50HSCON=50H;MOV SCON,#50HMOV SCON,#50H波特率为波特率为4800bit/s4800bit/s,晶振频率,晶振频率11.0592MHz11.0592MHz,初值为,初值为0FAH0FAHMOV TH1,#0FAHMOV TH1,#0FAHMOV TL1,#0FAHMOV TL1,#0FAH7.5 7.5 串行口的应用举例串行口的应用举例ORG 0000H AJMP MAIN ORG 0023H LJMP SerialInOut ORG 0030H MAIN:MOV SCON,#50H;串
10、行口工作在方式1,允许接收 MOV TMOD,#20H;设置定时器T1工作在方式2 MOV TH1,#0FAH;设置定时器初值 MOV TL1,#0FAH SETB TR1;开定时器 SETB EA;开总中断 SETB ES;开串行口中断 MOV R0,#40H;指针指向内部RAM40H MOV R1,#60H;指针指向内部RAM60H MOV R7,#20;一共发送20个数据 MOV A,R0;取出需要发送的第一个数据 MOV SBUF,A;送入SBUF发送 DEC R7 SJMP$7.5 7.5 串行口的应用举例串行口的应用举例;串行口中断发送接收子函数SerialInOut:JNB TI
11、,SeIn;判断进入中断的原因是发完或收满一个字节数据CLR TI;发完一个字节,清除发送中断标志INC R0;指针加1MOV A,R0;取出需要发送的下一个数据MOV SBUF,A;发送下一个数据DJNZ R7,ENDSIMOV R0,#40H;发完20个数据再次从开始处发送MOV R7,#20LJMP ENDSISeIn:CLR RI;清除中断接收标志MOV A,SBUF;取出收到的数据MOV R1,ACJNE R1,#80H,SeO;与存储区最后一个地址比较MOV R1,#60H;若已到最后一个地址,指针重新指向第一个地址LJMP ENDSISeO:INC R1;未到最后一个地址,指针加1指向下一个存储地址ENDSI:RETI;中断返回