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); */
}
}
版权声明:本文为CSDN博主「熬夜耗子在线敲代码」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_46020788/article/details/120584790
暂无评论