关于外部中断延时的问题

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--);       
} 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
孤獨の快樂
1楼-- · 2019-03-25 06:00
只能说delay(10);太久了,改成delay(2);试试

小小白
2楼-- · 2019-03-25 11:01
问一个问题对于判断
for(j=0;j<200;j++) ;

for(y=114;y>0;y--);
这两个判读方式有区别吗?除了时间不同之外?
孤獨の快樂
3楼-- · 2019-03-25 12:36
 精彩回答 2  元偷偷看……
辛昕
4楼-- · 2019-03-25 16:14
你小子不长记性,这事我说过的。
小小白
5楼-- · 2019-03-25 17:41
我就记得谁说过的。。。。原来是你啊。。。。

一周热门 更多>