真的很感謝問問的朋友幫我解決了定時器的問題。
今天是拿到單片機的第五天了,經(jīng)過五天的挑燈學習,單片機的基礎也算了解的三三兩兩了。
解決了定時器問題,早上逃課,趁熱打鐵,把電子鐘的程序寫完。有一年沒有寫復雜的程序了,今天的過程也是磕磕碰碰,問題頗多。廢話不說了,想玩wow了。有圖有真相。
#include<reg52.h>
#define unchar unsigned char
//sbit beep=P1^5;
unchar temp=0;
unsigned char code shuzi[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
unsigned char count[]={0,0,10,5,5,10,3,2};
void delay(void)
{
int i=100;
while(--i);
}
unchar time(unchar j)
{
if (temp==20)
{
temp=0 ;
++count[0];
if (count[0]==10)
{
count[0]=0;
++count[1];
}
if(count[1]==6)
{
count[1]=0;
++count[3];
}
if (count[3]==10)
{
count[3]=0;
++count[4];
}
if (count[4]==6)
{
count[4]=0;
++count[6];
}
if (count[6]==10)
{
count[6]=0;
++count[7];
}
if (count[7]==3)
count[7]=0;
if (count[7]==2&&count[6]==4)
count[7]=count[6]=0;
}
return count[j];
}
void main()
{
unchar num,i,j;
EA=1;
ET0=1;
TMOD=0x01;
TL0=15535%256;
TH0=15535/256;
TR0=1;
while(1)
{
P2=0xff;
i=1;
for (j=0;j<8;++j)
{
num=time(j);
P2=P2-i;
P0=shuzi[num];
i=i*2;
delay();
}
}
}
void duan() interrupt 1
{
TL0=15535%256;
TH0=15535/256;
++temp;
}

