Rs485通信單片機源程序如下:
- /*******************************************************************************
- * 標題: RS485串口通信試驗(接受與發(fā)送) *
- * *
- * 1.通過本例程了解串口的基本原理及使用 ,理解并掌握對串口進行初始化 *
- * *
- * 2.請使用串口調(diào)試助手(Baud 4800、數(shù)據(jù)位8、停止位1、效驗位無)做為上位機(發(fā)送)數(shù)據(jù)和(接受)數(shù)據(jù),
- * 請在字符串輸入框中輸入字符和數(shù)字(HEX),按發(fā)送按鈕。觀看接受窗顯示情況.也可以用自動循環(huán)發(fā)送。
- *
- * 3.試驗RS485需要用RS232轉(zhuǎn)485的轉(zhuǎn)換頭。開板A對485轉(zhuǎn)換頭A B對應(yīng)485轉(zhuǎn)換頭B.接法大家可以參考原理圖。
- * *
- * 請學(xué)員認真消化本例程,學(xué)會用C語言操作串口和485的實現(xiàn) *
- ********************************************************************************/
- #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允許串行接受狀態(tài),串口工作模式1
- TMOD|= 0x20; //定時器工作方式2
- PCON|= 0x80;
- TH1 = 0xFd; //baud*2 /* reload value 19200、數(shù)據(jù)位8、停止位1。效驗位無 (11.0592)
- //TH1 = 0xF3; // //baud*2 /* 波特率4800、數(shù)據(jù)位8、停止位1。效驗位無 (12M)
- TL1 = 0xF3;
- TR1 = 1;
- ES = 1; //開串口中斷
- EA = 1; // 開總中斷
-
- // IE = 0x0;
-
- while(1)
- {
-
- if (SendFlag==1) // max485(半雙工通信) RE/DE定義 RE=0為接受狀態(tài) DE=1為發(fā)送狀態(tài)(參考MAX485芯片管腳)
- { RS485E=1; // RS5485E=0為接收狀態(tài) RS5485E=1為發(fā)送狀態(tài)
- SBUF=SenData; //發(fā)送數(shù)據(jù)
- delay(50);
- }
- else
- {
- RS485E=0; //接收狀態(tài)
- }
- }
-
- }
- /****************************************************
- 串口中斷程序
- ******************************************************/
- void ser_int (void) interrupt 4 using 1
- {
- if(TI == 1)
- {
- TI = 0;
- SendFlag = 0;
- }
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
C程序.zip
(17.23 KB, 下載次數(shù): 384)
2017-6-5 18:53 上傳
點擊文件名下載附件
|