#include<reg52.h>
#include<stdio.h>
unsigned char se_data[8] = {"LOVE"};
unsigned int k = 0 ;
void init_serial_port()//初始化串口,用T1做波特率发生器
{
TMOD = 0x20;//计数器1工作方式2,自动填充
PCON = 0X80;//0x80波特率加倍(加倍可以缩小误差)
PS = 1;
TH1 = 256-6;
TL1 = 256-6;
TR1 = 1;////启动T1,这里溢出信号不仅给中断,也给串口
REN = 1;
SCON = 0x50;//串行方式1,允许串行接收
EA=1;
ES = 1;//允许串行通信中断
}
void USART_Sendchar(unsigned char ch) //发送一个字符
{
SBUF = ch;
while(!TI);
TI = 0;
}
void send_string_com( unsigned char *str, unsigned int strlen)
{
//EA = 0;
ES = 0;
do
{
USART_Sendchar(*(str + k));
k++;
}
while (k < strlen);
//EA=1;
ES = 1;
}
extern void delayms(unsigned int ms) //延时程序
{
unsigned char i;
while(ms--)
{
for (i=0;i<125;i++);
}
}
void main()
{
init_serial_port();
delayms(10);
send_string_com(se_data,0x08);
while(1)
{
}
}
在串口调试工具收到的是OVE,无论发什么字符串都丢失第一个字符,求教各位,这是怎么回事 |