?? 電子秒表.c
字號:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
uchar code table[]={0x05,0xF5,0x13,0x51,0xE1,0x49,0x09,0xD5,0x01,0x41};
void init();
void delay1ms();
void display(uchar,uchar,uchar,uchar);
void scankey();
uchar num1,num2,n1,n2,n3,n4,mark;
uint k=0;
uint a[10],b[10];
void main()
{
init();
while(1)
{
display(n1,n2,n3,n4);
scankey();
}
}
void init()
{
TMOD=0x10;
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
EA=1;
ET1=1;
}
void delay1ms()
{
uint i,j;
for(i=1;i>0;i--)
for(j=110;j>0;j--);
}
void display(uchar n1,uchar n2,uchar n3,uchar n4)
{
n1=num1%10;
n2=num1/10;
n3=num2%10;
n4=num2/10;
P2=table[n1];P3=0x80;delay1ms();P2=0xff;
P2=table[n2];P3=0x40;delay1ms();P2=0xff;
P2=table[n3];P3=0x20;delay1ms();P2=0xff;
P2=table[n4];P3=0x10;delay1ms();P2=0xff;
}
void scankey()
{
if(key1==0)
{
while(!key1)
{display(n1,n2,n3,n4);}
mark++;
if(mark==1)
{
TR1=1;
}
if(mark==2)
{
TR1=0;
k=0;
}
if(mark==3)
{
mark=0;
num1=0;
num2=0;
k=0;
}
}
if(key2==0)
{
while(!key2)
{display(n1,n2,n3,n4);}
k++;
a[k]=num1;
b[k]=num2;
}
if(key3==0)
{
while(!key3)
{display(n1,n2,n3,n4);}
k++;
num1=a[k];
num2=b[k];
if(k==10)
k=0;
}
}
void T1_time() interrupt 3
{
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
num1++;
if(num1==100)
{
num1=0;
num2++;
if(num2==60)
num2=0;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -