串口通信的问题

2019-07-16 02:59发布

我的程序目的是51单片机的按键1按下时单片机就往外发送56 0036 01 00这几个十六进制数,按键不按就不发送。问题在于按键按下,在串口助手接收区接的是00 56 00 36 01 00,不知道这是为什么? 串口助手的HEX显示打钩了。哪位高手帮忙看看程序哪里的问题.谢谢
#include<reg51.h>
#include<string.h>
#include<intrins.h>
unsigned char ch;
bit flag=0;
sbit K1=P3^1;
sbit K2=P3^2;
sbit LED=P1^0;
unsigned char start_photo_cmd[]={0x56,0x00,0x36,0x01,0x00};
void delay(unsigned char xms)
{
  unsigned int i,j;
  for(i=xms;i>0;i--)
    for(j=110;j>0;j--);
}
void init()
{
SCON=0x50;
TMOD=0x20;
PCON=0x80;//
TH1=0xfd; //晶振11.0592MHZ,SMOD=1,波特率19200bps     如果晶振为22.1184NHZ时,波特率为38400
IE|=0x90;
TR1=1;
//
}
void uart_sendbuf(unsigned char  *buf,unsigned char n)
{
  unsigned char i;
  ES=0;
  for(i=0;i<n;i++)
  {
   SBUF=buf[i];
   while(ti==0);
   TI=0;
  }
  ES=1;
}
void ser() interrupt 4 using 3
{
   RI=0;
  ch=SBUF;
  flag=1;
}
main()
{
init();
while(1)
{
   if(K1==0)
  {
    delay(10);
if(K1==0)
{
  while(K1==0);
   uart_sendbuf(start_photo_cmd,5);
}
  }
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。