ÕâÊÇÎÒдµÄ³ÌÐò Çó´óÉñ°ïÖú£¡
#include "reg52.h" //¡äËÎļtÖD¶¡§¨°å¨¢Ë¦Ì£¤Æ¬»¨²¦ÌĨ°»D©¨¬Ø¨ºa1|Ĩ¹¼Ä¡äæÆ¡Â
#include<intrins.h> //¨°¨°Îa¨°a¨®Ã¦Ì½¡Á¨®¨®¨°¨°Æo¡¥¨ºy¡ê¬Ë¨´¨°Ô¼¨®¨¨ëÕa¸ö¨ª¡¤Îļt
typedef unsigned int u16; //¶Ô¨ºy¾Y¨¤¨¤D¨ª½øDD¨¦¨´Ã¡Â¶¡§¨°å
typedef unsigned char u8;
#define led P2 //½«P2¿¨²¶¡§¨°åÎaled o¨®Ã澨ª¿¨¦¨°Ô¨º1¨®Ãled¡ä¨²¨¬æP2¿¨²
sbit k1=P3^1; //¶¡§¨°åP31¿¨²¨ºÇk1
sbit k3=P3^2; //¶¡§¨°åP32¿¨²¨ºÇk2
sbit k4=P3^3; //¶¡§¨°åP33¿¨²¨ºÇk3
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//ÏÔ¨º¾0~F¦ÌÄÖ¦Ì
u8 ssec,sec,min;
u8 DisplayData[8];
/*******************************************************************************
* o¡¥ ¨ºy Ãû : delay
* o¡¥¨ºy1|Ĩ¹ : Ѩ®¨º¡Ào¡¥¨ºy¡ê¬i=1¨º¡À¡ê¬¡ä¨®Ô¼Ñ¨®¨º¡À10us
*******************************************************************************/
void delay(u16 i)
{
while(i--);
}
/*******************************************************************************
* o¡¥ ¨ºy Ãû : Timer0Init
* o¡¥¨ºy1|Ĩ¹ : ¶¡§¨º¡ÀÆ¡Â03õ¨º¼»¡¥
* ¨ºä ¨¨ë : ÎT
* ¨ºä 3ö : ÎT
*******************************************************************************/
/*void Timer0Init()
{
TMOD|=0X01;//Ñ¡ÔñÎa¶¡§¨º¡ÀÆ¡Â0ġ꨺½¡ê¬1¡è¡Á¡Â¡¤½¨º½1¡ê¬½ö¨®ÃTR0¡ä¨°¿aÆô¶¡¥¡¡ê
TH0=0Xd8; //¸ø¶¡§¨º¡Àơ¸33õ̡֦ꬶ¡§¨º¡À10ms
TL0=0Xf0;
ET0=1;//¡ä¨°¿a¶¡§¨º¡ÀÆ¡Â0ÖD¶ÏÔ¨ºD¨ª
EA=1;//¡ä¨°¿a¡Á¨¹ÖD¶Ï
}
/*******************************************************************************
* o¡¥ ¨ºy Ãû : Timer0Initzanting
* o¡¥¨ºy1|Ĩ¹ : ¶¡§¨º¡ÀÆ¡Â03õ¨º¼»¡¥¡ê¬¨º¦ÌÏÖÔY¨ª¡ê
* ¨ºä ¨¨ë : ÎT
* ¨ºä 3ö : ÎT
*******************************************************************************/
/*void Timer0Initzanting()
{
TMOD|=0X01;//Ñ¡ÔñÎa¶¡§¨º¡ÀÆ¡Â0ġ꨺½¡ê¬1¡è¡Á¡Â¡¤½¨º½1¡ê¬½ö¨®ÃTR0¡ä¨°¿aÆô¶¡¥¡¡ê
TH0=0Xd8; //¸ø¶¡§¨º¡Àơ¸33õ̡֦ꬶ¡§¨º¡À10ms
TL0=0Xf0;
ET0=1;//¡ä¨°¿a¶¡§¨º¡ÀÆ¡Â0ÖD¶ÏÔ¨ºD¨ª
EA=1;//¡ä¨°¿a¡Á¨¹ÖD¶Ï
TR0=0;//1Ø¡ÀÕ¶¡§¨º¡ÀÆ¡Â
}
/*******************************************************************************
* o¡¥ ¨ºy Ãû : ledmove
* o¡¥¨ºy1|Ĩ¹ : led¡ä¨®¡Á¨®¦Ì½¨®¨°Ñ-»¡¤¦Ì㨢¨¢
*******************************************************************************/
/*void ledmove()
{
u8 i;
led=0x7f;
delay(50000); //¡ä¨®Ô¼Ñ¨®¨º¡À450ms
while(1)
{
for(i=0;i<7;i++) //½«led¨®¨°¨°Æ¨°»Î»
{
led=_cror_(led,1);
delay(50000); //¡ä¨®Ô¼Ñ¨®¨º¡À450ms
}
}
}
/*******************************************************************************
* o¡¥ ¨ºy Ãû : DigDisplay
* o¡¥¨ºy1|Ĩ¹ : ¨ºyÂë1¨¹¶¡¥¨¬¬¨¦¡§Ã¨¨o¡¥¨ºy¡ê¬Ñ-»¡¤¨¦¡§Ã¨¨8¸ö¨ºyÂë1¨¹ÏÔ¨º¾
*******************************************************************************/
void DigDisplay()
{
u8 i;
for(i=0;i<8;i++)
{
switch(i) //λѡ¡ê¬Ñ¡Ôñ¦Ì㨢¨¢¦ÌĨºyÂë1¨¹¡ê¬
{
case(0):
LSA=0;LSB=0;LSC=0; break;//ÏÔ¨º¾¦Ì¨²0λ
case(1):
LSA=1;LSB=0;LSC=0; break;//ÏÔ¨º¾¦Ì¨²1λ
case(2):
LSA=0;LSB=1;LSC=0; break;//ÏÔ¨º¾¦Ì¨²2λ
case(3):
LSA=1;LSB=1;LSC=0; break;//ÏÔ¨º¾¦Ì¨²3λ
case(4):
LSA=0;LSB=0;LSC=1; break;//ÏÔ¨º¾¦Ì¨²4λ
case(5):
LSA=1;LSB=0;LSC=1; break;//ÏÔ¨º¾¦Ì¨²5λ
case(6):
LSA=0;LSB=1;LSC=1; break;//ÏÔ¨º¾¦Ì¨²6λ
case(7):
LSA=1;LSB=1;LSC=1; break;//ÏÔ¨º¾¦Ì¨²7λ
}
P0=DisplayData[i];//¡¤¡é˨ª¶ÎÂë
delay(100); //¼ä¸ô¨°»¶Î¨º¡À¼ä¨¦¡§Ã¨¨
P0=0x00;//Ïû¨°t
}
}
void datapros()
{
DisplayData[0]=smgduan[ssec%10];
DisplayData[1]=smgduan[ssec/10];
DisplayData[2]=0x40;
DisplayData[3]=smgduan[sec%10];
DisplayData[4]=smgduan[sec/10];
DisplayData[5]=0x40;
DisplayData[6]=smgduan[min%10];
DisplayData[7]=smgduan[min/10];
}
/*******************************************************************************
* o¡¥ ¨ºy Ãû : main
* o¡¥¨ºy1|Ĩ¹ : Ö¡Âo¡¥¨ºy
* ¨ºä ¨¨ë : ÎT
* ¨ºä 3ö : ÎT
*******************************************************************************/
void main()
{
if(k1==0) //¼¨¬2a¡ã¡ä¼¨¹K1¨ºÇ¡¤ñ¡ã¡äÏ ¿a¨º¼
{
TMOD|=0X01;//Ñ¡ÔñÎa¶¡§¨º¡ÀÆ¡Â0ġ꨺½¡ê¬1¡è¡Á¡Â¡¤½¨º½1¡ê¬½ö¨®ÃTR0¡ä¨°¿aÆô¶¡¥¡¡ê
TH0=0Xd8; //¸ø¶¡§¨º¡Àơ¸33õ̡֦ꬶ¡§¨º¡À10ms
TL0=0Xf0;
ET0=1;//¡ä¨°¿a¶¡§¨º¡ÀÆ¡Â0ÖD¶ÏÔ¨ºD¨ª
EA=1;//¡ä¨°¿a¡Á¨¹ÖD¶Ï
TR0=1;//¡ä¨°¿a¶¡§¨º¡ÀÆ
while(1)
{
datapros();
DigDisplay();
}
if(k3==0) //¼¨¬2a¡ã¡ä¼¨¹K2¨ºÇ¡¤ñ¡ã¡äÏ ÔY¨ª¡ê
{
TR0=~TR0;
EA=~EA;
}
}
if(k4==0) //¼¨¬2a¡ã¡ä¼¨¹K2¨ºÇ¡¤ñ¡ã¡äÏ ÔY¨ª¡ê
{
P0=0xff;
}
}
/* if(k3==0) //¼¨¬2a¡ã¡ä¼¨¹K2¨ºÇ¡¤ñ¡ã¡äÏ ½¨¢¨ºø
{
delay(1000); //Ïû3y¶¶¶¡¥ ¨°»¡ãã¡ä¨®Ô¼10ms
if(k3==0) //Ô¨´¡äÎÅD¶Ï¡ã¡ä¼¨¹¨ºÇ¡¤ñ¡ã¡äÏÂ
{
while(1)
{
P0=0x00;
}
}
while(!k3); //¼¨¬2a¡ã¡ä¼¨¹¨ºÇ¡¤ñ˨¦¿a
}
}
/*******************************************************************************
* o¡¥ ¨ºy Ãû : void Timer0() interrupt 1
* o¡¥¨ºy1|Ĩ¹ : ¶¡§¨º¡ÀÆ¡Â0ÖD¶Ïo¡¥¨ºy
* ¨ºä ¨¨ë : ÎT
* ¨ºä 3ö : ÎT
*******************************************************************************/
void Timer0() interrupt 1
{
TH0=0Xd8; //¸ø¶¡§¨º¡Àơ¸33õ̡֦ꬶ¡§¨º¡À10ms
TL0=0Xf0;
ssec++;
if(ssec>=100) //1s
{
ssec=0;
sec++;
if(sec>=60)
{
sec=0;
min++;
if(min>=10)
{
min=0;
}
}
}
}
|