我用的是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--);
}
此帖出自
小平头技术问答
for(j=0;j<200;j++) ;
和
for(y=114;y>0;y--);
这两个判读方式有区别吗?除了时间不同之外?
一周热门 更多>