Rs485通信单片机源程序如下:
- /*******************************************************************************
- * 标题: RS485串口通信试验(接受与发送) *
- * *
- * 1.通过本例程了解串口的基本原理及使用 ,理解并掌握对串口进行初始化 *
- * *
- * 2.请使用串口调试助手(Baud 4800、数据位8、停止位1、效验位无)做为上位机(发送)数据和(接受)数据,
- * 请在字符串输入框中输入字符和数字(HEX),按发送按钮。观看接受窗显示情况.也可以用自动循环发送。
- *
- * 3.试验RS485需要用RS232转485的转换头。开板A对485转换头A B对应485转换头B.接法大家可以参考原理图。
- * *
- * 请学员认真消化本例程,学会用C语言操作串口和485的实现 *
- ********************************************************************************/
- #include <REG52.H>
- #include <stdio.h>
- 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;
- }
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
C程序.zip
(17.23 KB, 下载次数: 382)
|