diff --git a/trunk/accero.c b/trunk/accero.c index ac2910a..a26fae7 100644 --- a/trunk/accero.c +++ b/trunk/accero.c @@ -12,6 +12,8 @@ #pragma ROT // rorb, rolb, rorw, rolw #pragma MUL +#pragma BCD + #include "incs.h" #include @@ -245,6 +247,21 @@ u8 hosu_read( ) } +void hosu_init() +{ + u8 i; + + hyst_pedometer = (u16*)pool; + do + { + *( hyst_pedometer + i ) = MAGIC_PEDO_NODATA; + i += 1; + }while( i != 0 ); +} + + + + /*=========================================================  加速度センサ透過アクセス リード @@ -388,6 +405,10 @@ static const u16 DAYS_FROM_HNY[] = { u16 get_long_hour() { u16 long_hour; + u8 year_hex = bcdtob( YEAR ); + u8 month_hex = bcdtob( MONTH ); + u8 day_hex = bcdtob( DAY ); + u8 hour_hex = bcdtob( HOUR ); DI(); @@ -395,15 +416,15 @@ u16 get_long_hour() while( !RWST ){;} // まず日数の部分 - long_hour = YEAR * 365; - long_hour += ( YEAR / 4 ) +1; // 閏日の分。修正ユリウスでは2000年も閏年 - long_hour += DAYS_FROM_HNY[ MONTH ]; - if(( 2 <= MONTH ) && ( DAY < 29 )) + long_hour = year_hex * 365; + long_hour += ( year_hex / 4 ) +1; // 閏日の分。修正ユリウスでは2000年も閏年 + long_hour += DAYS_FROM_HNY[ month_hex ]; + if(( 2 <= month_hex ) && ( day_hex < 29 )) { // 2/29より前 long_hour -= 1; } - long_hour += DAY; + long_hour += day_hex; long_hour *= 24; long_hour += HOUR; diff --git a/trunk/accero.h b/trunk/accero.h index 7c53b9b..936a54b 100644 --- a/trunk/accero.h +++ b/trunk/accero.h @@ -6,15 +6,11 @@ -/////////////////////////////////////////////////////////// -extern u16* hyst_pedometer; - - - /////////////////////////////////////////////////////////// task_status_immed tsk_cbk_accero( ); task_status_immed acc_hosu_set( ); +void hosu_init(); void hosu_read_end( ); u8 hosu_read( ); diff --git a/trunk/main.c b/trunk/main.c index 755224f..37d1e5d 100644 --- a/trunk/main.c +++ b/trunk/main.c @@ -61,8 +61,7 @@ void main_loop( void ) read_dipsw( ); // 特定スイッチで何かするか? - hyst_pedometer = (u16*)pool; - + hosu_init(); renge_init( ); renge_task_interval_run_force = 1;