當前位置:編程學習大全網 - 源碼下載 - 單片機動態秒表

單片機動態秒表

#include<reg51.h>

#define uchar unsigned char

uchar code ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0-9

unsigned char sec_1=0,sec=0,scanled;

unsigned char key,flashbit,mode=0,time=0;?

unsigned char disdat[4];

sbit keyup=P3^0;

sbit keydn=P3^1;

sbit keycl=P3^2;

sbit fmq=P1^0;

void dischg()

{

disdat[0]=sec_1;

disdat[1]=sec%10;

disdat[2]=sec/10;

}

void t0isr() interrupt 1 //秒計時

{

TH0=0x3c;

TL0=0xb0;

if(mode==0)

{

time++;

if(time==2)

{

time=0;

sec_1++;

if(sec_1>9)

{

sec_1=0;

sec++;

if(sec>99)sec=0;

}

}

}

else

{

time++;

if(time>=2)

{

time=0;

if(sec_1>0)sec_1--;

else if(sec>0){sec_1=9;sec--;}

}

}

dischg();

}

void t1isr() interrupt 3 //顯示

{

TH1=0xec;

TL1=0x78;

switch(scanled)

{

case 0:

P2=0x01;

P0=0xff;

//P0=~ledtab[disdat[3]];

break;

case 1:

P2=0x02;

P0=~ledtab[disdat[2]];

break;

case 2:

P2=0x04;

P0=~(ledtab[disdat[1]])&0x7f;

break;

case 3:

P2=0x08;

P0=~ledtab[disdat[0]];

break;

default:break;

}

scanled++;

scanled%=4;

}

void delay3s(void)

{

ET0=0;

time=60;

TH0=0x3c;

TL0=0xb0;

TR0=1;

while(time)

{

while(TF0==0);

TF0=0;

TH0=0x3c;

TL0=0xb0;

time--;

}

ET0=1;

TR0=0;

}

main()

{

TMOD=0x11;

TH0=0x3c;

TL0=0xb0;

TH1=0xec;

TL1=0x78;

TR1=1;

ET0=1;

ET1=1;

EA=1;

sec=0;

scanled=0;

time=0;

dischg();

fmq=0;

while(1)

{

if(keyup==0){while(keyup==0);mode=0;TR0=1;}

if(keydn==0){while(keydn==0);mode=1;TR0=1;}

if(keycl==0){while(keycl==0);sec=0;sec_1=0;}

if(((sec_1+sec)==0)&&(mode==1)){fmq=1;delay3s();fmq=0;mode=0;}

}

}

  • 上一篇:boll是什麽意思
  • 下一篇:用微信做的那種企業宣傳畫冊怎麽做的
  • copyright 2024編程學習大全網