📄 秒表.c
字号:
#include<reg51.h>
#include<absacc.h>
#define a8255 XBYTE[0x1b00]
#define b8255 XBYTE[0x1b01]
#define c8255 XBYTE[0x1b02]
#define com8255 XBYTE[0x1b03]
char min,sec,dsec,a,b,c;
char n[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
char count;
bit flag;
bit flag1;
sbit p10=P1^0;
sbit p11=P1^1;
void delay(void)
{char k;
for(k=0;k<99;k++);
}
void display(int m,int s,int ds)
{char m1,m2,s1,s2,i;
m1=m2=s1=s2=0;
if(m>0){m2=m%10;m/=10;}
if(m>0) m1=m%10;
if(s>0){s2=s%10;s/=10;}
if(s>0) s1=s%10;
b8255=0xff;
for(i=0;i<7;i++)
{switch(i)
{case 0:b8255=0xfe;a8255=n[m1];delay();
case 1:b8255=0xfd;a8255=n[m2];delay();
case 2:b8255=0xfb;a8255=n[10];delay();
case 3:b8255=0xf7;a8255=n[s1];delay();
case 4:b8255=0xef;a8255=n[s2];delay();
case 5:b8255=0xdf;a8255=n[10];delay();
case 6:b8255=0xbf;a8255=n[ds];delay();
}
}
}
void initial(void)
{com8255=0x80;
TMOD=0x01;
IT0=1;
EA=1;
ET0=1;
EX0=1;
min=0;
sec=0;
dsec=0;
a=0;
b=0;
c=0;
flag=0;
flag1=0;
}
void main(void)
{initial();
while(1)
{if(!flag1)
display(min,sec,dsec);
else
display(a,b,c);
}
}
void st(void)
{flag=!flag;
if(flag)
{TH0=-50000/256;
TL0=-50000%256;
TR0=1;
}
if(!flag)
{if(flag1==1)
{min=0;
sec=0;
dsec=0;
count=0;
flag1=0;
TR0=0;
}
else TR0=0;
flag=0;
}
}
void lock(void)
{ if(flag==1)
{ a=min;
b=sec;
c=dsec;
flag1=!flag1;
}
}
void T0_serv(void) interrupt 1 using 1
{ TH0=-50000/256;
TL0=-50000%256;
TR0=1;
count++;
dsec=count;
if(count>9)
{ sec++;
count=0;
dsec=0;
}
if(sec>59)
{ min++;
sec=0;
}
}
void INT0_serv(void)interrupt 0 using 1
{ if(p10==0&&p11==1)
st();
if(p10==1&&p11==0)
lock();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -