您好,欢迎来到五一七教育网。
搜索
您的当前位置:首页RS485串口通信试验

RS485串口通信试验

来源:五一七教育网


/*******************************************************************************

* 标题: RS485串口通信试验(接受与发送) *

* *

* 1.通过本例程了解串口的基本原理及使用 ,理解并掌握对串口进行初始化 *

* *

* 2.请使用串口调试助手(Baud 4800、数据位8、停止位1、效验位无)做为上位机(发送)数据和(接受)数据,

* 请在字符串输入框中输入字符和数字(HEX),按发送按钮。观看接受窗显示情况.也可以用自动循环发送。

*

* 3.试验RS485需要用RS232转485的转换头。开板A对485转换头A B对应485转换头B.接法大家可以参考原理图。

* *

* 请学员认真消化本例程,学会用C语言操作串口和485的实现

*

********************************************************************************/

#include

#include

sbit RS485E=P3^7; //定义485的使能脚

bit SendFlag;

unsigned int ReData,SenData;

/**************************************

延时程序

**************************************/

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

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;

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为发送状态

SBUF=SenData; //发送数据

delay(50);

}

else

{

RS485E=0; //接收状态

}

}

}

/****************************************************

串口中断程序

******************************************************/

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;

SendFlag = 1;

}

}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 517ttc.cn 版权所有 赣ICP备2024042791号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务