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, 下載次數: 384)
2017-6-5 18:53 上傳
點擊文件名下載附件
|