time() と localtime() を使用して内部クロックを設定するプログラムがありますが、これを変更して、内部クロックがユーザーや「リアルタイム」時間から独立するようにする必要があります。妥当な開始時刻を設定し、プログラム内部のタイマーに応じて順方向にカウントできるようにする必要があります。これにアプローチする最善の方法についてのアイデアはありますか? 抜粋は次のとおりです。
#define ConvertToBCD(x) ((x / 10) << 4) | (x % 10);
time_t tm;
time(&tm);
struct tm *tm_local= localtime(&tm);
tm_local->tm_year %= 100;
tm_local->tm_mon++;
timedata[0] = ConvertToBCD(tm_local->tm_year);
timedata[1] = ConvertToBCD(tm_local->tm_mon);
timedata[2] = ConvertToBCD(tm_local->tm_mday);
timedata[3] = (tm_local->tm_wday + 6) & 7;
if (!(TimeStatus & 0x02)) tm_local->tm_hour %= 12;
timedata[4] = ((tm_local->tm_hour < 12) ? 0x00 : 0x40) | ConvertToBCD(tm_local->tm_hour);
timedata[5] = ConvertToBCD(tm_local->tm_min);
timedata[6] = ConvertToBCD(tm_local->tm_sec);