定义一个全局变量,定时器10mS中断,在中断中执行 time_sys++;
这个time_sys就是基准时间,根据这个基准时间来读取DS1302,闪灯操作,这样的话,整体闪灯和秒时间有10mS的误差,但这种影响可以忽略不计的例如
void read_time(void)
{
static u8 ren = 0;
if(ren == time_sys) return;
ren = time_sys;
读取一次DS1302秒时间,这个秒时间可以是返回值,也可以是全局变量
}
闪灯程序
void led_mode(void)
{
static u8 ren = 0;
if(ren != time_sys)
{
ren = time_sys;
flash_crc = (flash_crc + 1) % 100;
if(flash_crc < 50)
{
亮灯;
}
eles
{
灭灯;
}
}
}
你自己再写一个flash_crc 根据秒来进行归零的代码,思考一下
|