一个单片机串口通讯的问题,为什么老是掉数据
#include <reg51.h>
#include <stdio.h>
void init_serialcomm( void )
{
SCON = 0x50 ; //方式一,八位可变,SM2在接收到有效停止位时才激活RI
TCON = 0x40; //置一,启动计数
TMOD |= 0x20 ; //定时器一,十六位
PCON |= 0x80 ; //功率加大一倍;
TH1 = 0xff ; //波特率:19200 fosc=11.0592MHz
TL1 = 0xfc;
IE |= 0x90 ; //允许串行中断
TI=1; //发送中断标志
}
void main(void)
{
unsigned char i;
unsigned char k= 0 ;
unsigned char dw[21]={0x24,0x00,0x00,0x00,0x00,0x00,0x13,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0x00,0x02,0x00,0x3c,0x00,0x0d,0x0a};
for(i=0;i<18;i++)
{
dw[18]^=dw[i];
}
init_serialcomm();
for(k=0;k<21;k++)
{
putchar(dw[k]);
}
}
出现的是0x0D 0x0D,而不是我想要的0x0D 0x0A
#include <reg51.h>
#include <stdio.h>
void init_serialcomm( void )
{
SCON = 0x50 ; //方式一,八位可变,SM2在接收到有效停止位时才激活RI
TCON = 0x40; //置一,启动计数
TMOD |= 0x20 ; //定时器一,十六位
PCON |= 0x80 ; //功率加大一倍;
TH1 = 0xff ; //波特率:19200 fosc=11.0592MHz
TL1 = 0xfc;
IE |= 0x90 ; //允许串行中断
//TR1 = 1 ; // timer 1 run
TI=1; //发送中断标志
}
void send_char_com( unsigned char ch)
{
SBUF=ch;
while (TI== 0 );
TI= 0 ;
}
//向串口发送一个字符串,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 main(void)
{
unsigned char i;
unsigned char k= 0 ;
unsigned char dw[21]={0x24,0x00,0x00,0x00,0x00,0x00,0x13,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0x00,0x02,0x00,0x3c,0x00,0x0d,0x0a};
for(i=0;i<18;i++)
{
dw[18]^=dw[i];
}
init_serialcomm();
send_string_com(dw,21);
}
用这段代码出不来0x24,不知道为什么
望高手指点一二