/Abc-xxxxxxxxxxx数码管循环显示/
#include<reg52.h>
#include<intrins.h>
typedef unsigned int u16;
typedef unsigned char u8;
#define A P0
sbit we = P2^7; //位选信号锁存器控制
sbit du = P2^6; //段选信号锁存器控制
u8 code SMGdu[]={0x7f,0x77,0x39,0x5b,0x06,0x6d,0x06,0x5b,0x6f,
0x3f,0x06,0x7c,0x06,0x7f,0x6d};
u8 code SMGwe[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
u8 n,i,k;
void delay(u16 i)
{
while(i–);
}
void time0Init()
{
EA=1;
ET1=1;
TR1 = 1;
TMOD = 0x10;
TH1 = 0xed;
TL1 = 0xff;
}
void display()
{
for(i=0;i<8;i++)
{
A=SMGwe[i];
we=1;
we=0;
A=SMGdu[(i+k)%15];
du=1;
du=0;
delay(250);
}
}
void main()
{
time0Init();
while(1);
}
void time0() interrupt 3
{
n++;
TH1 = 0xed; //5ms
TL1 = 0xff;
if(n==20)
{
n=0;
k++;
}
display();
}