收藏 分享(赏)

51单片机之间的通信程序.doc

上传人:tangtianxu1 文档编号:3007863 上传时间:2018-10-01 格式:DOC 页数:14 大小:46.50KB
下载 相关 举报
51单片机之间的通信程序.doc_第1页
第1页 / 共14页
51单片机之间的通信程序.doc_第2页
第2页 / 共14页
51单片机之间的通信程序.doc_第3页
第3页 / 共14页
51单片机之间的通信程序.doc_第4页
第4页 / 共14页
51单片机之间的通信程序.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

1、以下程序通过实践检测完全可以放心使用 不过注意硬件电路的连接单片机的串口通信主要理解 SCON 的状态控制寄存器的用法波特率的设定1 两个单片机一个为主机一个为从机,又主机控制从机的 LED灯得简单程序入手 注意硬件的连线 将单片机串口的第二引脚与另一单片机串口的第三引脚相连同时另一单片机的第二串口引脚也与前一个单片机的第三引脚相连 23456789JDConectr主机部分的程序设计/主机程序 发送控制信号的 #include#define uchar unsigned char#define uint unsigned int sbit KEY=P30;/按键sbit ledA=P11;/

2、定义了三个灯来指示发送的字符是什么sbit ledB=P13;sbit ledC=P15;sbit ledstop=P16;uchar KEY_number=0;/按键计数void delay(unsigned int z)/延时函数unsigned int x,y;for(x=z;x0;x-)for(y=240;y0;y-);void init()SCON=0x40;/主机串口工作方式 1 REN=0 之允许发送不能接收TMOD=0x20;PCON=0x00;TH1=0xfd;TL1=0xfd;T1=RI=0;/必须要做来保证可以顺利进入终端 TR1=1;EA=1;ES=1;void Put

3、_charToSBUF(uchar c) /把一个字符写入 SBUFSBUF=c;while(TI=0); /巧妙的等待处理 等带发送完毕 TI=0;void main()init();while(1)if(KEY=0)delay(5);if(KEY=0) P1=0xff;while(!KEY) ;KEY_number+;if(KEY_number=4) KEY_number=0;switch (KEY_number)case 0: ledstop=0; break;case 1: ledA=ledA; Put_charToSBUF(A);break;case 2: ledB=ledB; Pu

4、t_charToSBUF(B); break;case 3: ledC=ledC; Put_charToSBUF(C);break;delay(100) ;从机部分的程序#include#define uchar unsigned char#define uint unsigned int sbit d1=P10;sbit d2=P11;sbit d3=P12;void delay(unsigned int z)/延时函数unsigned int x,y;for(x=z;x0;x-)for(y=240;y0;y-);void init()SCON=0x50;/允许串口接收 TMOD=0x20;

5、PCON=0x00;TH1=0xfd;TL1=0xfd;RI=0;TR1=1;EA=1;ES=1;void main()init();while(1)if(RI)RI=0;switch(SBUF)case A: d1=d1;break;case B: d1=1; d2=d2;break;case C: d2=1; d3=d3; break;else d1=d2=d3=1;delay(100) ;上面的程序是一主一从 单片机之间也可以建立一个双向的通信过程/甲机程序 发送控制信号的 同时接收乙机发来的串口信息并/且显示在数码管上 #include#define uchar unsigned ch

6、ar#define uint unsigned int sbit KEY=P30;sbit ledA=P11;sbit ledB=P13;sbit ledC=P15;sbit ledstop=P16;unsigned char code duan=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;uchar KEY_number=0;void delay(unsigned int z)/延时函数unsigned int x,y;for(x=z;x0;x-)for(y=240;y0;y-);void init() P2=0;P0=0;SCON=0

7、x50;TMOD=0x20;PCON=0x00;TH1=0xfd;TL1=0xfd;T1=RI=0;TR1=1;EA=1;ES=1;void Put_charToSBUF(uchar c) SBUF=c;while(TI=0);TI=0;void main()init();while(1)if(KEY=0)delay(5);if(KEY=0) P1=0xff;while(!KEY) ;KEY_number+;if(KEY_number=4) KEY_number=0;switch (KEY_number)case 0: ledstop=0; break;case 1: ledA=ledA; P

8、ut_charToSBUF(A);break;case 2: ledB=ledB; Put_charToSBUF(B); break;case 3: ledC=ledC; Put_charToSBUF(C);break;delay(100) ;void seral_int() interrupt 4if(RI)RI=0;if(SBUF=0sbit d2=P11;sbit d3=P12;sbit key=P30;uchar number;void delay(unsigned int z)/延时函数unsigned int x,y;for(x=z;x0;x-)for(y=240;y0;y-);v

9、oid init() P0=0x00;SCON=0x50;TMOD=0x20;PCON=0x00;TH1=0xfd;TL1=0xfd;RI=TI=0;TR1=1;EA=1;ES=1;void main()init();while(1) if(key=0)delay(5);if(key=0)while(!key) ;SBUF=number;while(TI=0) ;TI=0;number+;if(number=11) number=0;delay(100) ;d1=d2=d3=1;void serial_int() interrupt 4if(RI)RI=0;switch(SBUF)case A: d1=d1;break;case B: d1=1; d2=d2;break;case C: d2=1; d3=d3; break;比较上面的程序可以知道接收部分都在串口中断里进行 发送部分在 MAIN 函数里完成

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 往来文书

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报