实验9 单片机双机通讯

实验9 单片机双机通讯

ID:39615887

大小:269.00 KB

页数:7页

时间:2019-07-07

实验9 单片机双机通讯_第1页
实验9 单片机双机通讯_第2页
实验9 单片机双机通讯_第3页
实验9 单片机双机通讯_第4页
实验9 单片机双机通讯_第5页
资源描述:

《实验9 单片机双机通讯》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、CHANGZHOUINSTITUTEOFTECHNOLOGY题目9:单片机双机通讯二级学院(直属学部):延陵学院专业:电气工程及其自动化班级:10电Y3学生姓名:学号:一、实验目的1、掌握89C51单片机异步串行口的通讯原理和编程2、掌握串行口工作方式1的使用及其波特率的计算二、实验电路元器件编号元器件名称说明U1、U3AT89C52AT89C52单片机U2、U474HC2458位总线驱动器7SEG-BCD7段BCD数码管显示器三、实验流程四、实验操作和调试串行口设为工作方式1,其中一个单片机为发送方,另

2、外一个为接受方。发送数据块大小为10个字节。存放在发送方单片机内部RAM的50H~59H之中,通过发送方单片机的串行口发出,再通过接收方单片机的串行口接收。接收数据块放在接收方单片机内部的RAM的60H~69H中。实验中数据传输通过程序查询控制,查询数据有否已发送或者已收到。发送数据之前,发送方单片机持续发送联络信号AAH给接收方单片机,收到接收方单片机的应答信号才开始发送数据块,发送和接收的数据均传送到各自的P2口的7SEG-BCD数码管显示器上显示。五、实验程序/*在P2口显示启动信号AA,回答信号B

3、B,发送数据*/#include#include#include#include#include#include#definebyteunsignedchar#defineucharunsignedchar#definewordunsignedint#defineuintunsignedint#defineulongunsignedlong#defineBYTEunsignedchar#de

4、fineWORDunsignedint#defineTRUE1#defineFALSE0sbitSEND_RECI_CTRL=P1^0;//SEND_RECI_LINE=1设置发送,=0设置接收voidinitUart(void);//初始化串行口波特率,使用定时器2voidsend(ucharidata*d);//发送函数voidreceive(ucharidata*d);//接收函数voidinitUart(void);//初始化串行口voidtime(unsignedintucMs);//延时单位:

5、msucharidatasbuf[10]_at_0x50;//发送内容ucharidatarbuf[10]_at_0x60;//接收缓冲区/****************mainc*************/voidmain(void){initUart();//初始化串行口time(10);//延时等待外围器件完成复位if(SEND_RECI_CTRL){//如果发送标志有效则初始化发送数组数据uchari;for(i=0;i<10;i++){sbuf[i]=0x20+i;}}if(SEND_RECI

6、_CTRL){//发送send(sbuf);}else{//接收receive(rbuf);}while(TRUE){}}/**********初始化串行口波特率********/voidinitUart(void){SCON=0x50;//串行口工作在方式1下TMOD=0x20;PCON=0x0;TH1=0xfd;TCON=0x40;}voidsend(ucharidata*d)//发送函数{uchari;do{P2=0xaa;SBUF=0xaa;//发送联络信号while(TI==0){}TI=0;w

7、hile(RI==0){}RI=0;}while((SBUF^0xbb)!=0);//乙机未准备好,继续联络P2=SBUF;time(500);/*发送0x20,0x21....0x29*/for(i=0;i<10;i++){P2=d[i];time(500);SBUF=d[i];//发送一个数据while(TI==0){}TI=0;}}voidreceive(ucharidata*d)//接收函数{uchari;do{while(RI==0){}RI=0;P2=SBUF;time(500);}while

8、((SBUF^0xaa)!=0);//判断甲机请求否P2=0xbb;time(500);SBUF=0xbb;//发应答信号while(TI==0){}TI=0;while(1){for(i=0;i<10;i++){while(RI==0){}RI=0;d[i]=SBUF;//接收一个数据P2=d[i];//显示数据}}}voiddelay_5us(void)//延时5us,晶振改变时只改变这一个函数{_nop_();_nop_

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。