单片机串口通信时,出现了个问题,有点想不通!

2019-03-24 19:20发布

当单片机烧录成功后,要是复位或者冷启动,我写的程序就会运行一次,PC机就会“I get ”(程序的运行结果是从PC机发送字符或者字符串,单片机会给PC一个反馈‘I get xx’)。自己以为问题出现在了初始化,但至今未想明白,求高手解答!#include<reg52.h>
#define  uchar unsigned char ;
char code table[]={' ','i',' ','g','e','t',' '};
char jie , getchar,num;
void delay(int n);
void init()
{
    TMOD = 0x20 ;   //定时计数器1工作方式2
        EA  = 1 ;                //中断允许
        ES = 1 ;                //开启串行中断
        TH1 = 0xfd;            //定时计数器的初始值
        TL1 = 0xfd ;
        TR1 = 1 ;                //开启定时计数器1
        REN = 1 ;                //接收允许
        SM0 = 0;
        SM1 = 1 ;                //串口工作方式1
}

void main()
{
    init();
    delay(256);
    while(1)
        {
     if( jie == 1 )
           {
               ES  = 0 ;         //关闭串行中断
                   for( num=0; num<=6; num++ )
                      {
                               SBUF = table[num];
                                    while(!TI);
                                        TI = 0 ;
                          }
                    SBUF = getchar;                //将得到的字符发送
                        while( !TI ) ;            
                        TI = 0 ;
                        ES = 1 ;
                        jie  = 0 ;                          
           }
         }
}
void delay(int n)
{  int i ,j ;
    for(i = n ; i>=0 ; i--)
          for(j=256;j>=0 ;j--);

}

void  RR( ) interrupt 4
{
         RI = 0 ;
            getchar = SBUF;
         jie = 1 ;

} 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。