27,374
社区成员
发帖
与我相关
我的任务
分享
第二点,你用read_flag这种方法并不好使,一般使用循环缓冲区
unsigned char rp = 0;
unsigned char sp = 0;
unsigned char buf[ 0x10 ];
//向串口发送一个字符串,strlen为该字符串长度
void send_string_com( unsigned char *str, unsigned int strlen)
{
unsigned int k= 0 ;
do
{
send_char_com(*(str + k));
k++;
}
while (k < strlen);
}
//串口接收中断函数
void serial () interrupt 4 using 3
{
EA = 0;
if (RI)
{
RI = 0 ;
buf[ rp++ ] = SBUF;
rp &= 0x0f;
}
EA = 1;
}
main()
{
init_serialcom(); //初始化串口
while ( 1 )
{
if( rp ^ sp )
{
send_char_com( buf[ sp++ ] );
sp &= 0x0f;
}
}
}