485主機通訊:
- /*********************主機程序**************************/
- #include <reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
- sbit t0 = P0^0;//發(fā)送、接收使能
- sbit key = P0^1; //控制開關(guān)
- /***********延時函數(shù)**************************/
- void delay(uint x)
- {
- uchar i;
- while(x--)
- { for(i=0;i<110;i++); }
- }
- /***********串口初始化函數(shù)**************************/
- void init_UART()
- {
- SCON = 0xd0; //工作方式3 允許串口接收
- TMOD = 0x20; //定時器T/C1工作方式2
- PCON = 0x00; //波特率倍頻
- TH1 = 0xfd;
- TL1 = 0xfd;
- TR1 = 1;
- }
- /*****************主函數(shù)************************/
- void main()
- {
- uchar ADDR=0x01,num=0,tmp;//ADDR地址碼,num地址個數(shù)
- init_UART();//串口初始
- while(1)
- {
- if(key==0)//判斷開關(guān)是否被按下
- {
- delay(50);
- while(key==0);
- /*********發(fā)送從機地址**********/
- TI=0;
- TB8=1;//發(fā)送地址信號
- t0=1; //發(fā)送使能
- delay(20);
- SBUF=ADDR;//發(fā)送地址信號
- while(!TI);//等待發(fā)送
- TI=0;//發(fā)送成功
- ADDR++;
- if(ADDR==6) ADDR=1;
- /*********接受從機地址**********/
- t0=0; //接受使能
- delay(20);
- while(!RI);//等待接收從機發(fā)回的握手信號
- P1=SBUF; //接收回來的值賦值給顯示變量
- RI=0; //接收成功
- delay(1000);
-
- }
- }
- }
- /*
- 主機:STC12C5A60S2 從機:STC12C4052AD
- MAX485通訊
- 波特率為9600
- 晶振為110592MHZ
- 接通第一次按鍵主機發(fā)送01給從機 從機收到后加1返回給主機 發(fā)送值最大為5
- 圓滿成功 2014.9.4 23:41
- */
復(fù)制代碼 |