当我用杜邦线连接P3.2与GND时为什么灯亮了数码管任在显示呢?(数码管数字显示变慢!)
时间:10-02
整理:3721RD
点击:
//第一个数码管显示1,第二个显示2,以此类推(数码管的动态显示1到6)(中断服务程序 点亮最低位的led)
#include<reg52.h>
#define usc unsigned char
#define usi unsigned int
sbit duan=P2^6;
sbit wei=P2^7;
sbit d1=P1^0;
usc code table[]= //代码表
{
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71
};
void delay(usi z)
{
usi x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
EA=1; //开总中断
EX0=1; //开外部中断0
while(1)
{
d1=1;
duan=1;
P0=table[1];
duan=0;
P0=0xff; //消隐
wei=1;
P0=0xfe;
wei=0;
delay(500);
duan=1;
P0=table[2];
duan=0;
P0=0xff;
wei=1;
P0=0xfd;
wei=0;
delay(500);
duan=1;
P0=table[3];
duan=0;
P0=0xff;
wei=1;
P0=0xfb;
wei=0;
delay(500);
duan=1;
P0=table[4];
duan=0;
P0=0xff;
wei=1;
P0=0xf7;
wei=0;
delay(500);
duan=1;
P0=table[5];
duan=0;
P0=0xff;
wei=1;
P0=0xef;
wei=0;
delay(500);
duan=1;
P0=table[6];
duan=0;
P0=0xff;
wei=1;
P0=0xdf;
wei=0;
delay(500);
}
}
void exter0() interrupt 0 //中断服务程序
{
d1=0;
}
#include<reg52.h>
#define usc unsigned char
#define usi unsigned int
sbit duan=P2^6;
sbit wei=P2^7;
sbit d1=P1^0;
usc code table[]= //代码表
{
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71
};
void delay(usi z)
{
usi x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
EA=1; //开总中断
EX0=1; //开外部中断0
while(1)
{
d1=1;
duan=1;
P0=table[1];
duan=0;
P0=0xff; //消隐
wei=1;
P0=0xfe;
wei=0;
delay(500);
duan=1;
P0=table[2];
duan=0;
P0=0xff;
wei=1;
P0=0xfd;
wei=0;
delay(500);
duan=1;
P0=table[3];
duan=0;
P0=0xff;
wei=1;
P0=0xfb;
wei=0;
delay(500);
duan=1;
P0=table[4];
duan=0;
P0=0xff;
wei=1;
P0=0xf7;
wei=0;
delay(500);
duan=1;
P0=table[5];
duan=0;
P0=0xff;
wei=1;
P0=0xef;
wei=0;
delay(500);
duan=1;
P0=table[6];
duan=0;
P0=0xff;
wei=1;
P0=0xdf;
wei=0;
delay(500);
}
}
void exter0() interrupt 0 //中断服务程序
{
d1=0;
}
