首页 接线图文章正文

51单片机与PC串口通信程序及硬件电路图

接线图 2023年10月20日 20:41 191 admin

51单片机与PC串口通信程序及硬件电路图  第1张

51单片机与PC串口通信程序及硬件电路图  第2张

#include 
#define    BUFFERLEGTH 10
//-----------------------------------------------------------------
void UART_init();                //串口初始化函数
void COM_send(void);             //串口发送函数
char STr[20];
char j;
//-------------------------------------------------------------------
void main(void)
{
unsigned char i;
UART_init();
j=0;        //初始化串口
for(i = 0;i < 10 ;i++)
{
   COM_send();        //首先发送一次数据作为测试用

};

while(1);
}


//-------------------------------------------------------------
//--------------------------------------------------------------------------------------------------
// 函数名称: UART_init()串口初始化函数
// 函数功能: 在系统时钟为11.059MHZ时,设定串口波特率为9600bit/s
//             串口接收中断允许,发送中断禁止
//--------------------------------------------------------------------------------------------------
void UART_init()
{
                      //初始化串行口和波特率发生器
SCON =0x50;           //选择串口工作方式1,打开接收允许
TMOD =0x20;           //定时器1工作在方式2,定时器0工作在方式1
TH1 =0xfA;            //实现波特率9600(系统时钟11.0592MHZ)
PCON = 0x80;
TR1 =1;               //启动定时器T1
ET1 =0;
ES=1;                 //允许串行口中断
PS=1;                 //设计串行口中断优先级
EA =1;                //单片机中断允许
}
//------------------------------------------------------------
void COM_send(void)
{
    unsigned char point = 0;
    for(point=0;str[point]!='\0';point++)       //连续发送二十位数据                                      //把缓存区的数据都发送到串口
   {
    SBUF=str[point];
    while(!TI);
    TI=0;
//str[point]='\0';
    }

}
//--------------------------------------------------------------
//--------------------------------------------------------------------------------------------------
// 函数名称: COM_interrup()串口接收中断处理函数
// 函数功能: 接收包括起始位'S'在内的十位数据到数据缓冲区
//--------------------------------------------------------------------------------------------------
void com_interrupt(void) interrupt 4 using 3
{
   unsigned char RECEIVR_buffer;
   bit flag=1;
   if(RI)                                 //处理接收中断
   {
      RI=0;                                 //清除中断标志位
      RECEIVR_buffer=SBUF;             //接收串口数据
      str[j]=SBUF;
      if (RECEIVR_buffer == '$')
      { ES=0; 
      str[j]='\0';
         SCON =0x40;     //接收不允许
         COM_send();    //发送数据
   ES=1; 
   j=0; 
   flag=0;
         SCON=0x50;     //接收允许
      }
   if(flag)
   j++;
    }
}

版权与免责声明

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

标签: 其它电路图 电路图

发表评论

接线图网Copyright Your WebSite.Some Rights Reserved. 备案号:桂ICP备2022002688号-2 接线图网版权所有 联系作者QQ:360888349