关于外部中断延时的问题

2019-03-24 19:27发布

我用的是AT89S52单片机   通过按键实现外部中断的次数计数  并显示在数码管中  用这个delay函数后,数码管显示延时非常严重,不知是什么原因   把这个delay函数改成  void delay(void)  ,程序是正常的!!!~
void delay(void)      
{
    unsigned char j;
          for(j=0;j<200;j++) ;
  }
不正常的程序:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint);
uchar code Num[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
uint i,m;
uchar m1,m2,m3;
void main()
{
         m=0;
         m1=0;
         m2=0;
         m3=0;
         EA=1;
         EX0=1;
         IT0=1;
         while(1)
         {
                   P2=0x7f;    //选择数码管1   
                   P0=Num[m1];   
                  delay(10);
                      P2=0xbf;       //选择数码管2
                      P0=Num[m2];
                     delay(10);
        }
}
void int0(void) interrupt 0 using 0
{
         IE0=0;
         m++;
         m2=m/10;
         m1=m%10;       
}
void delay(uint z)                  //1ms
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=114;y>0;y--);       
} 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。