void xian(unsigned char *led) { unsigned char i; for(i=0;i<8;i++) { P0=0; cs2=0; cs1=1; P0=0xff; wr=0; _nop_(); _nop_(); wr=1; cs2=1;
cs1=0; P0=led; wr=0; _nop_(); _nop_(); wr=1; cs1=1;
dat=0; cs2=0; cs1=1; P0=tab1; wr=0; _nop_(); _nop_(); wr=1; cs2=1; } } ……//中间省掉一些子函数 void main() { tinit(); s=0; while(1) { led[7]=tab[shi/10]; led[6]=tab[shi%10]; led[5]=tab[16]; led[4]=tab[fen/10]; led[3]=tab[fen%10]; led[2]=tab[16]; led[1]=tab[miao/10]; led[0]=tab[miao%10]; led1[0]=led[0]; led1[1]=led[1]; led1[2]=led[2]; led1[3]=led[3]; led1[4]=led[4]; led1[5]=led[5]; led1[6]=led[6]; led1[7]=led[7]; xian(led); if(s==0) shan(); } }
/*************************************************************************************************************************************************/ /********以下是原程序************************************************************************************************************************/ #include
#include
#define uchar unsigned char
#define uint unsigned int
#define dat P0
***it cs1=P1^0;
***it cs2=P1^1;
***it wr=P1^2;
***it anj=P1^3;
uchar k,wie,shi,fen,miao,num;
uchar led[8],led1[8];
bit s;
void xian(uchar *led);
uchar code tab1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar code tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xbf};
void Tinit()
{
TMOD=0x11;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
EA=1;
ET0=1;
ET1=1;
EX0=1;
IT0=1;
IT1=1;
TR0=1;
}
void delay(uchar a)
{
uchar b;
for(;a>0;a--)
for(b=20;b>0;b--);
}
void shan()
{
if(wie==0)
{
led1[0]=0xff;
led1[1]=0xff;
}
if(wie==1)
{
led1[3]=0xff;
led1[4]=0xff;
}
if(wie==2)
{
led1[6]=0xff;
led1[7]=0xff;
}
k=30;
while(k--)
xian(led1);
k=80;
while(k--)
xian(led);
}
void xian(uchar *led)
{
uchar i;
for(i=0;i<8;i++)
{
dat=0;
cs1=1;
cs2=0;
dat=0xff;
wr=0;
_nop_();
_nop_();
wr=1;
cs2=1;
cs1=0;
dat=led;
wr=0;
_nop_();
_nop_();
wr=1;
cs1=1;
dat=0;
cs2=0;
cs1=1;
dat=tab1;
wr=0;
_nop_();
_nop_();
wr=1;
cs2=1;
delay(20);
dat=0x00;
cs1=1;
cs2=1;
}
}
void main()
{
Tinit();
s=0;
while(1)
{
led[7]=tab[shi/10];
led[6]=tab[shi%10];
led[5]=tab[16];
led[4]=tab[fen/10];
led[3]=tab[fen%10];
led[2]=tab[16];
led[1]=tab[miao/10];
led[0]=tab[miao%10];
led1[0]=led[0];
led1[1]=led[1];
led1[2]=led[2];
led1[3]=led[3];
led1[4]=led[4];
led1[5]=led[5];
led1[6]=led[6];
led1[7]=led[7];
xian(led);
if(s==0)
shan();
}
}
void wu0() interrupt 0
{
TR1=s;
EX1=s;
s=~s;
TR0=s;
}
void time0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num++;
if(num==5)
{
num=0;
miao++;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
shi++;
if(shi==24)
shi=0;
}
}
}
}
void wu1() interrupt 2
{
if(wie==0)
{
miao++;
if(miao==60)
miao=0;
}
if(wie==1)
{
fen++;
if(fen==60)
fen=0;
}
if(wie==2)
{
shi++;
if(shi==24)
shi=0;
}
}
void time1() interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
num++;
if(num==6)
{
num=0;
if(anj==0)
{
wie++;
if(wie==3)
wie=0;
delay(10);
}
}
}
/*************************************************************************************************************************************************/ /*************************************************************************************************************************************************/
问 *led什么意思?
|