/*************************************************
pslyjvm工作室
http://hi.youkuaiyun.com/space.html
Copyright 2009 pslyjvm's mcustudio
All rights Reserved
作者:pslyjvm
走时.c
钟表走时程序 ,fosc=12MHZ。本程序中是以16进制向外输出
*************************************************/
#include<reg52.h>
unsigned char code CharTab[]={0xC0,0xF9,0xA4,0xB0, //字型码
0x99,0x92,0x82,0xF8,
0x80,0x98,0x88,0x83,
0xC6,0xA1,0x86,0x8E};
unsigned char code LedSel[6]={0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char DispBuf[6];
bit FLAG;
unsigned char COUNT,ss,mm,hh;
unsigned char pBuf;
void InitTO(void)
{
TMOD=0x01;
TH0=0xD8;
TL0=0xEF;
TR0=1;
ET0=1;
}
void TO_Srv(void) interrupt 1 using 1
{
COUNT++;
TH0=0xD8;
TL0=0xEF;
P0=0xff;
P2=0xff;
P0=CharTab[DispBuf[pBuf]];
P2=LedSel[pBuf];
if(++pBuf==6) pBuf=0;
}
void main()
{
char i;
for(i=0;i<6;i++) {DispBuf[i]=0;}
EA=1;
InitTO();
while(1)
{
if(COUNT==100) {FLAG=1;COUNT=0;}
if(FLAG==1)
{
FLAG=0;
ss++;
if(ss==60) {mm++;ss=0;}
if(mm==60) {hh++;mm=0;}
if(hh==24) hh=0;
DispBuf[0]=ss&0x0f;
DispBuf[1]=(ss&0xf0)>>4;
DispBuf[2]=mm&0x0f;
DispBuf[3]=(mm&0xf0)>>4;
DispBuf[4]=hh&0x0f;
DispBuf[5]=(hh&0xf0)>>4;
}
}
}
附:原理图