# include & ltreg52.h & gt
char code duma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x 40 };//0-9數碼管,* * *尹
char code wema[]={0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf 7 };//芯片選擇,1-8數碼管
char j;
char h_num,m_num,s _ num//分別定義小時、分鐘和秒。
char h_shi,h_ge,m_shi,m_ge,s_shi,s _ ge
sbit fm=p3^4;
無效延遲(字符x)
{
char a,b;
for(a = x;a & gt0;答-)
for(b = 100;b & gt0;b-);
}
void inter_init()
{
EA = 1;//打開主機中斷
ET0 = 1;//在本例中,使用了定時器T0。如果使用T1。ET1=0,TMOD=0x10。
TMOD = 0x 01;//定時器工作模式1
TH0 =(65535-50000)/256;//因為晶振用的是11.0592MHZ .取初始值的時候大概定義為50毫秒的中斷。
TL0 =(65535-50000)% 256;
TR0 = 1;
}
空顯示(char h_shi,h_ge,m_shi,m_ge,s_shi,s_ge)
{
P2 =杜馬[h _ Shi];
p 1 = wema[0];
延遲(8);
P2 =杜馬[h _ ge];
p 1 = wema[1];
延遲(8);
P2 =杜馬[10];
p 1 = wema[2];
延遲(8);
P2 =杜馬[m _ Shi];
p 1 = wema[3];
延遲(8);
P2 =杜馬[m _ ge];
p 1 = wema[4];
延遲(8);
P2 =杜馬[10];
p 1 = wema[5];
延遲(8);
P2 =杜馬[s _ Shi];
p 1 = wema[6];
延遲(8);
P2 =杜馬[s _ ge];
p 1 = wema[7];
延遲(8);
}
void main()
{
inter _ init();
s _ num = 55//初始時間設置。它們是秒、分和小時。
m _ num = 59
h _ num = 10;
while(1)
{
如果(j==20)
{
j = 0;
if(s_num==59)
{
s _ num =-1;
if(m_num==59)
{
m _ num =-1;
if(h_num==24)
h _ num =-1;
h _ num++;
FM = 0;//蜂鳴器會在整點後響起。
延遲(50);
FM = 1;
}
m _ num++;
}
s _ num++;
}
h _ Shi = h _ num/10;
h _ ge = h _ num % 10;
m _ Shi = m _ num/10;
m _ ge = m _ num % 10;
s _ Shi = s _ num/10;
s _ ge = s _ num % 10;
display(h_shi,h_ge,m_shi,m_ge,s_shi,s _ ge);
}
}
Voidtime()中斷1使用1//如果使用t 1,應該是中斷3。
{
TH0 =(65535-50000)/256;//因為晶振用的是11.0592MHZ .取初始值的時候大概定義為50毫秒的中斷。
TL0 =(65535-50000)% 256;
j++;
}