485主机通讯:
- /*********************主机程序**************************/
- #include <reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
- sbit t0 = P0^0;//发送、接收使能
- sbit key = P0^1; //控制开关
- /***********延时函数**************************/
- void delay(uint x)
- {
- uchar i;
- while(x--)
- { for(i=0;i<110;i++); }
- }
- /***********串口初始化函数**************************/
- void init_UART()
- {
- SCON = 0xd0; //工作方式3 允许串口接收
- TMOD = 0x20; //定时器T/C1工作方式2
- PCON = 0x00; //波特率倍频
- TH1 = 0xfd;
- TL1 = 0xfd;
- TR1 = 1;
- }
- /*****************主函数************************/
- void main()
- {
- uchar ADDR=0x01,num=0,tmp;//ADDR地址码,num地址个数
- init_UART();//串口初始
- while(1)
- {
- if(key==0)//判断开关是否被按下
- {
- delay(50);
- while(key==0);
- /*********发送从机地址**********/
- TI=0;
- TB8=1;//发送地址信号
- t0=1; //发送使能
- delay(20);
- SBUF=ADDR;//发送地址信号
- while(!TI);//等待发送
- TI=0;//发送成功
- ADDR++;
- if(ADDR==6) ADDR=1;
- /*********接受从机地址**********/
- t0=0; //接受使能
- delay(20);
- while(!RI);//等待接收从机发回的握手信号
- P1=SBUF; //接收回来的值赋值给显示变量
- RI=0; //接收成功
- delay(1000);
-
- }
- }
- }
- /*
- 主机:STC12C5A60S2 从机:STC12C4052AD
- MAX485通讯
- 波特率为9600
- 晶振为110592MHZ
- 接通第一次按键主机发送01给从机 从机收到后加1返回给主机 发送值最大为5
- 圆满成功 2014.9.4 23:41
- */
复制代码 |