标题:
单片机多用秒表
[打印本页]
作者:
丶丶丶!
时间:
2018-7-10 17:02
标题:
单片机多用秒表
假.png
(94.19 KB, 下载次数: 14)
下载附件
2018-7-10 17:02 上传
#include"reg52.h"
#define start 0xfe
#define pause 0xfd
#define clr 0xfb
#define stop 0xf7
#define save 0xef
#define look 0xdf
unsigned int times_10ms;
idata unsigned int s[12];
unsigned char s_ptr;
unsigned char d[4];
void delay_1ms(void)
{unsigned int i;
for(i=0;i<123;i++){;}
}
void display(unsigned int t)
{ unsigned char i;
unsigned char code BCD_7[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
for(;t>0;t--)
{
for(i=0;i<4;i++)
{
P0=BCD_7[d[i]];
if(i==2)P0&=0x7f;
P2&=~(0x10<<i);
delay_1ms();
P2|=0xf0;
}
}
}
unsigned char Read_key(void)
{unsigned char k;
P1=0xff;
k=P1;
if(k==0xff)return 0xff;
else
{display(3);
k=P1;
if(k==0xff)return 0xff;
else return k;
}
}
intmain(void)
{unsigned char i,k;
unsigned int tem;
unsigned char run_sign;
TH2=RCAP2H=(65536-10000)/256;
TL2=RCAP2L=(65536-10000)%256;
EA=1;ET2=1;
times_10ms=0;
s_ptr=0;
for(i=0;i<12;i++)s[i]=0;
for(i=0;i<4;i++)d[i]=0;
while(1)
{k=Read_key();
if(k!=0xff)
{switch(k)
{ case start:
run_sign=1;
TR2=1;
break;
case pause:
TR2=0;
break;
case stop:
TR2=0;
s_ptr=0;
run_sign=0;
break;
case clr:
TR2=0;
times_10ms=0;
TR2=(65536-10000)/256;
TL2=(65536-10000)%256;
s_ptr=0;
for(i=0;i<12;i++)s[i]=0;
for(i=0;i<4;i++)d[i]=0;
break;
case save:
s[s_ptr++]=times_10ms;
while(k!=0xff);
{k=Read_key();
display(1);
}
break;
case look:
tem=s[s_ptr++];
d[3]=tem/1000;d[2]=tem/100%10;
d[1]=tem/10%10;d[0]=tem%10;
while(k!=0xff)
{k=Read_key();
display(1);
}
break;
default:
break;
}
}
if(run_sign)
{
tem=times_10ms;
d[3]=tem/1000;d[2]=tem/100%10;
d[1]=tem/10%10;d[0]=tem%10;
}
display(1);
}
}
voidT2_overFlow(void) interrupt 5 using 3
{if(TF2)
{TF2=0;
times_10ms++;
}
EXF2=0;
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1