数字电子时钟的设计 - 图文 下载本文

case 0x08; buf[3]=0x0b; break; } }

/*******************************************************/ displa();

if(S1) goto sett_1; for(i=0;<4;i++) delay20ms(); if(S1) goto sett_1; if(ml) {

TR1=0; ET1=0;

buf[0]=hourh; buf[1]=hourl; buf[2]=minuh; buf[3]=minul; return; }

setflag<<1; continue;

sett_1; if(S2) continue; for(i=0;i<4;i++) delay20ms();

if(S2) continue; if(!hh) goto sett_2 { hourh++;

if(hourh!=2) continue; hourh=0; continue; }

sett_2: if(!hl) goto sett_3; {

hourl++;

if(hourh) goto sett_20; if(hourl==10) goto sett_21; continue;

sett_21: hourl=0; continue;

sett_20: if(hourl==3) goto sett_22; continue; sett_22: hourl=0; continue; }

sett_3: if(!mh) goto sett_4; { minuh++;

if(minuh==6) goto sett_30; continue;

sett_30: minuh=0; continue;

}

sett_4: minul++;

if(minul==10) goto sett_40; continue;

sett_40: minul=0;

26

continue; } }

/*********************************************************** ;**********************************************************/ void delay20ms(void) {

uchar i, j;

for(i=0;i<20;i++)

for(j=0;j<255;j++); }

/*********************************************************** ;**********************************************************/ void timerl(void) interrupt 3 using 1 {

TH1=0x3c; /* 100ms 定时常数 */ TL1=0xb0;

conun++; /* 中断次数加1*/

if(count!=5) /* 判到10次(1s)否,不到直接返回 */ return;

ss=!ss; /* ss 闪烁标志求反 */ count=0; }

/********************************************************** ;*********************************************************/ void tl_init(void {

; TMOD=0X11; /*T1 定时方式1*/ TH1=0x3c; TL1=0xb0; }

27