新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 单片机双机通讯试验

单片机双机通讯试验

作者:时间:2012-10-20来源:网络收藏
实验名称:
实验目的:熟悉串行口工作原理;掌握通信程序设计的一般方法
实验要求:按照实验安排准时参加实验,按照实验步骤操作,仔细观察及记录实验过程及结果,回答实验相关问题,最终根据实验结果撰写实验指导书。
实验内容:编写一个双机通信程序,一个作为主机,一个作为从机,主机对从机发送控制命令,当主机发送turn on 时,从机如果接收正确,则向主机发送on用于应答,并使LED灯亮(从机任选1LED灯来控制),当主机发关turn off 时,从机如果接收正确,则使LED 灯灭。如果不是这两个命令,则从机向主机发送error作为应答。
实验步骤:
1、连接两台开发板的串行通信线,注意共地连接
2、设定A机为发送方
3、设定B机为接收方
4、设定双方接收与发送波特率
5、各自编制收发程序
6、发送数据调试
录入程序:
#include/*命令定义*/#define TurnOn  1#define TurnOff 2/*应答定义*/#define On      3#define Off     4#define Error     4/////////////////显示sbit k1=P1^3;/*第1位数码管共阴端*/sbit k2=P1^2;/*第2位数码管共阴端*/sbit k3=P1^1;/*第3位数码管共阴端*/sbit k4=P1^0;/*第4位数码管共阴端*/unsigned char rd=0;//串口数据接收暂存变量void RxdInterrupt() interrupt 4 using 2//串口中断函数{rd=SBUF;//接收数据存储到变量rdif(rd==TurnOn)//是亮灯命令{P0=255;//LED亮SBUF=On;//应答Onwhile(TI==0);TI=0; //等待发送完毕}else if(rd==TurnOff)//是关灯命令{P0=0;//LED灭SBUF=Off;//应答Offwhile(TI==0);TI=0; //等待发送完毕}else {SBUF=Error;//应答Offwhile(TI==0);TI=0; //等待发送完毕}RI=0;}void InitEs()//串口初始化函数{TMOD=0x21;   TH1=0xF3;//波速率设置为2400TR1=1; SCON=0XD0; ES=1;//串口中断允许}main(){InitEs();//串口初始化EA=1;  k1=k2=k3=k4=0;//关闭数码管P0=0;//LED灭while(1){}} 
程序参考及鸣谢:我在网上认识了一个网名为苏工的网友,我不知道他真名,但是人很好,我把问题咨询过他了。虽然对用c程序编程,我很生疏,因为以往我的菜鸟级编程都是汇编语言,但是,他给我解释C程序很详细,我略有小知,很感谢苏工,所以在这个实验报告引用了他的脑力劳动成果,并且在这里谢谢苏工对我的指教。同样感谢单片机鲜浩老师,对我单片机课程细致的传授,使我产生浓厚兴趣的同时真真切切的感受到学习单片机的快乐和运用智慧操纵机器的兴奋。不知道以往实验报告的学生有没有我这一则小叙,但是对别人劳动成功的肯定,我认为是我们对待知识的尊重。参考网址:http://www.51hei.com/mcu/791.html
实验结果:主机对从机发送控制命令,当主机发送turn on 时,从机如果接收正确,则向主机发送on用于应答,并使LED灯亮(从机任选1LED灯来控制),当主机发关turn off 时,从机如果接收正确,则使LED 灯灭。如果不是这两个命令,则从机向主机发送error作为应答。


关键词: 单片机 双机通讯

评论


相关推荐

技术专区

关闭