真的很感謝問(wèn)問(wèn)的朋友幫我解決了定時(shí)器的問(wèn)題。
今天是拿到單片機(jī)的第五天了,經(jīng)過(guò)五天的挑燈學(xué)習(xí),單片機(jī)的基礎(chǔ)也算了解的三三兩兩了。
解決了定時(shí)器問(wèn)題,早上逃課,趁熱打鐵,把電子鐘的程序?qū)懲。有一年沒(méi)有寫復(fù)雜的程序了,今天的過(guò)程也是磕磕碰碰,問(wèn)題頗多。廢話不說(shuō)了,想玩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;
}

