RS485串口通信试验
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
*请在字符串输入框中输入字符和数字(HEX),按发送按钮。观看接受窗显示情况.也可以用自动循环发送。
*
* 3.试验RS485需要用RS232转485的转换头。开板A对485转换头A B对应485转换头B.接法大家可以参考原理图。
**
*请学员认真消化本例程,学会用C语言操作串口和485的实现*
********************************************************************************/
SBUF=SenData;//发送数据
delay(50);
}
else
{
RS485E=0;//接收状态
}
}
}
/****************************************************
串口中断程序
******************************************************/
PCON|= 0x80;
TH1 = 0xFd; //baud*2 /* reload value 19200、数据位8、停止位1。效验位无(11.0592)
//TH1 = 0xF3;// //baud*2 /*波特率4800、数据位8、停止位1。效验位无(12M)
TL1 = 0xF3;
TR1 = 1;
void ser_int (void) interrupt 4 using 1
{
if(TI == 1)
{
TI = 0;
SendFlag = 0;
}
if(RI == 1) //RI接受中断标志
{
RI = 0;//清除RI接受中断标志
ReData = SBUF; //SUBF接受/发送缓冲器
SenData=ReData;
void delay(unsigned char i)
{
unsigned char j;
for(i; i > 0; i--)
for(j = 200; j > 0; j--);
}
void main (void) {
SCON = 0x50; //REN=1允许串行接受状态,串口工作模式1
TMOD|= 0x20; //定时器工作方式2
ES = 1; //开串口中断
EA = 1; //开总中断
// IE = 0x0;
while(1)
{
if (SendFlag==1) // max485(半双工通信) RE/DE定义RE=0为接受状态DE=1为发送状态(参考MAX485芯片管脚)
{ RS485E=1;// RS5485E=0为接收状态RS5485E=1为发送状态
#include <REG52.H>
#include <stdio.h>
sbit RS485E=P3^7; //定义485的使能脚
bit SendFlag;
unsigned int ReData,SenData;
/**************************************
延时程序
**************************************/
/*******************************************************************************
*标题: RS485串口通信试验(ห้องสมุดไป่ตู้受与发送) *
**
* 1.通过本例程了解串口的基本原理及使用,理解并掌握对串口进行初始化*
**
* 2.请使用串口调试助手(Baud 4800、数据位8、停止位1、效验位无)做为上位机(发送)数据和(接受)数据,
SendFlag = 1;
}
}
*
* 3.试验RS485需要用RS232转485的转换头。开板A对485转换头A B对应485转换头B.接法大家可以参考原理图。
**
*请学员认真消化本例程,学会用C语言操作串口和485的实现*
********************************************************************************/
SBUF=SenData;//发送数据
delay(50);
}
else
{
RS485E=0;//接收状态
}
}
}
/****************************************************
串口中断程序
******************************************************/
PCON|= 0x80;
TH1 = 0xFd; //baud*2 /* reload value 19200、数据位8、停止位1。效验位无(11.0592)
//TH1 = 0xF3;// //baud*2 /*波特率4800、数据位8、停止位1。效验位无(12M)
TL1 = 0xF3;
TR1 = 1;
void ser_int (void) interrupt 4 using 1
{
if(TI == 1)
{
TI = 0;
SendFlag = 0;
}
if(RI == 1) //RI接受中断标志
{
RI = 0;//清除RI接受中断标志
ReData = SBUF; //SUBF接受/发送缓冲器
SenData=ReData;
void delay(unsigned char i)
{
unsigned char j;
for(i; i > 0; i--)
for(j = 200; j > 0; j--);
}
void main (void) {
SCON = 0x50; //REN=1允许串行接受状态,串口工作模式1
TMOD|= 0x20; //定时器工作方式2
ES = 1; //开串口中断
EA = 1; //开总中断
// IE = 0x0;
while(1)
{
if (SendFlag==1) // max485(半双工通信) RE/DE定义RE=0为接受状态DE=1为发送状态(参考MAX485芯片管脚)
{ RS485E=1;// RS5485E=0为接收状态RS5485E=1为发送状态
#include <REG52.H>
#include <stdio.h>
sbit RS485E=P3^7; //定义485的使能脚
bit SendFlag;
unsigned int ReData,SenData;
/**************************************
延时程序
**************************************/
/*******************************************************************************
*标题: RS485串口通信试验(ห้องสมุดไป่ตู้受与发送) *
**
* 1.通过本例程了解串口的基本原理及使用,理解并掌握对串口进行初始化*
**
* 2.请使用串口调试助手(Baud 4800、数据位8、停止位1、效验位无)做为上位机(发送)数据和(接受)数据,
SendFlag = 1;
}
}