#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define PIN0 P0 //êyÂë1ü¶ÎÑ¡¶Ë
#define PIN1 P1 //êyÂë1üλѡ¶Ë
sbit start=P2^7; //Æô¶ˉ/ÔYí£°′Å¥
sbit reset=P2^6; //¸′λ°′Å¥
uint cnt=0; //1sμÄ′ÎêyμļÆêyÖμ
uint num=0; //½øèëÖD¶Ï′ÎêyμļÆêyÖ죨ò»′Î50ms£©
uchar code table[]={0x3f,0x06,0x5b,
0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f};
//2»′øD¡êyμãμÄ12òõ¼«êyÂë1ü¶ÎÂë0-9
void Display(uint a,uint b,uint c,uint d); //éùÃ÷ÏÔê¾oˉêy
void InitTimer0(); //éùÃ÷¶¨ê±Æ÷3õê¼»ˉoˉêy
void Delayms(uint x); //éùÃ÷Ñóê±oˉêy
void main()
{
uint g,s,b,q=0;
//òà′ÎêǸöê®°ùǧ
InitTimer0(); //3õê¼»ˉ¶¨ê±Æ÷
while(1) //½øèëËàÑ-»·
{
if(start==0) //¼ì2aÆô¶ˉ/ÔYí£¼üêÇ·ñ°′ÏÂ
Delayms(20); //Ñóê±Ïû¶¶
{
if(start==0) //Ïû¶¶Ö®oóÔù′μì2a
{
TR0=!TR0; //¶¨ê±Æ÷μÄ¿ØÖÆÎ»è¡·′
while(!start); //μè′y°′¼üêí·Å
}
}
if(reset==0) //¼ì2a¸′λ¼üêÇ·ñ°′ÏÂ
{
Delayms(20); //Ñóê±Ïû¶¶
if(reset==0) //Ïû¶¶Ö®oóÔù′μì2a
{
num=0;
cnt=0; //ÃëμļÆêyÖμÇå0
while(!reset); //μè′y°′¼üêí·Å
}
}
if(num>=20) //ÅD¶Ï¼Æê±ê±¼äêÇ·ñ′ïμ½1s£¨20¸ö50ms£©
{
num=0; //½øèëÖD¶Ï′ÎêyÖμÖÃ0
cnt++; //ÃëμļÆêyÖμ¼ó1
if(cnt>=9999) //ÅD¶ÏêÇ·ñ′ïμ½9999s
{
TR0=!TR0; //′ïμ½9999sÔò1رն¨ê±Æ÷2¢ÇåáãËùóDμļÆêyÖμ
num=0;
cnt=0;
}
}
g=cnt%10; //′óÃëμļÆêyÖμàïÃæ·ÖàëÃëμĸöλ
s=cnt/10%10; //′óÃëμļÆêyÖμàïÃæ·ÖàëÃëμÄê®Î»
b=cnt/100%10; //′ó·ÖμļÆêyÖμàïÃæ·Öàë·Öμĸöλ
q=cnt/1000%10;
Display(g,s,b,q); //ÏÔê¾Õa4¸öêy
}
}
void InitTimer0() //¶¨ê±Æ÷3õê¼»ˉoˉêy
{
TMOD=0x01; //Ñ¡Ôñ¶¨ê±Æ÷0μÄ1¤×÷·½ê½1
TH0=(65536-45872)/256; //×°3õÖ죨¶¨ê±50ms£©,¾§Õñ11.0592MHz
TL0=(65536-45872)%256;
EA=1; //′ò¿a×üÖD¶Ï
ET0=1; //′ò¿a¶¨ê±Æ÷ÖD¶Ï
TR0=0; //Ïè2»òaÆô¶ˉ¶¨ê±Æ÷
}
void TIMER0() interrupt 1 //¶¨ê±Æ÷ÖD¶Ï·tÎñoˉêy
{
TH0=(65536-45872)/256; //֨װ3õÖμ
TL0=(65536-45872)%256;
num++; //èýøèëÖD¶Ï′ÎêyÖμ¼ó1£¬óÃóúÅD¶ÏêÇ·ñ′ïμ½1s
}
void Delayms(uint x) //Ñóê±xms
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void Display(uint a,uint b,uint c,uint d) //¶¨òåÏÔê¾oˉêy
{
PIN0=table[a]; //ÃëμĸöλμĶÎÑ¡
PIN1=0x0e; //ÃëμĸöλμÄλѡ
Delayms(5);
PIN0=table[b]; //ÃëμÄê®Î»μĶÎÑ¡
PIN1=0x0d; //ÃëμÄê®Î»μÄλѡ
Delayms(5);
PIN0=table[c]; //·ÖμĸöλμĶÎÑ¡
PIN1=0x0b; //·ÖμİùλμÄλѡ
Delayms(5);
PIN0=table[d]; //·ÖμÄê®Î»μĶÎÑ¡
PIN1=0x07; //·ÖμÄǧλμÄλѡ
Delayms(5);
}
|