外部中断结束几秒后才回到主函数,是哪里出问题了?

2019-07-15 17:02发布

这是程序

#include<reg52.h>
#include"lcd.h"

unsigned char red[] = "r";
unsigned char green[] = "g";


//全局函数//
void UsartConfiguration();
void Delay10ms(unsigned int c);   //误差0 us


/*********************************************
*主函数
**********************************************/

void main()
{
       
        unsigned char i ;
        LCD1602_inital(); //液晶初始化
        UsartConfiguration();
       
        while(1)
        {
                        printdata(1,0,"tt");  //液晶显示tt
                       
                        for(i=0; i<1; i++)
                        {
                                SBUF = green[i];   //
                                while(!TI);                  //
                                TI=0;                          //
                               
                }
                        Delay10ms(10);                  //
        }
}
/************************************************
* 初始化串口
************************************************/

void UsartConfiguration()
{
        SCON=0X50;                        //
        TMOD=0X20;                        //
        PCON=0X80;                        //
        TH1=0XFd;                    //
        TL1=0XFd;
        EX0=1;                                        //
        EA=1;                                                //
        IT0=1;           //
        TR1=1;                                          //
}

/*************************************************
*INT0中断函数
*************************************************/
void ext () interrupt 0 using 0
{
        unsigned char k;

         for(k=0; k<1; k++)
          {
                   SBUF = red[k];
                  while(!TI);
                  TI=0;
          }
                Delay10ms(10);
                LcdFullClear();//液晶清屏

}
/****************************************************
*延时子程序
****************************************************/

void Delay10ms(unsigned int c)   //
{
    unsigned char a, b;

    for (;c>0;c--)
        {
                for (b=38;b>0;b--)
                {
                        for (a=130;a>0;a--);
                }         
        }      
}

触发中断后要等几秒才再显示tt,中断程序里的东西运行完也不用这么长时间吧?为什么会这样

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。