51单片机串口接受协议
#include "reg51.h"
#include <string.h>
typedef unsigned char BYTE;
unsigned char *str;//发送字符串指针
unsigned char inbuf1[5];//接收缓存
unsigned char strbuf1=0;//接收缓存指针
void init_serialcomm(void)
{
SCON = 0x50; //SCON: serail mode 1, 8-bit UART, enable ucvr
TMOD = 0x20; //TMOD: timer 1, mode 2, 8-bit reload
PCON = 0x80; //SMOD=1;
TH1 = 0xF4; //Baud:4800 fosc=11.0592MHz
IE = 0x90; //Enable Serial Interrupt
TR1 = 1; // timer 1 run
// TI=1;
}
void serial () interrupt 4 using 3//串口中断
{
if(RI)
{RI=0;//接收中断
inbuf1[strbuf1]=SBUF;
if (SBUF=='\n')
{str =&inbuf1;//直接附地址
SBUF=*str;}
if (strbuf1==5)
{strbuf1=0;}
else
{strbuf1++;}
}
else
{TI=0;//发送中断
if (str != 0)
{ str ++ ;}//后移指针
if (*str != '\0')//判断字符串的结尾
{SBUF=*str ;}
else
{str=0;}
}
}
void FaSong(unsigned char *st)// 发送字符串
{
str=st;//吧字符串的首地址保存
SBUF=*str;//剩下的事交给中断程序
}
main()
{
init_serialcomm(); //初始化串口
while(1)
{
while(str!=0){}//等待串口发送不忙
FaSong("串口发送实验\n");
while(str!=0){}
FaSong("可以连续发送\n");
while(str!=0){}
FaSong("只需一个函数\n");
while(str!=0){}
FaSong("Bye! \n");
while(str!=0){}//等待串口发送不忙
str =&"不用调用函数\n";//直接附地址
SBUF=*str;
while(str!=0){}
str =&"直接附地址\n";//直接附地址
SBUF=*str;
}
}
有哪位大虾帮忙帖一下接收协议的实现