|
#include <reg51.h>
#define uint unsigned int //對(duì)數(shù)據(jù)類型進(jìn)行聲明定義
#define uchar unsigned char
sbit LSA=P2^2; //定義數(shù)碼管端口
sbit LSB=P2^3; //
sbit LSC=P2^4;
sbit HW=P1^4;
sbit Beep=P2^5;
sbit K1=P3^0;
uchar smgduan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //0~9,,0x40顯示第三,第六的一橫。
uchar code smgduan2[]={ 0,0x00,0x04,0x08,0x0c,0x10,0x14,0x18,0x1c}; // code表示寄存于flash中 數(shù)碼管位置
uchar miao1,miao2,fen1,fen2,shi1,shi2;
uint a,b,c,n,m=0; //
void Delay(unsigned int n)
{
unsigned int i=0,j=0; //
for(i; i<n; i++)
for(j=0;j<123;j++); //在該芯片上for(j=0;j<123;j++);的執(zhí)行時(shí)間剛好是1ms,這樣的話這個(gè)函數(shù)就會(huì)延時(shí)int毫秒。
}
void delay() //
{
uint i,j;
for(i=0;i<1;i++)
for(j=0;j<100;j++); //
}
void time() // //中斷初始化,
{
TMOD=0X01; //使用定時(shí)器T0的方式1
TL0=(65536-10001)/256; //
TH0=(65536-10001)%256; //
EA=1; //CPU所有中斷(IE最高位MSB)
TR0=1; //開定時(shí)器T0
ET0=1; //開定時(shí)器T0中斷
}
void time0() interrupt 1 //我刪了time0(void)
{
TL0=(65536-10004)/256; // -越大,越慢 //10004
TH0=(65536-10004)%256; //
if(HW==0)
{ Beep=1; //我加入
Delay(100); //100
if(HW==1) //還沒(méi)按K1的電位
{
m=1;
}
}
if(m==1) //第一次按下k1
{
n++;
}
if(n==2)
{ a++;
n=0; // n=0;
}
if(a==100) //分秒
{b++;
a=0;
}
if(b==60) //秒
{c++;
b=0;
}
if(c==60) //時(shí)
{
c=0;
}
if(m==1)
{
if(HW==0)
{
Delay(200); //300
if(HW==1)
{
m=0;
EA=0; // //去掉EA=0; 可實(shí)現(xiàn)暫停
}
}
}
}
void dis()
{
miao1=a/10; //定義數(shù)據(jù)類型
miao2 =a%10;
fen1=b/10;
fen2=b%10;
shi1=c/10;
shi2=c%10;
P0=smgduan[miao2];
P2=smgduan2[1];//第1個(gè)數(shù)碼管
delay();
P0=0;
P0=smgduan[miao1];
P2=smgduan2[2];//第2個(gè)數(shù)碼管
delay();
P0=0;
P0=smgduan[fen2];
P2=smgduan2[4]; //第4個(gè)數(shù)碼管
delay();
P0=0;
P0=smgduan[fen1];
P2=smgduan2[5]; //第5個(gè)數(shù)碼管
delay();
P0=0;
P0=smgduan[shi2];
P2=smgduan2[7]; //第7個(gè)數(shù)碼管
delay();
P0=0;
P0=smgduan[shi1];
P2=smgduan2[8]; //第8個(gè)數(shù)碼管
delay();
P0=0;
P0=smgduan[10];
P2=smgduan2[3];//第3個(gè)數(shù)碼管
delay();
P0=0;
P0=smgduan[10];
P2=smgduan2[6];//第6個(gè)數(shù)碼管
delay();
P0=0;
}
void main()
{
time();
while(1)
{
dis();
if(HW==0){ a=0;b=0;c=0;time(); } // 自動(dòng)清零
}
}
|
評(píng)分
-
查看全部評(píng)分
|