单片机程序问题。求高手解答下,急急急,没分分了,求好心人解答下

如题所述

//时钟程序,上电后显示8点,然后,开始计时。经过protues仿真的。
#include<reg51.h>
unsigned char code table1[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F};
sbit d4=P1^4;
sbit d5=P1^5;
sbit d6=P1^6;
sbit d7=P1^7;
unsigned char num0,num1,num2,num3,num4,num5,num6,num7,i,j,ms,sec,min,hour;
unsigned int k=0;
void inti();
void disply (unsigned char num0,unsigned char num1,unsigned char num2, unsigned char num3,unsigned char num4,unsigned char num5);
void delay1(int n);
void time();
void main()
{
inti();
while(1)
{
time();

num4=sec/10;
num5=sec%10;
num2=min/10;
num3=min%10;
num0=hour/10;
num1=hour%10;
disply (num0,num1,num2,num3,num4,num5);

}
}

void delay() interrupt 1
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
k++;
}
void inti()
{
ms=0;
sec=0;
min=0;
hour=8;
TMOD=0X01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
EA=1;
ET0=1;
TR0=1;
IT0=0;
EX0=1;

}
void disply (unsigned char num0,unsigned char num1,unsigned char num2 ,unsigned char num3,unsigned char num4,unsigned char num5)
{
P2=0XDF;
P0=table1[num5];
delay1(4);
P2=0XEF;
P0=table1[num4];
delay1(4);
P2=0XF7;
P0=table1[num3];
delay1(4);
P2=0XFB;
P0=table1[num2];
delay1(4);
P2=0XFD;
P0=table1[num1];
delay1(4);
P2=0XFE;
P0=table1[num0];
delay1(4);
}
void delay1(int n)
{
for(i=n;i>0;i--)
for(j=6;j>0;j--);
}
void time()
{ if(k==800)
{ k=0;
sec++;
if(sec==60)
{sec=0;
min++;
if(min==60)
{ hour++;
if(hour==24)
{hour=0;}
}
}

}
}
void ADD() interrupt 0
{

if(d5==0)
{ sec++;
if(sec==60)
sec=0;
num4=sec/10;
num5=sec%10;
disply (num0,num1,num2,num3,num4,num5);
loop1: if(d5==0)
{ disply (num0,num1,num2,num3,num4,num5);
goto loop1;
}
else ET0=1;
}
else if(d6==0)
{ min++;
if(min==60)
min=0;
num2=min/10;
num3=min%10;
disply (num0,num1,num2,num3,num4,num5);
loop2: if(d6==0)
{ disply (num0,num1,num2,num3,num4,num5);
goto loop2;
}
else ET0=1;
}
else if(d7==0)
{ hour++;
if(hour==24)
hour=0;
num0=hour/10;
num1=hour%10;
disply (num0,num1,num2,num3,num4,num5);
loop3: if(d7==0)
{ disply (num0,num1,num2,num3,num4,num5);
goto loop3;
}
else ET0=1;
}

}
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-01-17
你自己懂多少?
定时器精确定时1MS,变量自加999次即1S,1S自加59次即1M,1M自加59次即1H
显示的话看你的硬件了
第2个回答  2013-01-17
这个不难啊,你要用定时器做还是时钟芯片呀?我这里有一些资料,需要可以来找我,在线回复,如果不在线,可以给我留言,看到后马上回复。
相似回答
大家正在搜