首页 C51单片机双机通信程序

C51单片机双机通信程序

举报
开通vip

C51单片机双机通信程序C51单片机双机通信程序 2010-12-18 20:25 C51单片机双机通信程序 /* 接收程序 线路连接:同上, 主从单片机用3线连接,共地,rxd,txd交叉 程序效果:用于显示主机发送的数值 */ #include //头文件 #include //循环文件 #define uchar unsigned char//宏定义 #define uint unsigned int uchar code table[]={0X00,0x3f,0x06,0x5b,//数码管显示的数值 0x4f,...

C51单片机双机通信程序
C51单片机双机通信程序 2010-12-18 20:25 C51单片机双机通信程序 /* 接收程序 线路连接:同上, 主从单片机用3线连接,共地,rxd,txd交叉 程序效果:用于显示主机发送的数值 */ #include //头文件 #include //循环文件 #define uchar unsigned char//宏定义 #define uint unsigned int uchar code table[]={0X00,0x3f,0x06,0x5b,//数码管显示的数值 0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar table_tr[6];//暂存最后按下的六个数值 uchar count,cnt;//定义全局变量 //延时子函数,用于数码管显示 void delay(uchar i) { uchar x,y; for(x=i;x>0;x--) for(y=110;y>0;y--); } //初始化子函数 void init() { TMOD=0x20;//T1工作在方式2 TH1=0XF4; //波特率为:4.8kbit/s,发送与接收的波特率要相等 TL1=0XF4; TR1=1; //启动定时器1 SCON=0X50;//串口中断工作在方式1,允许接收 } //显示子函数 void display() { uchar i,j;//定义局部变量 j=0x7f; //赋值 for(i=0;i<6;i++) //显示六个数值 { P2=j; P0=table[table_tr[i]]; delay(10); j=_cror_(j,1);//循环右移一位 } } //主函数 void main() { uchar i;//定义局部变量 init(); //调用初始化子函数 while(1) { while(RI) //判断是否接受完 { RI=0;//接受完了,标志位清零 for(i=0;i<5;i++) //把数组的数值都往前移一位,腾出table_tr【5】 table_tr[i]=table_tr[i+1]; table_tr[5]=SBUF;//装入接收的数值 } display();//调用显示子函数 } } /* 发送程序 连线:两个单片机用3根线连起来,要共地,rxd,txd要交叉连接 程序效果:通过主机发送,从机接收 在主机中通过记下按键按下的次数,主机中显示最后 按下的六个数值,并发送给从机,从机也显示这六个数值 */ #include //头文件 #include //循环移位文件 #define uchar unsigned char//宏定义 #define uint unsigned int sbit key1=P3^5; //位声明 uchar code table[]={0X00,0x3f,0x06,0x5b,//数码管显示的数值 0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar table_tr[6];//暂存最后按下的六个数值 uchar count,cnt; //延时子函数,用于数码管显示 void delay(uchar i) { uchar x,y; for(x=i;x>0;x--) for(y=110;y>0;y--); } //初始化子函数 void init() { TMOD=0x20;//T1工作在方式2 TH1=0XF4;//波特率为4.8kbit/s TL1=0XF4; TR1=1;//启动定时器1 SCON=0X50;//串口工作在方式1,允许接收 } //显示子函数 void display() { uchar i,j;//定义局部变量 j=0x7f; //赋初值 for(i=0;i<6;i++) { P2=j; //点亮最右边的数码管 P0=table[table_tr[i]]; //显示该数值 delay(10); //延时,便于眼睛看清 j=_cror_(j,1);//循环右移一位 } } //按键扫描子函数 void key_scan() { if(key1==0) //判断是否有按键按下 { while(!key1) //等待按键松手 { display();//防止掉显 } cnt++; //加1,用于显示 SBUF=cnt;//送给缓冲区,发送 while(!TI); //等待发送完 TI=0; //发送完了,标志位清零 for(count=0;count<5;count++) //用于保存最后按下的六个按键数值 { table_tr[count]=table_tr[count+1]; } table_tr[5]=cnt; //把最后按下的按键数值赋给table_tr【5】 if(cnt==10) //按键按下的次数有没有等于10 cnt=0;//等于,则清零 } } void main() { init(); //调用初始化子函数 P0=0x00; while(1) { key_scan(); //调用键盘扫描子函数 display();//调用显示子函数 } }
本文档为【C51单片机双机通信程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_841159
暂无简介~
格式:doc
大小:18KB
软件:Word
页数:6
分类:互联网
上传时间:2017-09-26
浏览量:40