51单片机串口通信--发送字符、接收字符、发送字符串、接收字符串

180it 2022-04-07 PM 594℃ 0条

uart.c

#include <reg52.h>
#include "uart.h"

#define uint unsigned int
#define uchar unsigned char
typedef unsigned int u16;      //对数据类型进行声明定义
typedef unsigned char u8;

//串口初始化函数  9600
void URATinit()
{
 TMOD=0x20;
 SCON=0x50;
 TR1=1;
 TH1=0xfd;
 TL1=0xfd;
 EA=1;
 ES=1;
}

//发送一个字符
void Uart_Send_Byte(unsigned char dat)
{
     SBUF = dat;
    while(!TI);
    TI=0;
}

//发送一串字符串
void Uart_Send_String(unsigned char *p)
{
     while(*p)
    {
         Uart_Send_Byte(*p++);    
    } 
}

u8 ch,i;
u8 RX_BUF[10],RX_DAT[10],RX_CNT=0,RX_OVER=0;
//串口接收中断
void Uart_IRQ() interrupt 4
{
 /*if(RI)
 {  
   RI=0;//清标志位 
   ch=SBUF;
   if(ch=='A') {}
 } */
 if(RI)
 {  
   ch=SBUF;
   if(ch!='}')
   {
      RX_BUF[RX_CNT++]=ch;
   }
   else    //结束
   {
     for(i=0;i<RX_CNT;i++)
     {
          RX_DAT[i]=RX_BUF[i];
     }
     
     RX_CNT=0;
     RX_OVER=1;
   }
   RI=0;//清标志位 
 }      
}

/*if(RX_DAT[0]=='N' && RX_DAT[1]=='A'&& RX_DAT[2]=='M'&& RX_DAT[3]=='E')
        {
          Uart_Send_String("单片机");delay(1000);
        } */
        /*if(strstr(RX_DAT,"{\"get\":\"state\"}")!=NULL)
        {
          Uart_Send_String("单片机");
        }
        else
        {
          Uart_Send_String(RX_DAT);
        }*/    

 

uart.h

#ifndef  __UART_H__
#define  __UART_H__

extern unsigned char RX_DAT[10],RX_OVER;
extern unsigned char i;
//函数
void URATinit();
void Uart_Send_Byte(unsigned char dat);
void Uart_Send_String(unsigned char *p);
void Uart_IRQ();
#endif

main.c

#include <reg52.h>
#include "Delay.h"    //包含Delay头文件
#include "uart.h"
#include "string.h"
//主函数

void  main()
{
 URATinit( );
 //Uart_Send_Byte('A');
 while(1)
 {
      /*if(RX_DAT[0]=='N' && RX_DAT[1]=='A'&& RX_DAT[2]=='M'&& RX_DAT[3]=='E')
        {
          Uart_Send_String("单片机");delay(1000);
        } */
        /*if(strstr(RX_DAT,"{\"get\":\"state\"}")!=NULL)
        {
          Uart_Send_String("单片机");
        }
        else
        {
          Uart_Send_String(RX_DAT);
        }*/    
        RX_OVER=0;
    }
    
    /*Uart_Send_String("单片机");delay(1000);
    Uart_Send_String("单片机");
    delay(1000); */
 }
}         

来源:https://blog.csdn.net/weixin_46020788/article/details/120584790

支付宝打赏支付宝打赏 微信打赏微信打赏

如果文章或资源对您有帮助,欢迎打赏作者。一路走来,感谢有您!

标签: none

51单片机串口通信--发送字符、接收字符、发送字符串、接收字符串