定義一個全局變量,定時器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 根據秒來進行歸零的代碼,思考一下
|