采用测频法测外部信号的频率,T1,定时一秒,方式2;T0,计数,方式1,低频段的时候显示正常,高频段数码管就闪,为什么呢 #include #define uchar unsigned char #define uint unsigned int uchar code t[]={0x3f,0x06,0x5b,0x4f,0x66,0x6... 采用测频法测外部信号的频率,T1,定时一秒,方式2;T0,计数,方式1,低频段的时候显示正常,高频段数码管就闪,为什么呢
#include
#define uchar unsigned char
#define uint unsigned int
uchar code t[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar xianshi[6];
uint n,num;
uchar m,w,q,b,s,g;
void delay(uint z)
{
uint i,j;
for(i=0;i
for(j=0;j<25;j++);
}
void init()
{
TMOD=0x25; // 0010 0101 =>T1,定时,方式2;T0,计数,方式1
TH0=0;
TL0=0;
TH1=6;
TL1=6;
TR1=1;
TR0=1;
ET0=1;
ET1=1;
EA=1;
}
void display() //显示
{
P2=0xfe;
P0=xianshi[0];
delay(1);
P0=0;
P2=0xfd;
P0=xianshi[1];
delay(1);
P0=0;
P2=0xfb;
P0=xianshi[2];
delay(1);
P0=0;
P2=0xf7;
P0=xianshi[3];
delay(1);
P0=0;
P2=0xef;
P0=xianshi[4];
delay(1);
P0=0;
P2=0xdf;
P0=xianshi[5];
delay(1);
P0=0;
}
void main()
{
init();
while(1)
{
display();
}
}
void t1(void) interrupt 3
{
n++;
if(n==4000) //一秒时间到
{ n=0; //清零
EA=0; //关中断
num=(long)TH0*256+TL0; //取计数值
TL0=0; //计数清零
TH0=0; //计数清零
m=num/100000;
xianshi[0]=m;
w=num/10000%10;
xianshi[1]=w;
q=num/1000%10;
xianshi[2]=q;
b=num/10;
xianshi[3]=b;
s=num/10%10;
xianshi[4]=s;
g=num%10;
xianshi[5]=g;
EA=1; //重开
}
}