#include
sbit s=P0^0;位定义 S代表P0.0
sbit s1=P3^0; S1代表P3.0
sbit s2=P3^1;
sbit s3=P3^2;
unsigned char msec,sec,m,h,count;定义无符号字符型msec,sec,m,h,count
void delay(unsigned char i)声明自定义函数
{unsigned char j,k;自定义函数体
for(k=0;k for(j=0;j<255;j++);延时直
}
void T0_INT(void) interrupt 1 T0中断程序
{
TH0=0x3c;赋初值
TL0=0xb0;
msec++;计数器 +1
if(msec==10) 是否等于10 是取反P0口
P0=~P0;P0口取反
if(msec==20)是否等于20 是实行{}里的内容
{P0=~P0;
msec=0;
sec++;
if(sec==60)
{
sec=0;m++;
}
}
if(m==60)
{
m=0;
h++;
if(h==24)
{
h=0;
}
}
}
void main()主函数 程序从此函数开始实行
{
unsigned char led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};存入字符型数组led
TMOD=0x01;设置T0位16定时器
TH0=0x3c;
TL0=0xb0;初值
TR0=1;启动T0
EA=1;开总中断
ET0=1;开T0中断
P0=0x00;P0口置0
P1=0xff;P1口置1
P2=0xff;P2口置1
P3=0xff;
while(1)不断实行{ }里的内容
{
P2=0x01;P2口的P2.0置1
P1=led[sec%10];将10个数组里的其中sec%10个送P1口
delay(10);延时
P2=0x02;
P1=led[sec/10];将10个数组里的其中seC/10个送P1口
delay(10);
P2=0x04;
P1=led[m%10];将10个数组里的其中m%10个送P1口
delay(10);
P2=0x08;
P1=led[m/10];
delay(10);
P2=0x10;
P1=led[h%10];
delay(10);
P2=0x20;
P1=led[h/10];
delay(10);
if(s1==0)
{
delay(10);
if(s1==0)判断P3.0是否是低电平 是就实行{ }的内容
{count++;
while(!s1);
{TR0=0; }
}
if(count==2)判断count里的内容是否等于2 是就实行{ }里的内容
{
}
if(count==3)
{
TR0=1;
count=0;
}
}
if(count!=0)
{if(s2==0)
{delay(10);
if(s2==0)
{while(!s2);
if(count==1)
{m++;
if(m==60) m=0; }
if(count==2)
{h++;
if(h==24)
h=0;
}
}
}
}
if(s3==0)
{
delay(10);
if(s3==0)
{while(!s3);判断P3.2有高变低就实行 if(count==1)语句没就实行if(count==1)的{ }的下条语句
if(count==1)
{ m--;
if(m==-1) m=59;判断M里的内容是否等于-1 是就实行 m=59;不是就实行 m=59;的下条语句
}
if(count==2)
{h--;
if(h==-1)判断h里的内容是否等于—1 是就实行 h=23;不是就实行 h=23;的下条语句
h=23;
}
}
}
}
}
扯蛋……还每一句话的意思……
哥们你太强大了!