}
else if(command ==0xbb) //报警时间
{
alarm_buffer[count]=ch;
count++;
if(count==7)
{
set_alarm();
count=0;
command=0;
rUTXH0=0xbb;
}
}
}
}
}
//报警中断
void __irq Alarm_ISR(void)
{
rSRCPND |= 0x1<<30;
rINTPND |= 0x1<<30;
rTICNT = 0xbf; //开启时间节拍中断,周期为500毫秒
}
//时间节拍中断,用于LED闪烁15秒
void __irq RTCTick_ISP(void)
{
static char count;
rSRCPND |= 0x1<<8;
rINTPND |= 0x1<<8;
if(count%2==0) //LED亮0.5秒
rGPBDAT = ~0x1e0;
else //LED灭0.5秒
rGPBDAT = 0x1e0;
count++;
if(count==30)
{
rTICNT = 0x0; //禁止时间节拍中断
rGPBDAT = 0x1e0; //LED灭
count=0;
}
}
void Main(void)
{
//初始化
…… ……
//中断源
pISR_UART0 = (U32)uartISR;
pISR_EINT0 = (U32)Key4_ISR;
pISR_EINT1 = (U32)Key1_ISR;
pISR_RTC = (U32)Alarm_ISR;
pISR_TICK = (U32)RTCTick_ISP;
…… ……
Brush_Background(0xffffff);
show_date();
flag=0;
while(1)
{
if(flag) //显示实时时间
{
Brush_Background(0xffffff);
show_date();
flag=0;
}
}
}