串口发送控制继电器开关程序设计

来源:本站
导读:目前正在解读《串口发送控制继电器开关程序设计》的相关信息,《串口发送控制继电器开关程序设计》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《串口发送控制继电器开关程序设计》的详细说明。
简介:
实现功能:串口发送控制继电器开关
使用芯片:STC15F104E
晶振:12MHZ
编译环境:Keil

/********************************************************************实现功能:串口发送控制继电器开关使用芯片:STC15F104E晶振:12MHZ编译环境:Keil    *********************************************************************//********************************************************************单片机与PC机采用9针串口,MAX232通讯,波特率默认为9600.单片机接收PC机发送的数据码表如下:01、开:PC发送'A'; 02、关:PC发送'B'; 03、输出状态查询:PC发送C;单片机返回输出状态‘A’表示开 ‘B’表示关;04、继电器状态取反:PC发送D    继电器状态取反*********************************************************************/#include "reg52.h" #include <intrins.H>#define uchar unsigned char //宏定义字符型变量#define uint  unsigned int  //宏定义整型变量/********************************************************************                            波特率设定*********************************************************************///#define BAUD 0XF400  //1200bps@ 11.0592MHZ//#define BAUD 0XFA00  //2400bps@ 11.0592MHZ//#define BAUD 0XFD00  //4800bps@ 11.0592MHZ#define BAUD 0XFE80  //9600bps@ 11.0592MHZ//#define BAUD 0XFF40  //19200bps@ 11.0592MHZ//#define BAUD 0XFFA0  //38400bps@ 11.0592MHZuchar dat; //用于存储单片机接收发送缓冲寄存器SBUF里面的内容sbit  P33=P3^3; //定义继电器控制输出脚/********************************************************************                            定义特殊寄存器*********************************************************************/sfr AUXR  =  0x8E;   //辅助寄存器sbit RXB=P3^0;sbit TXB=P3^1;/********************************************************************                           定义数据类型*********************************************************************/uchar TBUF,RBUF;uchar TDAT,RDAT;uchar TCNT,RCNT;uchar TBIT,RBIT;uint TING,RING;uint TEND,REND;void UART_INIT(); //声明函数uchar t,r;        //定义数据类型uchar but[16];    //数据存储数组/********************************************************************                            延时函数*********************************************************************/void delay(uchar t){  uchar i,j;   for(i=0;i<t;i++)   {     for(j=13;j>0;j--);     { ;     }   }}/********************************************************************                            主函数*********************************************************************/void main(){TMOD=0X00;     //定时器T0设定AUXR=0X80;     //辅助寄存器TL0=BAUD;      //十六位寄存器TH0=BAUD>>8;   //十六位寄存器TR0=1;         //开定时器ET0=1;PT0=1;EA=1;          //开总中断UART_INIT();   //串口初始化while(1)       //无线循环{if(REND)  {   REND=0;   r++;   //but[r++&0x0f]=RBUF;   dat=RBUF;   }  if(TEND)   {   if(t!=r)     {     TEND=0;//   TBUF=dat;switch(dat) //接收数据判断{uchar k;k=10;case 'A': P33=1;delay(k);TBUF = dat;dat=0xee;break;    //  开case 'B': P33=0;delay(k);TBUF = dat;dat=0xee;break;    //  关case 'C': if(P33==1){TBUF = 'A';}if(P33==0){TBUF = 'B';}delay(k);dat=0xee;break;       //  读输出口状态case 'D': P33=!P33;delay(k);TBUF = dat;dat=0xee;break;  //  输出口取反default:break;                     //  跳出}     t++;     //TBUF=but[t++&0x0f];     TING=1;     }   }/********************************************************************                            接收数据判断函数*********************************************************************/}}/********************************************************************                            定时器T0*********************************************************************/void tm0()interrupt 1 using 1{ if(RING)  {   if(--RCNT==0)    {     RCNT=3;     if(--RBIT==0)        {         RBUF=RDAT;         RING=0;         REND=1;        }        else        {         RDAT>>=1;         if(RXB)RDAT|=0X80;        }    }  }    else if(!RXB)    {     RING=1;     RCNT=4;     RBIT=9;    }    if(--TCNT==0)    {    TCNT=3;    if(TING)    {      if(TBIT==0)      {      TXB=0;      TDAT=TBUF;      TBIT=9;      }      else      {      TDAT>>=1;      if(--TBIT==0)      {       TXB=1;       TING=0;       TEND=1;      }      else      {      TXB=CY;      }      }    }    }}/********************************************************************              功能:串口初始化,波特率9600,方式1*********************************************************************/void UART_INIT(){TING=0;RING=0;TEND=1;REND=0;TCNT=0;RCNT=0;}/********************************************************************                            结束*********************************************************************/

提醒:《串口发送控制继电器开关程序设计》最后刷新时间 2024-03-14 01:02:36,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《串口发送控制继电器开关程序设计》该内容的真实性请自行鉴别。