{ count_down=8000
sec++
if(sec==60)
{ sec=0
min++
if(min==60)
{ min=0
hour++
if(hour==24)
{ hour=0
switch(day)
{ case 29: if(month==2 && year%4) { day=1
break
case 30: if(month==2 && year%4==0) { day=1
break
case 31: if(month==4 || month==6 || month==9 || month==11)
{ day=1
break
case 32: day=1
if(month==13) { month=1
}
}
}
}
}
}
void Timer1ISR(void) interrupt 3 using 2 //定时器2中断,用于按键扫描
{unsigned char keytmp
char tmp
TH1=0x15
if(show_status==0) //当前正在设置闹钟项
{ display[0]=cur_alarm_set
display[2]=alarm[cur_alarm_set].h/10
display[4]=alarm[cur_alarm_set].m/10
display[6]=(alarm_wk>>cur_alarm_set)&1
}
if(show_status==1 || show_status==3) //当前显示或设置日期
{ display[0]=year/10
display[3]=month%10
display[6]=0xf
}
if(show_status==2 || show_status==4) //当前显示或设置时间
{ display[0]=hour/10
display[3]=min%10
display[6]=0xf
}
keytmp=~(P1) & 0x0f
if(keytmp==0) { km=0
else
{ if(km==0) km=1
else
{ if(kp==0)
{ kp=1
if(keytmp==1) //第一个按钮
{ if(sound) { alarm_stop=1
else if((show_status==1 || show_status==2) && led_on) //正显示日期或时间
{ show_status=0
else if(show_status==0) //如正在设置闹钟时间项
{ show_status=2
return
}
if(keytmp==2 && led_on) //第二个按钮,仅当数码管打开时有效
{ switch(attr)
{ case 0xff: if(show_status==1) show_status=2
else if(show_status==2) show_status=1
break
case 0x3f: if(show_status==0) cur_alarm_set=(cur_alarm_set+1)%8
else if(show_status==3)
year=(year+1)%50
else if(show_status==4)
hour=(hour+1)%24
上一页 [1] [2] [3] [4] [5] 下一页
本文关键字:智能 课程 自动控制-单片机,电子制作 - 自动控制-单片机