微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 外部中断结束几秒后才回到主函数,是哪里出问题了?

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

时间:10-02 整理:3721RD 点击:
这是程序
#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,中断程序里的东西运行完也不用这么长时间吧?为什么会这样

没时间细看,mark一下

中断中不要加软件延时

中断最后是清屏函数,我进去中断后从它清屏(中断程序最后一个语句)到再现实tt要几秒钟的时间,为什么会这么久?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top