资源简介
包含源程序及proteus仿真;通过主机扫描键盘,捕获要发送的数据,再有按键选下目的从机,然后两机握手,收发数据
代码片段和文件信息
//接收数据头文件定义:
//#ifndef _receive_data_h //防止_receive_data_h被重复引用
//#define _receive_data_h //包含头文件
#include
#include
#define uchar unsigned char
#define uint unsigned int
uchar buf;
uchar addrtmp;
sbit P23=P2^3; //引脚控制二极管
//#endif
//接收数据程序:
//#include
/******************延时t毫秒***********************/
void delayXms(uint t) //延时X毫秒子程序
{
uint ij;
for(i=0;i for(j=0;j<125;j++) ;
}
/*******************接收数据函数************************/
uchar recvdata()
{
while(!RI);
if(RB8==1)
return 0xee; //若接收到的为地址指针,则返回0xee
buf=SBUF;
RI=0;
return 0; //返回0
}
/*********************串口初始化*********************/
void init()
{
TMOD=0x20;
TH1=250;
TL1=250; //波特率9600kb/s
TR1=1;
PCON=0x80; //SMOD=1
SCON=0xd0; //工作方式,9位数据,允许接受数据
}
/*********************主程序*********************/
void main()
{
uchar tmp=0xff;
P1=0xff;
addr=P1&0x0f; //获取本机地址
P23=1; //发光二极管不亮
init(); //串口初始化
EA=0; //关闭中断
while(1) //进入设备应答
{
SM2=1; //只接收地址帧
while(tmp!=addr) //如果接收到的地址帧不是本机的,则继续等待
{
RI=0;
while(!RI)
tmp=SBUF;
RI=0;
}
SM2=0; //允许数据接收
tmp=recvdata(); //数据接收
if(tmp==0x00)
{
P0=buf;
P23=0; //绿灯亮,持续500ms,表示数据接收成功
delayXms(30);
P23=1;
} //如果接收数据时发现地址帧,则重新开始整个过程
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 159063 2010-08-03 23:42 多机通信电路.DSN
文件 1641 2010-08-02 20:47 多机通信电路(从机1).c
文件 472 2010-08-02 20:47 多机通信电路(从机1).hex
文件 3539 2010-08-03 23:38 多机通信电路(主机).c
文件 1590 2010-08-02 22:17 多机通信电路(主机).hex
文件 5065 2010-08-02 21:11 多机通信电路.txt
----------- --------- ---------- ----- ----
171370 6
- 上一篇:金刚石刀具的初步设计
- 下一篇:ISO 16845-1-2016
评论
共有 条评论