标题:
单片机之间主从通讯程序 485总线
[打印本页]
作者:
1208235589
时间:
2015-6-5 00:21
标题:
单片机之间主从通讯程序 485总线
单片机之间主从通讯实例
485主从通讯 (3).jpg
(1.46 MB, 下载次数: 103)
下载附件
2015-6-5 00:19 上传
单片机之间主从通讯.zip
(54.27 KB, 下载次数: 430)
2015-6-5 00:18 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
admin
时间:
2015-6-5 00:37
485主机通讯:
/*********************主机程序**************************/
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit t0 = P0^0;//发送、接收使能
sbit key = P0^1; //控制开关
/***********延时函数**************************/
void delay(uint x)
{
uchar i;
while(x--)
{ for(i=0;i<110;i++); }
}
/***********串口初始化函数**************************/
void init_UART()
{
SCON = 0xd0; //工作方式3 允许串口接收
TMOD = 0x20; //定时器T/C1工作方式2
PCON = 0x00; //波特率倍频
TH1 = 0xfd;
TL1 = 0xfd;
TR1 = 1;
}
/*****************主函数************************/
void main()
{
uchar ADDR=0x01,num=0,tmp;//ADDR地址码,num地址个数
init_UART();//串口初始
while(1)
{
if(key==0)//判断开关是否被按下
{
delay(50);
while(key==0);
/*********发送从机地址**********/
TI=0;
TB8=1;//发送地址信号
t0=1; //发送使能
delay(20);
SBUF=ADDR;//发送地址信号
while(!TI);//等待发送
TI=0;//发送成功
ADDR++;
if(ADDR==6) ADDR=1;
/*********接受从机地址**********/
t0=0; //接受使能
delay(20);
while(!RI);//等待接收从机发回的握手信号
P1=SBUF; //接收回来的值赋值给显示变量
RI=0; //接收成功
delay(1000);
}
}
}
/*
主机:STC12C5A60S2 从机:STC12C4052AD
MAX485通讯
波特率为9600
晶振为110592MHZ
接通第一次按键主机发送01给从机 从机收到后加1返回给主机 发送值最大为5
圆满成功 2014.9.4 23:41
*/
复制代码
作者:
admin
时间:
2015-6-5 00:38
从机程序:
/*********************主机程序**************************/
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit t0 = P3^7;//发送、接收使能
/***********延时函数**************************/
void delay(uint x)
{
uchar i;
while(x--)
{ for(i=0;i<110;i++); }
}
/***********串口初始化函数**************************/
void init_UART()
{
SCON = 0xd0; //工作方式3 允许串口接收
TMOD = 0x20; //定时器T/C1工作方式2
PCON = 0x00; //波特率倍频
TH1 = 0xfd;
TL1 = 0xfd;
TR1 = 1;
}
/*****************主函数************************/
void main()
{
uchar ADDR=0x01,num=0,tmp;//ADDR地址码,num地址个数
init_UART();//串口初始
// P1=0xc0;//初始时显示0
while(1)
{
/*********接受从机地址**********/
t0=0; //接受使能
delay(20);
while(!RI);//等待接收从机发回的握手信号
tmp=SBUF; //接收回来的值赋值给显示变量
RI=0; //接收成功
delay(20);
tmp++;
/*********发送从机地址**********/
TI=0;
TB8=1;//发送地址信号
t0=1; //发送使能
delay(20);
SBUF=tmp;//发送地址信号加1
while(!TI);//等待发送
TI=0;//发送成功
delay(1000);
}
}
/*
本程序为从机程序
11.0592M晶振 波特率9600
从机:STC12C4052AD 主机:STC12C5A60S2
从机数据接加1后发送回主机
2014年9月4日 23时50分
实验成功
*/
复制代码
作者:
blj178
时间:
2016-2-25 14:53
值得学习
作者:
dzbj
时间:
2016-2-27 00:52
请教楼主
TB8是多机通讯位 这个位只开业0/1还是0~255都可以 从机地址是怎么确定的 一直没有看到比较好的教程
作者:
lyseg
时间:
2017-4-8 10:28
谢谢分享!!!
作者:
lyseg
时间:
2017-4-8 10:31
谢谢分享!!!!!!
作者:
3760609865
时间:
2017-4-24 00:21
谢谢楼主,下来学习一下,非常感谢。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1