Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1222770
  • 博文数量: 322
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 3276
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-17 09:21
文章分类

全部博文(322)

文章存档

2010年(155)

2009年(167)

我的朋友

分类: 嵌入式

2010-03-15 17:14:57

#include        //头文件//
#define uchar unsigned char
#define uint unsigned int
#define ulint unsigned long int
#define tn0h  0x70
#define tn0l  0x00
#define tn1h  0x4c
#define tn1l  0x06
uchar signtime[8]={0x00,0x06,0x0f,0x03,0x00,0x0f,0x00,0x00};
uchar signdate[10]={0x00,0x08,0x0f,0x00,0x04,0x0f,0x02,0x03,0x20,0x00};
uchar tcount,tcount1,tflag=0;
uchar flag=1;
uint  year=0;

//***********10ms延时*************//
/*
void delay10ms(void)     
{uchar i=255;
uchar j=255;
while(i>0)
{j=255;
while(j>0)
j--;
i--;
}
} */
//***********延时*************//
void delay(uchar s)
{uchar l;
for(l=0;l<=s;l++);
}
//***********键盘扫描 时间修改*************//
void keyscan() 
{uchar key=0;
if(P1!=0xff)
{//delay10ms();
if(P1==0x7f)flag++;
if(flag>1)flag=0;
if(flag==1)
{if(P1==0xfe)signtime[0]++;
if(P1==0xfd)signtime[1]++;
if(P1==0xfb)signtime[3]++;
if(P1==0xf7)signtime[4]++;
if(P1==0xef)signtime[6]++;
if(P1==0xdf)signtime[7]++;
if(signtime[0]>2)
signtime[0]=0;
if(signtime[1]>9)
signtime[1]=0;
if(signtime[3]>5)
signtime[3]=0;
if(signtime[4]>9)
signtime[4]=0;
if(signtime[6]>5)
signtime[6]=0;
if(signtime[7]>9)
signtime[7]=0;
if(signtime[0]==2&&signtime[1]==4)
{signtime[0]=0;
signtime[1]=0;}  }

if(flag==0)
{if(P1==0xfe)signdate[0]++;
if(P1==0xfd)signdate[1]++;
if(P1==0xfb)signdate[3]++;
if(P1==0xf7)signdate[4]++;
if(P1==0xef)signdate[6]++;
if(P1==0xdf)signdate[7]++;
if(signdate[0]>9)
signdate[0]=0;
if(signdate[1]>9)
signdate[1]=0;
if(signdate[3]>1)
signdate[3]=0;
if(signdate[4]>9)
signdate[4]=0;
if(signdate[6]>3)
signdate[6]=0;
if(signdate[7]>9)
signdate[7]=0;
if(signdate[3]==1&&signdate[4]==3)
{signdate[3]=0;
signdate[4]=1;}
if(signdate[6]==3&&signdate[7]==2)
{signdate[6]=0;
signdate[7]=1;}  }
}
}
//***********时间刷新*************//
void timechange()
{signtime[7]+=1;
if(signtime[7]==10)//秒
{signtime[7]=0;
signtime[6]+=1;}
if(signtime[6]==6)//秒
{signtime[6]=0;
signtime[4]+=1;}
if(signtime[4]==10)//分
{signtime[4]=0;
signtime[3]+=1;}
if(signtime[3]==6)//分
{signtime[3]=0;
signtime[1]+=1;}
if(signtime[1]==10)//时
{signtime[1]=0;
signtime[0]+=1;}
if(signtime[0]==2&&signtime[1]==4)//时
{signtime[0]=0;
signtime[1]=0;
signdate[7]++;}

//大月31天
if((signdate[3]==0&&signdate[4]==1)||(signdate[3]==0&&signdate[4]==3)||(signdate[3]==0&&signdate[4]==5)||(signdate[3]==0&&signdate[4]==7)||(signdate[3]==0&&signdate[4]==8)||(signdate[3]==1&&signdate[4]==0)||(signdate[3]==1||signdate[4]==2))
{if(signdate[7]==10)//日
{signdate[7]=0;
signdate[6]+=1;}
if(signdate[6]==3&&signdate[7]==2)//日
{signdate[6]=0;signdate[7]=1;
signdate[4]+=1;}
if(signdate[4]==10)//月
{signdate[4]=0;
signdate[3]+=1;}
if(signdate[3]==1&&signdate[4]==2)//月
{signdate[3]=0;signdate[4]=1;
signdate[1]+=1;}
if(signdate[1]==10)//年
{signdate[1]=0;
signdate[0]+=1;}
if(signdate[0]==10)  //年
{signdate[0]=0;
signdate[9]+=1;}
if(signdate[9]==10)  //年
{signdate[9]=0;
signdate[8]+=1;} }
//小月30天
if((signdate[3]==0&&signdate[4]==4)||(signdate[3]==0&&signdate[4]==6)||(signdate[3]==0&&signdate[4]==9)||(signdate[3]==1&&signdate[4]==1))
{if(signdate[7]==10)//日
{signdate[7]=0;
signdate[6]+=1;}
if(signdate[6]==3&&signdate[7]==1)//日
{signdate[6]=0;signdate[7]=1;signdate[4]+=1;}
if(signdate[4]==10)//月
{signdate[4]=0;
signdate[3]+=1;}
if(signdate[3]==1&&signdate[4]==3)//月
{signdate[3]=0;signdate[4]=1;signdate[1]++;}
if(signdate[1]==10)//年
{signdate[1]=0;
signdate[0]+=1;}
if(signdate[0]==10)  //年
{signdate[0]=0;
signdate[9]+=1;}
if(signdate[9]==10)  //年
{signdate[9]=0;
signdate[8]+=1;}
}
year=signdate[8]*1000+signdate[9]*100+signdate[0]*10+signdate[1];

if(signdate[3]==0&&signdate[4]==2)
if(year%100==0&&year%400==0)
if(signdate[6]==2&&signdate[7]==9)     //闰年2月29天
{signdate[7]=1;signdate[6]=0;signdate[4]+=1; }
else if(signdate[6]==2&&signdate[7]==8)   //平年2月28天
{signdate[7]=1;signdate[6]=0;signdate[4]+=1; }
}
//***********一秒定时 50ms扫描键盘*************//
void t1(void) interrupt 3 using 2
{TR1=0;
TR1=0;TR1=0;TR1=0;TR1=0;TR1=0;
TH1=tn1h;
TL1=tn1l;
TR1=1;
tcount++;
if(tcount==40)  //一秒定时
{tflag=1;
tcount=0;
timechange();
}
if(tcount==1)
{tcount1=0;
keyscan();
}
}
//************显示程序************//
void display(void) 
{uchar i=0;
uchar a=0;
for(i=0;i<8;i++)
{if(flag==1)
P2=signtime[i]+a;
else
P2=signdate[i]+a;
a+=32;
delay(50);
}       
}    
//*************主程序*************//
void main()
{TMOD=0x11;  //定时器工作模式 方式一
TH0=tn0h;  //
TL0=tn0l;  //
TH1=tn1h;  //
TL1=tn1l;  //
TR1=1;   //启动定时器一
ET0=0;   //允许定时器0中断
ET1=1;       //允许定时器1中断
EA=1; 
while(1)
{display(); 
}  
}
阅读(897) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~