; 78K0R C Compiler V2.10 Assembler Source Date:13 Jun 2010 Time:19:31:25 ; Command : -c9F0104 -yC:\Program Files\NEC Electronics Tools\DEV -_msgoff -i ; renge -iC:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\ ; V1.20\inc78k0r -ms -qvjl3wt -sainter_asm -zp -no pedo_alg_thre_de ; t2.c ; In-file : pedo_alg_thre_det2.c ; Asm-file : inter_asm\pedo_alg_thre_det2.asm ; Para-file : $PROCESSOR(9F0104) $DEBUG $NODEBUGA $KANJICODE SJIS $TOL_INF 03FH, 0210H, 02H, 00H, 00H, 00H, 00H $DGS FIL_NAM, .file, 0EEH, 0FFFEH, 03FH, 067H, 01H, 00H $DGS AUX_FIL, pedo_alg_thre_det2.c $DGS MOD_NAM, pedo_alg_thre_det2, 00H, 0FFFEH, 00H, 077H, 00H, 00H $DGS SEC_NAM, @@BITS, U, U, 00H, 078H, 00H, 00H $DGS SEC_NAM, @@CNST, U, U, 00H, 078H, 00H, 00H $DGS SEC_NAM, @@R_INIT, U, U, 00H, 078H, 00H, 00H $DGS SEC_NAM, @@INIT, U, U, 00H, 078H, 00H, 00H $DGS SEC_NAM, @@DATA, U, U, 00H, 078H, 00H, 00H $DGS SEC_NAM, @@R_INIS, U, U, 00H, 078H, 00H, 00H $DGS SEC_NAM, @@INIS, U, U, 00H, 078H, 00H, 00H $DGS SEC_NAM, @@DATS, U, U, 00H, 078H, 00H, 00H $DGS SEC_NAM, @@CNSTL, U, U, 00H, 078H, 00H, 00H $DGS SEC_NAM, @@RLINIT, U, U, 00H, 078H, 00H, 00H $DGS SEC_NAM, @@INITL, U, U, 00H, 078H, 00H, 00H $DGS SEC_NAM, @@DATAL, U, U, 00H, 078H, 00H, 00H $DGS SEC_NAM, @@CALT, U, U, 00H, 078H, 00H, 00H $DGS SEC_NAM, ROM_CODE, U, U, 00H, 078H, 00H, 00H $DGS SEC_NAM, @@CODEL, U, U, 00H, 078H, 00H, 00H $DGS SEC_NAM, @@BASE, U, U, 00H, 078H, 00H, 00H $DGS LAB_SYM, bs_S0099, U, U, 00H, 06H, 00H, 00H $DGS LAB_SYM, es_S0099, U, U, 00H, 06H, 00H, 00H $DGS LAB_SYM, bs_F0097, U, U, 00H, 06H, 00H, 00H $DGS LAB_SYM, es_F0097, U, U, 00H, 06H, 00H, 00H $DGS LAB_SYM, bs_S0098, U, U, 00H, 06H, 00H, 00H $DGS LAB_SYM, es_S0098, U, U, 00H, 06H, 00H, 00H $DGS LAB_SYM, bs_S0096, U, U, 00H, 06H, 00H, 00H $DGS LAB_SYM, es_S0096, U, U, 00H, 06H, 00H, 00H $DGS STA_SYM, _lpf_coeff, U, U, 05002H, 03H, 01H, 03H $DGS AUX_STR, 00H, 00H, 02FH, 02FH, 00H, 00H, 00H, 00H $DGS GLV_SYM, _pedometer, U, U, 01H, 026H, 01H, 02H $DGS AUX_FUN, 00H, U, U, 06BH, 00H, 00H $DGS BEG_FUN, ??bf_pedometer, U, U, 00H, 065H, 01H, 00H $DGS AUX_BEG, 01EH, 024H, 039H $DGS STA_SYM, _th_H, ?L0003, U, 03H, 03H, 00H, 00H $DGS STA_SYM, _th_L, ?L0004, U, 03H, 03H, 00H, 00H $DGS STA_SYM, _acc_norm, ?L0005, U, 0DH, 03H, 01H, 03H $DGS AUX_STR, 00H, 00H, 06H, 03H, 00H, 00H, 00H, 00H $DGS STA_SYM, _acc_norm_temp, ?L0006, U, 0DH, 03H, 00H, 00H $DGS STA_SYM, _interval_hh, ?L0007, U, 0CH, 03H, 00H, 00H $DGS STA_SYM, _time_l, ?L0008, U, 0CH, 03H, 00H, 00H $DGS STA_SYM, _peak_l, ?L0009, U, 0DH, 03H, 00H, 00H $DGS STA_SYM, _peak_h, ?L0010, U, 0DH, 03H, 00H, 00H $DGS STA_SYM, _norm_hist, ?L0011, U, 0DH, 03H, 01H, 03H $DGS AUX_STR, 00H, 00H, 080H, 040H, 00H, 00H, 00H, 00H $DGS STA_SYM, _hist_indx, ?L0012, U, 0CH, 03H, 00H, 00H $DGS STA_SYM, _t_rise, ?L0013, U, 0CH, 03H, 00H, 00H $DGS AUT_VAR, _filterd, 020H, 0FFFFH, 05H, 01H, 00H, 00H $DGS AUT_VAR, _i, 01FH, 0FFFFH, 0CH, 01H, 00H, 00H $DGS AUT_VAR, _temp1, 01AH, 0FFFFH, 05H, 01H, 00H, 00H $DGS AUT_VAR, _temp2, 016H, 0FFFFH, 05H, 01H, 00H, 00H $DGS AUT_VAR, _temp3, 012H, 0FFFFH, 05H, 01H, 00H, 00H $DGS AUT_VAR, _temp4, 0EH, 0FFFFH, 05H, 01H, 00H, 00H $DGS AUT_VAR, _temp5, 0AH, 0FFFFH, 05H, 01H, 00H, 00H $DGS AUT_VAR, _temp6, 06H, 0FFFFH, 05H, 01H, 00H, 00H $DGS AUT_VAR, _sx16, 04H, 0FFFFH, 0DH, 01H, 00H, 00H $DGS AUT_VAR, _sy16, 02H, 0FFFFH, 0DH, 01H, 00H, 00H $DGS AUT_VAR, _sz16, 00H, 0FFFFH, 0DH, 01H, 00H, 00H $DGS BEG_BLK, ??bb00_pedometer, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 02CH, 00H, 03DH $DGS END_BLK, ??eb00_pedometer, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 02EH $DGS BEG_BLK, ??bb01_pedometer, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 03FH, 00H, 041H $DGS END_BLK, ??eb01_pedometer, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 043H $DGS BEG_BLK, ??bb02_pedometer, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 048H, 00H, 043H $DGS BEG_BLK, ??bb03_pedometer, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 04BH, 00H, 045H $DGS BEG_BLK, ??bb04_pedometer, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 04EH, 00H, 047H $DGS BEG_BLK, ??bb05_pedometer, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 04FH, 00H, 04FH $DGS END_BLK, ??eb05_pedometer, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 052H $DGS END_BLK, ??eb04_pedometer, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 053H $DGS END_BLK, ??eb03_pedometer, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 055H $DGS BEG_BLK, ??bb06_pedometer, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 057H, 00H, 053H $DGS END_BLK, ??eb06_pedometer, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 059H $DGS BEG_BLK, ??bb07_pedometer, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 05BH, 00H, 059H $DGS END_BLK, ??eb07_pedometer, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 05DH $DGS END_BLK, ??eb02_pedometer, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 05EH $DGS BEG_BLK, ??bb08_pedometer, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 060H, 00H, 05DH $DGS END_BLK, ??eb08_pedometer, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 062H $DGS BEG_BLK, ??bb09_pedometer, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 067H, 00H, 061H $DGS END_BLK, ??eb09_pedometer, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 06BH $DGS BEG_BLK, ??bb0A_pedometer, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 06DH, 00H, 065H $DGS END_BLK, ??eb0A_pedometer, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 06FH $DGS BEG_BLK, ??bb0B_pedometer, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 071H, 00H, 00H $DGS END_BLK, ??eb0B_pedometer, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 086H $DGS END_FUN, ??ef_pedometer, U, U, 00H, 065H, 01H, 00H $DGS AUX_END, 087H $DGS STA_SYM, _hosu_increment, U, U, 01H, 03H, 01H, 02H $DGS AUX_FUN, 00H, U, U, 0A8H, 00H, 00H $DGS BEG_FUN, ??bf_hosu_increment, U, U, 00H, 065H, 01H, 00H $DGS AUX_BEG, 0B7H, 06H, 070H $DGS STA_SYM, _last_hour_fny, ?L0039, U, 0DH, 03H, 00H, 00H $DGS BEG_BLK, ??bb00_hosu_increment, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 07H, 00H, 072H $DGS BEG_BLK, ??bb01_hosu_increment, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 09H, 00H, 074H $DGS BEG_BLK, ??bb02_hosu_increment, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 0AH, 00H, 07CH $DGS END_BLK, ??eb02_hosu_increment, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 0EH $DGS END_BLK, ??eb01_hosu_increment, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 0FH $DGS END_BLK, ??eb00_hosu_increment, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 010H $DGS BEG_BLK, ??bb03_hosu_increment, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 012H, 00H, 082H $DGS AUT_VAR, _now_hour, 04H, 0FFFFH, 0DH, 01H, 01H, 00H $DGS AUX_STR, 00H, 015H, 02H, 00H, 00H, 00H, 00H, 00H $DGS AUT_VAR, _now_year, 03H, 0FFFFH, 0CH, 01H, 01H, 00H $DGS AUX_STR, 00H, 016H, 01H, 00H, 00H, 00H, 00H, 00H $DGS BEG_BLK, ??bb04_hosu_increment, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 01BH, 00H, 086H $DGS END_BLK, ??eb04_hosu_increment, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 01BH $DGS BEG_BLK, ??bb05_hosu_increment, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 026H, 00H, 088H $DGS BEG_BLK, ??bb06_hosu_increment, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 028H, 00H, 08EH $DGS END_BLK, ??eb06_hosu_increment, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 02AH $DGS END_BLK, ??eb05_hosu_increment, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 02BH $DGS BEG_BLK, ??bb07_hosu_increment, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 02DH, 00H, 094H $DGS AUT_VAR, _temp_hours, 00H, 0FFFFH, 0DH, 01H, 01H, 00H $DGS AUX_STR, 00H, 02FH, 02H, 00H, 00H, 00H, 00H, 00H $DGS END_BLK, ??eb07_hosu_increment, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 031H $DGS BEG_BLK, ??bb08_hosu_increment, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 033H, 00H, 098H $DGS END_BLK, ??eb08_hosu_increment, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 036H $DGS BEG_BLK, ??bb09_hosu_increment, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 038H, 00H, 09CH $DGS END_BLK, ??eb09_hosu_increment, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 03BH $DGS BEG_BLK, ??bb0A_hosu_increment, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 041H, 00H, 0A0H $DGS END_BLK, ??eb0A_hosu_increment, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 043H $DGS BEG_BLK, ??bb0B_hosu_increment, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 045H, 00H, 00H $DGS END_BLK, ??eb0B_hosu_increment, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 047H $DGS END_BLK, ??eb03_hosu_increment, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 048H $DGS END_FUN, ??ef_hosu_increment, U, U, 00H, 065H, 01H, 00H $DGS AUX_END, 049H $DGS GLV_SYM, _fill_hosu_hist_hours, U, U, 01H, 026H, 01H, 02H $DGS AUX_FUN, 00H, U, U, 0B7H, 00H, 00H $DGS BEG_FUN, ??bf_fill_hosu_hist_hours, U, U, 00H, 065H, 01H, 00H $DGS AUX_BEG, 0108H, 02H, 0ADH $DGS REG_PAR, _hours, 0103H, 0FFFFH, 010DH, 011H, 00H, 00H $DGS BEG_BLK, ??bb00_fill_hosu_hist_hours, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 03H, 00H, 0B1H $DGS END_BLK, ??eb00_fill_hosu_hist_hours, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 05H $DGS BEG_BLK, ??bb01_fill_hosu_hist_hours, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 09H, 00H, 00H $DGS END_BLK, ??eb01_fill_hosu_hist_hours, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 0DH $DGS END_FUN, ??ef_fill_hosu_hist_hours, U, U, 00H, 065H, 01H, 00H $DGS AUX_END, 0FH $DGS GLV_SYM, _clear_hosu_hist, U, U, 01H, 026H, 01H, 02H $DGS AUX_FUN, 00H, U, U, 0C2H, 00H, 00H $DGS BEG_FUN, ??bf_clear_hosu_hist, U, U, 00H, 065H, 01H, 00H $DGS AUX_BEG, 011FH, 02H, 0BCH $DGS REG_VAR, _hours, 06H, 0FFFFH, 010CH, 04H, 00H, 00H $DGS BEG_BLK, ??bb00_clear_hosu_hist, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 05H, 00H, 00H $DGS END_BLK, ??eb00_clear_hosu_hist, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 08H $DGS END_FUN, ??ef_clear_hosu_hist, U, U, 00H, 065H, 01H, 00H $DGS AUX_END, 0DH $DGS GLV_SYM, _hosu_read_end, U, U, 01H, 026H, 01H, 02H $DGS AUX_FUN, 00H, U, U, 0C8H, 00H, 00H $DGS BEG_FUN, ??bf_hosu_read_end, U, U, 00H, 065H, 01H, 00H $DGS AUX_BEG, 0136H, 00H, 0C8H $DGS END_FUN, ??ef_hosu_read_end, U, U, 00H, 065H, 01H, 00H $DGS AUX_END, 03H $DGS GLV_SYM, _hosu_read, U, U, 0CH, 026H, 01H, 02H $DGS AUX_FUN, 00H, U, U, 0DDH, 00H, 00H $DGS BEG_FUN, ??bf_hosu_read, U, U, 00H, 065H, 01H, 00H $DGS AUX_BEG, 0140H, 04H, 0CFH $DGS AUT_VAR, _dat, 03H, 0FFFFH, 0CH, 01H, 00H, 00H $DGS AUT_VAR, _temp, 00H, 0FFFFH, 0DH, 01H, 00H, 00H $DGS STA_SYM, _p_record_buffer, ?L0078, U, 0CH, 03H, 00H, 00H $DGS BEG_BLK, ??bb00_hosu_read, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 06H, 00H, 0D1H $DGS BEG_BLK, ??bb01_hosu_read, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 023H, 00H, 0D5H $DGS END_BLK, ??eb01_hosu_read, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 025H $DGS BEG_BLK, ??bb02_hosu_read, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 027H, 00H, 00H $DGS END_BLK, ??eb02_hosu_read, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 02AH $DGS END_BLK, ??eb00_hosu_read, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 02DH $DGS END_FUN, ??ef_hosu_read, U, U, 00H, 065H, 01H, 00H $DGS AUX_END, 02EH $DGS STA_SYM, _DAYS_FROM_HNY, U, U, 0500DH, 03H, 01H, 03H $DGS AUX_STR, 00H, 00H, 01AH, 0DH, 00H, 00H, 00H, 00H $DGS GLV_SYM, _get_long_hour, U, U, 0DH, 026H, 01H, 02H $DGS AUX_FUN, 00H, U, U, 0EEH, 00H, 00H $DGS BEG_FUN, ??bf_get_long_hour, U, U, 00H, 065H, 01H, 00H $DGS AUX_BEG, 017DH, 06H, 0E8H $DGS AUT_VAR, _long_hour, 04H, 0FFFFH, 0DH, 01H, 00H, 00H $DGS AUT_VAR, _year_hex, 03H, 0FFFFH, 0CH, 01H, 00H, 00H $DGS AUT_VAR, _month_hex, 02H, 0FFFFH, 0CH, 01H, 00H, 00H $DGS AUT_VAR, _day_hex, 01H, 0FFFFH, 0CH, 01H, 00H, 00H $DGS AUT_VAR, _hour_hex, 00H, 0FFFFH, 0CH, 01H, 00H, 00H $DGS BEG_BLK, ??bb00_get_long_hour, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 014H, 00H, 00H $DGS END_BLK, ??eb00_get_long_hour, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 017H $DGS END_FUN, ??ef_get_long_hour, U, U, 00H, 065H, 01H, 00H $DGS AUX_END, 01EH $DGS GLV_SYM, _p_record, U, U, 0CH, 026H, 00H, 00H $DGS GLV_SYM, _last_hour, U, U, 0CH, 026H, 00H, 00H $DGS GLV_SYM, _last_day, U, U, 0CH, 026H, 00H, 00H $DGS GLV_SYM, _last_month, U, U, 0CH, 026H, 00H, 00H $DGS GLV_SYM, _last_year, U, U, 0CH, 026H, 00H, 00H $DGS GLV_SYM, _record_read_msb_lsb, U, U, 034CH, 027H, 00H, 00H $DGS GLV_SYM, _@RTARG0, U, U, 00H, 02H, 00H, 00H $DGS GLV_SYM, _@RTARG2, U, U, 00H, 02H, 00H, 00H $DGS GLV_SYM, _abs, U, U, 04H, 02H, 01H, 02H $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H $DGS GLV_SYM, _@RTARG4, U, U, 00H, 02H, 00H, 00H $DGS GLV_SYM, _@RTARG6, U, U, 00H, 02H, 00H, 00H $DGS GLV_SYM, @@lsmul, U, U, 00H, 02H, 00H, 00H $DGS GLV_SYM, _vreg_ctr, U, U, 0CH, 02H, 01H, 03H $DGS AUX_STR, 00H, 00H, 01H, 01H, 00H, 00H, 00H, 00H $DGS GLV_SYM, @@lsadd, U, U, 00H, 02H, 00H, 00H $DGS GLV_SYM, @@lstof, U, U, 00H, 02H, 00H, 00H $DGS GLV_SYM, _sqrt, U, U, 07H, 02H, 01H, 02H $DGS AUX_FUN, 00H, U, U, 00H, 01H, 00H $DGS GLV_SYM, _@RTARG3, U, U, 00H, 02H, 00H, 00H $DGS GLV_SYM, @@ftolu, U, U, 00H, 02H, 00H, 00H $DGS GLV_SYM, @@ftols, U, U, 00H, 02H, 00H, 00H $DGS GLV_SYM, @@lsdiv, U, U, 00H, 02H, 00H, 00H $DGS GLV_SYM, @@lsband, U, U, 00H, 02H, 00H, 00H $DGS GLV_SYM, @@bcdtob, U, U, 00H, 02H, 00H, 00H $DGS GLV_SYM, _pool, U, U, 0DH, 02H, 01H, 03H $DGS AUX_STR, 00H, 00H, 02H, 01H, 00H, 00H, 00H, 00H $DGS GLV_SYM, _iic_burst_state, U, U, 0CH, 02H, 00H, 00H $DGS GLV_SYM, @@bbcd, U, U, 00H, 02H, 00H, 00H EXTRN _@RTARG0 EXTRN _@RTARG2 EXTRN _abs EXTRN _@RTARG4 EXTRN _@RTARG6 EXTRN @@lsmul EXTRN _vreg_ctr EXTRN @@lsadd EXTRN @@lstof EXTRN _sqrt EXTRN _@RTARG3 EXTRN @@ftolu EXTRN @@ftols EXTRN @@lsdiv EXTRN @@lsband EXTRN @@bcdtob EXTRN _pool EXTRN _iic_burst_state EXTRN @@bbcd PUBLIC _pedometer PUBLIC _p_record PUBLIC _last_hour PUBLIC _last_day PUBLIC _last_month PUBLIC _last_year PUBLIC _fill_hosu_hist_hours PUBLIC _clear_hosu_hist PUBLIC _record_read_msb_lsb PUBLIC _hosu_read_end PUBLIC _hosu_read PUBLIC _get_long_hour @@BITS BSEG _record_read_msb_lsb DBIT @@CNST CSEG MIRRORP _lpf_coeff: DB 01H ; 1 DB 02H ; 2 DB 02H ; 2 DB 03H ; 3 DB 03H ; 3 DB 02H ; 2 DB 00H ; 0 DB 0FEH ; 254 DB 0FBH ; 251 DB 0F7H ; 247 DB 0F3H ; 243 DB 0F0H ; 240 DB 0F0H ; 240 DB 0F3H ; 243 DB 0FAH ; 250 DB 04H ; 4 DB 012H ; 18 DB 025H ; 37 DB 038H ; 56 DB 04DH ; 77 DB 05FH ; 95 DB 06EH ; 110 DB 077H ; 119 DB 07AH ; 122 DB 077H ; 119 DB 06EH ; 110 DB 05FH ; 95 DB 04DH ; 77 DB 038H ; 56 DB 025H ; 37 DB 012H ; 18 DB 04H ; 4 DB 0FAH ; 250 DB 0F3H ; 243 DB 0F0H ; 240 DB 0F0H ; 240 DB 0F3H ; 243 DB 0F7H ; 247 DB 0FBH ; 251 DB 0FEH ; 254 DB 00H ; 0 DB 02H ; 2 DB 03H ; 3 DB 03H ; 3 DB 02H ; 2 DB 02H ; 2 DB 01H ; 1 DB (1) _DAYS_FROM_HNY: DW 00H ; 0 DW 00H ; 0 DW 01FH ; 31 DW 03BH ; 59 DW 05AH ; 90 DW 078H ; 120 DW 097H ; 151 DW 0B5H ; 181 DW 0D4H ; 212 DW 0F3H ; 243 DW 0111H ; 273 DW 0130H ; 304 DW 014EH ; 334 @@R_INIT CSEG UNIT64KP DW 03A98H ; 15000 DW 02AF8H ; 11000 DB 023H ; 35 DB 030H ; 48 DB 012H ; 18 DB 099H ; 153 @@INIT DSEG BASEP ?L0003: DS (2) ?L0004: DS (2) _last_hour: DS (1) _last_day: DS (1) _last_month: DS (1) _last_year: DS (1) @@DATA DSEG BASEP ?L0005: DS (6) ?L0006: DS (2) ?L0007: DS (1) ?L0008: DS (1) ?L0009: DS (2) ?L0010: DS (2) ?L0011: DS (128) ?L0012: DS (1) ?L0013: DS (1) _p_record: DS (1) DS (1) ?L0039: DS (2) ?L0078: DS (1) DS (1) @@R_INIS CSEG UNIT64KP @@INIS DSEG SADDRP @@DATS DSEG SADDRP @@CNSTL CSEG PAGE64KP @@RLINIT CSEG UNIT64KP @@INITL DSEG UNIT64KP @@DATAL DSEG UNIT64KP @@CALT CSEG CALLT0 ; Sub-Routines created by CC78K0R ROM_CODE CSEG BASE bs_S0099: movw _@RTARG0,ax ;[INF] 2, 1 clrw ax ;[INF] 1, 1 movw _@RTARG2,ax ;[INF] 2, 1 ret ;[INF] 1, 6 es_S0099: ROM_CODE CSEG BASE bs_F0097: clrb b ;[INF] 1, 1 addw ax,bc ;[INF] 1, 1 call !_abs ;[INF] 3, 3 movw ax,bc ;[INF] 1, 1 ret ;[INF] 1, 6 es_F0097: ROM_CODE CSEG BASE bs_S0098: movw ax,_@RTARG0 ;[INF] 2, 1 movw _@RTARG4,ax ;[INF] 2, 1 movw ax,_@RTARG2 ;[INF] 2, 1 movw _@RTARG6,ax ;[INF] 2, 1 ret ;[INF] 1, 6 es_S0098: ROM_CODE CSEG BASE bs_S0096: movw bc,_@RTARG6 ;[INF] 2, 1 push bc ;[INF] 1, 1 movw _@RTARG4,ax ;[INF] 2, 1 clrw ax ;[INF] 1, 1 movw _@RTARG6,ax ;[INF] 2, 1 call !@@lsmul ;[INF] 3, 3 pop ax ;[INF] 1, 1 movw _@RTARG6,ax ;[INF] 2, 1 ret ;[INF] 1, 6 es_S0096: ; *** Sub-Routine Information *** ; ; $SUB bs_S0096 ; CODE SIZE= 15 bytes ; ; $SUB bs_F0097 ; CODE SIZE= 7 bytes ; ; $SUB bs_S0098 ; CODE SIZE= 9 bytes ; ; $SUB bs_S0099 ; CODE SIZE= 6 bytes ; End of Sub-Routines ; line 1 : /* ******************************************************** ; line 2 : ; line 3 : ; line 4 : ; line 5 : ; line 6 : ********************************************************* */ ; line 7 : #pragma MUL ; line 8 : #pragma BCD ; line 9 : ; line 10 : #include "incs.h" ; line 11 : #include ; line 12 : ; line 13 : #include "accero.h" ; line 14 : #include "pedometer.h" ; line 15 : ; line 16 : ; line 17 : static void hosu_increment(); ; line 18 : u16 get_long_hour(); ; line 19 : ; line 20 : ; line 21 : ; line 22 : extern u16 pool[]; ; line 23 : ; line 24 : ; line 25 : ; line 26 : /*========================================================= ; line 27 :  歩数計 ; line 28 : ========================================================*/ ; line 29 : void pedometer() ; line 30 : { ROM_CODE CSEG BASE _pedometer: $DGL 1,29 push hl ;[INF] 1, 1 subw sp,#024H ;[INF] 2, 1 movw hl,sp ;[INF] 3, 1 ??bf_pedometer: ; line 31 : static s16 th_H = 15000; // 閾値。暫定。動的変更とかしたい… ; ので変数 ; line 32 : static s16 th_L = 11000; ; line 33 : static u16 acc_norm[3]; // 加速度の大きさのヒストリ。数字が大 ; きい方が古い ; line 34 : static u16 acc_norm_temp; ; line 35 : static u8 interval_hh; // 山-山間の時間。短過ぎたらはじく。 ; line 36 : static u8 time_l; // 前回の極小からの経過時間 ; line 37 : static u16 peak_l; // 谷の深さ ; line 38 : static u16 peak_h; // 山の高さ ; line 39 : static u16 norm_hist[TAP]; ; line 40 : ; line 41 : static u8 hist_indx; ; line 42 : static u8 t_rise; ; line 43 : ; line 44 : signed long filterd; ; line 45 : ; line 46 : u8 i; ; line 47 : ; line 48 : signed long temp1,temp2,temp3; ; line 49 : signed long temp4,temp5,temp6; ; line 50 : ; line 51 : u16 sx16 = abs( (u16)vreg_ctr[VREG_C_ACC_XH] * 256 + vreg_ct ; r[VREG_C_ACC_XL] ); $DGL 0,22 mov a,!_vreg_ctr+70 ;[INF] 3, 1 clrb x ;[INF] 1, 1 mov c,!_vreg_ctr+69 ;[INF] 3, 1 call !bs_F0097 ;[INF] 3, 3 movw [hl+4],ax ; sx16 ;[INF] 2, 1 ; line 52 : u16 sy16 = abs( (u16)vreg_ctr[VREG_C_ACC_YH] * 256 + vreg_ct ; r[VREG_C_ACC_YL] ); $DGL 0,23 mov a,!_vreg_ctr+72 ;[INF] 3, 1 clrb x ;[INF] 1, 1 mov c,!_vreg_ctr+71 ;[INF] 3, 1 call !bs_F0097 ;[INF] 3, 3 movw [hl+2],ax ; sy16 ;[INF] 2, 1 ; line 53 : u16 sz16 = abs( (u16)vreg_ctr[VREG_C_ACC_ZH] * 256 + vreg_ct ; r[VREG_C_ACC_ZL] ); $DGL 0,24 mov a,!_vreg_ctr+74 ;[INF] 3, 1 clrb x ;[INF] 1, 1 mov c,!_vreg_ctr+73 ;[INF] 3, 1 call !bs_F0097 ;[INF] 3, 3 movw [hl],ax ; sz16 ;[INF] 1, 1 ; line 54 : ; line 55 : // ベクトルのノルム ; line 56 : #ifdef _mcu_ ; line 57 : norm_hist[ hist_indx & TAP-1 ] = sqrt( (long)sx16 * ( sx16 / ; 2 ) + ; line 58 : (long)sy16 * ( sy16 / ; 2 ) + ; line 59 : (long)sz16 * ( sz16 / ; 2 ) ; line 60 : ); $DGL 0,31 movw ax,[hl+4] ; sx16 ;[INF] 2, 1 call !bs_S0099 ;[INF] 3, 3 movw ax,[hl+4] ; sx16 ;[INF] 2, 1 shrw ax,1 ;[INF] 2, 1 movw _@RTARG4,ax ;[INF] 2, 1 clrw ax ;[INF] 1, 1 movw _@RTARG6,ax ;[INF] 2, 1 call !@@lsmul ;[INF] 3, 3 call !bs_S0098 ;[INF] 3, 3 movw ax,[hl+2] ; sy16 ;[INF] 2, 1 call !bs_S0099 ;[INF] 3, 3 movw ax,[hl+2] ; sy16 ;[INF] 2, 1 shrw ax,1 ;[INF] 2, 1 movw bc,_@RTARG4 ;[INF] 2, 1 push bc ;[INF] 1, 1 call !bs_S0096 ;[INF] 3, 3 pop ax ;[INF] 1, 1 movw _@RTARG4,ax ;[INF] 2, 1 movw ax,_@RTARG6 ;[INF] 2, 1 call !@@lsadd ;[INF] 3, 3 call !bs_S0098 ;[INF] 3, 3 movw ax,[hl] ; sz16 ;[INF] 1, 1 call !bs_S0099 ;[INF] 3, 3 movw ax,[hl] ; sz16 ;[INF] 1, 1 shrw ax,1 ;[INF] 2, 1 movw bc,_@RTARG4 ;[INF] 2, 1 push bc ;[INF] 1, 1 call !bs_S0096 ;[INF] 3, 3 pop ax ;[INF] 1, 1 movw _@RTARG4,ax ;[INF] 2, 1 movw ax,_@RTARG6 ;[INF] 2, 1 call !@@lsadd ;[INF] 3, 3 call !@@lstof ;[INF] 3, 3 movw bc,_@RTARG2 ;[INF] 2, 1 movw ax,_@RTARG0 ;[INF] 2, 1 call !!_sqrt ;[INF] 4, 3 push bc ;[INF] 1, 1 push de ;[INF] 1, 1 mov a,!?L0012 ; hist_indx ;[INF] 3, 1 and a,#03FH ; 63 ;[INF] 2, 1 clrb x ;[INF] 1, 1 shrw ax,7 ;[INF] 2, 1 addw ax,#loww (?L0011) ; norm_hist ;[INF] 3, 1 movw de,ax ;[INF] 1, 1 pop bc ;[INF] 1, 1 pop ax ;[INF] 1, 1 movw _@RTARG0,ax ;[INF] 2, 1 movw ax,bc ;[INF] 1, 1 movw _@RTARG2,ax ;[INF] 2, 1 bt _@RTARG3.7,$?L0014 ;[INF] 4, 5 call !@@ftolu ;[INF] 3, 3 br $?L0015 ;[INF] 2, 3 ?L0014: call !@@ftols ;[INF] 3, 3 ?L0015: movw ax,_@RTARG0 ;[INF] 2, 1 movw [de],ax ;[INF] 1, 1 ; line 61 : #endif ; line 62 : ; line 63 : #ifdef _pc_ ; line 64 : norm_hist[ hist_indx & TAP-1 ] = normh * 256 + norml; ; line 65 : #endif ; line 66 : ; line 67 : hist_indx += 1; $DGL 0,38 inc !?L0012 ; hist_indx ;[INF] 3, 2 ; line 68 : ; line 69 : // ヒストリにフィルタを掛けて、今回の値を求める ; line 70 : filterd = 0; $DGL 0,41 clrw ax ;[INF] 1, 1 movw [hl+32],ax ; filterd ;[INF] 2, 1 movw [hl+34],ax ; filterd ;[INF] 2, 1 ; line 71 : // for( i = 8; i != 55; i++ ) // 係数が0ばかりのため ; line 72 : for( i = 0; i != 46; i++ ) // 係数テーブルをいじりました。パ ; ラメータ調整時注意 $DGL 0,43 mov [hl+31],a ; i ;[INF] 2, 1 ?L0016: mov a,[hl+31] ; i ;[INF] 2, 1 cmp a,#02EH ; 46 ;[INF] 2, 1 bz $?L0017 ;[INF] 2, 4 ; line 73 : { ??bb00_pedometer: ; line 74 : filterd += (signed long)norm_hist[ ( hist_indx + i ) & T ; AP-1 ] * lpf_coeff[ i ]; $DGL 0,45 mov a,!?L0012 ; hist_indx ;[INF] 3, 1 add a,[hl+31] ; i ;[INF] 2, 1 mov x,a ;[INF] 1, 1 clrb a ;[INF] 1, 1 rolc a,1 ;[INF] 2, 1 mov a,x ;[INF] 1, 1 and a,#03FH ; 63 ;[INF] 2, 1 clrb x ;[INF] 1, 1 shrw ax,7 ;[INF] 2, 1 movw bc,ax ;[INF] 1, 1 movw ax,?L0011[bc] ; norm_hist ;[INF] 3, 1 call !bs_S0099 ;[INF] 3, 3 mov a,[hl+31] ; i ;[INF] 2, 1 mov b,a ;[INF] 1, 1 mov a,_lpf_coeff[b] ;[INF] 3, 1 sarw ax,8 ;[INF] 2, 1 movw _@RTARG4,ax ;[INF] 2, 1 mov x,a ;[INF] 1, 1 movw _@RTARG6,ax ;[INF] 2, 1 call !@@lsmul ;[INF] 3, 3 movw ax,[hl+32] ; filterd ;[INF] 2, 1 movw _@RTARG4,ax ;[INF] 2, 1 movw ax,[hl+34] ; filterd ;[INF] 2, 1 call !@@lsadd ;[INF] 3, 3 movw ax,_@RTARG2 ;[INF] 2, 1 movw [hl+34],ax ; filterd ;[INF] 2, 1 movw ax,_@RTARG0 ;[INF] 2, 1 movw [hl+32],ax ; filterd ;[INF] 2, 1 ??eb00_pedometer: ; line 75 : } $DGL 0,46 inc [hl+31] ; i ;[INF] 3, 2 br $?L0016 ;[INF] 2, 3 ?L0017: ; line 76 : ; line 77 : filterd += (4096)*512; ; line 78 : acc_norm_temp = (s16)( filterd /1024 & 0xFFFF ); // ←FIL_CO ; EFF_QUANTから正規化 $DGL 0,49 movw ax,[hl+32] ; filterd ;[INF] 2, 1 movw _@RTARG0,ax ;[INF] 2, 1 movw ax,[hl+34] ; filterd ;[INF] 2, 1 movw _@RTARG2,ax ;[INF] 2, 1 movw _@RTARG4,#0400H ; 1024 ;[INF] 4, 1 clrw ax ;[INF] 1, 1 call !@@lsdiv ;[INF] 3, 3 movw _@RTARG4,#0FFFFH ; -1 ;[INF] 4, 1 clrw ax ;[INF] 1, 1 call !@@lsband ;[INF] 3, 3 movw ax,_@RTARG0 ;[INF] 2, 1 movw !?L0006,ax ; acc_norm_temp ;[INF] 3, 1 ; line 79 : /* ; line 80 : if( acc_norm[0] < acc_norm_temp ) ; line 81 : { ; line 82 : t_rise += 1; ; line 83 : if( t_rise == 0 ) ; line 84 : t_rise == 254; ; line 85 : } ; line 86 : else ; line 87 : { ; line 88 : t_rise = 0; ; line 89 : } ; line 90 : */ ; line 91 : if( acc_norm[0] != acc_norm_temp ) $DGL 0,62 movw ax,!?L0005 ; acc_norm ;[INF] 3, 1 cmpw ax,!?L0006 ; acc_norm_temp ;[INF] 3, 1 bz $?L0019 ;[INF] 2, 4 ; line 92 : { ??bb01_pedometer: ; line 93 : acc_norm[2] = acc_norm[1]; // ヒストリ $DGL 0,64 movw ax,!?L0005+2 ; acc_norm ;[INF] 3, 1 movw !?L0005+4,ax ; acc_norm ;[INF] 3, 1 ; line 94 : acc_norm[1] = acc_norm[0]; $DGL 0,65 movw ax,!?L0005 ; acc_norm ;[INF] 3, 1 movw !?L0005+2,ax ; acc_norm ;[INF] 3, 1 ; line 95 : acc_norm[0] = acc_norm_temp; $DGL 0,66 movw ax,!?L0006 ; acc_norm_temp ;[INF] 3, 1 movw !?L0005,ax ; acc_norm ;[INF] 3, 1 ??eb01_pedometer: ; line 96 : } ?L0019: ; line 97 : ; line 98 : if( acc_norm[2] <= acc_norm[1] && acc_norm[1] > acc_norm[0] ; line 99 : && acc_norm[0] > th_H ) $DGL 0,70 movw ax,!?L0005+2 ; acc_norm ;[INF] 3, 1 cmpw ax,!?L0005+4 ; acc_norm ;[INF] 3, 1 bc $?L0021 ;[INF] 2, 4 movw ax,!?L0005 ; acc_norm ;[INF] 3, 1 cmpw ax,!?L0005+2 ; acc_norm ;[INF] 3, 1 bnc $?L0021 ;[INF] 2, 4 movw ax,!?L0003 ; th_H ;[INF] 3, 1 cmpw ax,!?L0005 ; acc_norm ;[INF] 3, 1 bnc $?L0021 ;[INF] 2, 4 ; line 100 : // 極大で、閾値を超えていた ; line 101 : { ??bb02_pedometer: ; line 102 : if( 21 < interval_hh ) $DGL 0,73 cmp !?L0007,#016H ; interval_hh,22 ;[INF] 4, 1 bc $?L0023 ;[INF] 2, 4 ; line 103 : // 前回の極大からの間隔がほどよい ; line 104 : { ??bb03_pedometer: ; line 105 : if(( interval_hh < 160 ) && ( time_l < interval_hh ) ; ) $DGL 0,76 cmp !?L0007,#0A0H ; interval_hh,160 ;[INF] 4, 1 bnc $?L0027 ;[INF] 2, 4 mov a,!?L0008 ; time_l ;[INF] 3, 1 cmp a,!?L0007 ; interval_hh ;[INF] 3, 1 bnc $?L0027 ;[INF] 2, 4 ; line 106 : // 谷を挟んでいる ; line 107 : { ??bb04_pedometer: ; line 108 : if( acc_norm[0] - peak_l > 4200 ){ $DGL 0,79 movw ax,!?L0005 ; acc_norm ;[INF] 3, 1 subw ax,!?L0009 ; peak_l ;[INF] 3, 1 cmpw ax,#01069H ; 4201 ;[INF] 3, 1 skc ;[INF] 2, 1 ??bb05_pedometer: ; line 109 : // 一歩増えました ; line 110 : hosu_increment(); $DGL 0,81 call !_hosu_increment ;[INF] 3, 3 ??eb05_pedometer: ; line 111 : } ?L0027: ; line 112 : } ??eb04_pedometer: ; line 113 : interval_hh = 0; $DGL 0,84 clrb !?L0007 ; interval_hh ;[INF] 3, 1 ??eb03_pedometer: ; line 114 : } ?L0023: ; line 115 : if( acc_norm[0] > 18000 ) $DGL 0,86 movw ax,!?L0005 ; acc_norm ;[INF] 3, 1 cmpw ax,#04651H ; 18001 ;[INF] 3, 1 bc $?L0029 ;[INF] 2, 4 ; line 116 : { ??bb06_pedometer: ; line 117 : th_L = acc_norm[0] - 10000; $DGL 0,88 movw ax,!?L0005 ; acc_norm ;[INF] 3, 1 subw ax,#02710H ; 10000 ;[INF] 3, 1 movw !?L0004,ax ; th_L ;[INF] 3, 1 ??eb06_pedometer: ; line 118 : } $DGL 0,89 br $?L0022 ;[INF] 2, 3 ?L0029: ; line 119 : else ; line 120 : { ??bb07_pedometer: ; line 121 : th_L = 11000; $DGL 0,92 movw ax,#02AF8H ; 11000 ;[INF] 3, 1 movw !?L0004,ax ; th_L ;[INF] 3, 1 ??eb07_pedometer: ; line 122 : } ; line 123 : } $DGL 0,94 ??eb02_pedometer: br $?L0022 ;[INF] 2, 3 ?L0021: ; line 124 : else ; line 125 : { ??bb08_pedometer: ; line 126 : interval_hh += ( interval_hh != 255 ) ? 1: 0; // 飽和加算 ; って楽に書けたらいいのに $DGL 0,97 cmp !?L0007,#0FFH ; interval_hh,255 ;[INF] 4, 1 bz $?L0031 ;[INF] 2, 4 onew ax ;[INF] 1, 1 br $?L0032 ;[INF] 2, 3 ?L0031: clrw ax ;[INF] 1, 1 ?L0032: movw de,#loww (?L0007) ; interval_hh ;[INF] 3, 1 mov a,[de] ;[INF] 1, 1 add a,x ;[INF] 2, 1 mov [de],a ;[INF] 1, 1 ??eb08_pedometer: ; line 127 : } ?L0022: ; line 128 : ; line 129 : // (2) 直近の極小からの時間 ; line 130 : if( acc_norm[2] >= acc_norm[1] && acc_norm[1] < acc_norm[0] ; line 131 : && acc_norm[0] < th_L ) $DGL 0,102 movw ax,!?L0005+4 ; acc_norm ;[INF] 3, 1 cmpw ax,!?L0005+2 ; acc_norm ;[INF] 3, 1 bc $?L0033 ;[INF] 2, 4 movw ax,!?L0005+2 ; acc_norm ;[INF] 3, 1 cmpw ax,!?L0005 ; acc_norm ;[INF] 3, 1 bnc $?L0033 ;[INF] 2, 4 movw ax,!?L0005 ; acc_norm ;[INF] 3, 1 cmpw ax,!?L0004 ; th_L ;[INF] 3, 1 bnc $?L0033 ;[INF] 2, 4 ; line 132 : { ??bb09_pedometer: ; line 133 : // 極小を検出 ; line 134 : time_l = 0; $DGL 0,105 clrb !?L0008 ; time_l ;[INF] 3, 1 ; line 135 : peak_l = acc_norm[0]; $DGL 0,106 movw ax,!?L0005 ; acc_norm ;[INF] 3, 1 movw !?L0009,ax ; peak_l ;[INF] 3, 1 ??eb09_pedometer: ; line 136 : } $DGL 0,107 br $?L0034 ;[INF] 2, 3 ?L0033: ; line 137 : else ; line 138 : { ??bb0A_pedometer: ; line 139 : time_l += ( time_l != 255 ) ? 1: 0; $DGL 0,110 cmp !?L0008,#0FFH ; time_l,255 ;[INF] 4, 1 bz $?L0035 ;[INF] 2, 4 onew ax ;[INF] 1, 1 br $?L0036 ;[INF] 2, 3 ?L0035: clrw ax ;[INF] 1, 1 ?L0036: movw de,#loww (?L0008) ; time_l ;[INF] 3, 1 mov a,[de] ;[INF] 1, 1 add a,x ;[INF] 2, 1 mov [de],a ;[INF] 1, 1 ??eb0A_pedometer: ; line 140 : } ?L0034: ; line 141 : ; line 142 : { ??bb0B_pedometer: ??eb0B_pedometer: ; line 143 : /* ; line 144 : static u8 i = 0; ; line 145 : ; line 146 : vreg_ctr[VREG_C_FREE_0] = i++; ; line 147 : ; line 148 : vreg_ctr[VREG_C_FREE_1] = (u8)( acc_norm[0] / 256 & 0x00 ; FF ); ; line 149 : vreg_ctr[VREG_C_FREE_2] = (u8)( acc_norm[0] & 0x00FF ); ; line 150 : ; line 151 : vreg_ctr[VREG_C_FREE_3] = (u8)( norm_hist[ hist_indx -1 ; & TAP-1 ] / 256 & 0xFF ); ; line 152 : vreg_ctr[VREG_C_FREE_4] = (u8)( norm_hist[ hist_indx -1 ; & TAP-1 ] & 0xFF ); ; line 153 : ; line 154 : vreg_ctr[VREG_C_FREE_5] = interval_hh; ; line 155 : vreg_ctr[VREG_C_FREE_6] = time_l; ; line 156 : ; line 157 : vreg_ctr[VREG_C_FREE_7] = vreg_ctr[ VREG_C_ACC_HOSU_L ]; ; line 158 : vreg_ctr[VREG_C_FREE_8] = (u8)( peak_l / 256 & 0x00FF ); ; line 159 : vreg_ctr[VREG_C_FREE_9] = (u8)( peak_l & 0x00FF ); ; line 160 : // vreg_ctr[VREG_C_FREE_A] = (u8)( norm_avg[0] / 256 & 0x ; 00FF ); ; line 161 : // vreg_ctr[VREG_C_FREE_B] = (u8)( norm_avg[0] & ; 0x00FF ); ; line 162 : */ ; line 163 : } ; line 164 : } $DGL 0,135 ??ef_pedometer: addw sp,#024H ;[INF] 2, 1 pop hl ;[INF] 1, 1 ret ;[INF] 1, 6 ??ee_pedometer: ; line 165 : ; line 166 : ; line 167 : ; line 168 : /*========================================================= ; line 169 :  歩数+1 ; line 170 :   累積をインクリメント ; line 171 :  履歴を更新 ; line 172 : ========================================================*/ ; line 173 : u8 p_record; ; line 174 : u8 last_hour = 0x23; // 履歴の最新は何時? ; line 175 : u8 last_day = 0x30; ; line 176 : u8 last_month = 0x12; ; line 177 : u8 last_year = 0x99; ; line 178 : ; line 179 : #define HOSU_NODATA 0xFFFF ; line 180 : #define HOSU_MAX 0xFFFE ; line 181 : ; line 182 : static void hosu_increment() ; line 183 : { _hosu_increment: $DGL 1,107 push hl ;[INF] 1, 1 subw sp,#06H ;[INF] 2, 1 movw hl,sp ;[INF] 3, 1 ??bf_hosu_increment: ; line 184 : static u16 last_hour_fny; ; line 185 : ; line 186 : // 累積の更新 // ; line 187 : // いろいろ失敗した... ; line 188 : if( ++vreg_ctr[ VREG_C_ACC_HOSU_L ] == 0 ) $DGL 0,6 inc !_vreg_ctr+75 ;[INF] 3, 2 cmp0 !_vreg_ctr+75 ;[INF] 3, 1 bnz $?L0044 ;[INF] 2, 4 ; line 189 : { ??bb00_hosu_increment: ; line 190 : if( ++vreg_ctr[ VREG_C_ACC_HOSU_M ] == 0 ) $DGL 0,8 inc !_vreg_ctr+76 ;[INF] 3, 2 cmp0 !_vreg_ctr+76 ;[INF] 3, 1 bnz $?L0044 ;[INF] 2, 4 ; line 191 : { ??bb01_hosu_increment: ; line 192 : if( ++vreg_ctr[ VREG_C_ACC_HOSU_H ] == 0 ){ $DGL 0,10 inc !_vreg_ctr+77 ;[INF] 3, 2 cmp0 !_vreg_ctr+77 ;[INF] 3, 1 bnz $?L0044 ;[INF] 2, 4 ??bb02_hosu_increment: ; line 193 : vreg_ctr[ VREG_C_ACC_HOSU_L ] = 255; // カンスト ; orz $DGL 0,11 mov !_vreg_ctr+75,#0FFH ; 255 ;[INF] 4, 1 ; line 194 : vreg_ctr[ VREG_C_ACC_HOSU_M ] = 255; $DGL 0,12 mov !_vreg_ctr+76,#0FFH ; 255 ;[INF] 4, 1 ; line 195 : vreg_ctr[ VREG_C_ACC_HOSU_H ] = 255; $DGL 0,13 mov !_vreg_ctr+77,#0FFH ; 255 ;[INF] 4, 1 ??eb02_hosu_increment: ; line 196 : } ?L0044: ??eb01_hosu_increment: ; line 197 : } ??eb00_hosu_increment: ; line 198 : } ; line 199 : ; line 200 : { ??bb03_hosu_increment: ; line 201 : // 毎時履歴の更新 ///////////////////////////// ; line 202 : // 空白の時間を考慮する。1時間以上放置されたなど。 ; line 203 : u16 now_hour; ; line 204 : u8 now_year; ; line 205 : ; line 206 : // 時計を止める必要が有るので↓は一気に行って下さい ; line 207 : DI(); $DGL 0,25 di ;[INF] 3, 4 ; line 208 : RWAIT = 1; $DGL 0,26 set1 RTCC1.0 ;[INF] 3, 2 ; line 209 : while( !RWST ){;} $DGL 0,27 ?L0046: bt RTCC1.1,$?L0047 ;[INF] 4, 5 ??bb04_hosu_increment: ??eb04_hosu_increment: br $?L0046 ;[INF] 2, 3 ?L0047: ; line 210 : now_year = bcdtob( YEAR ); $DGL 0,28 mov a,YEAR ;[INF] 2, 1 call !@@bcdtob ;[INF] 3, 3 mov [hl+3],a ; now_year ;[INF] 2, 1 ; line 211 : last_hour = HOUR; // 履歴読み出し時に使用。BCDのまま ; でよい $DGL 0,29 mov a,HOUR ;[INF] 2, 1 mov !_last_hour,a ;[INF] 3, 1 ; line 212 : last_day = DAY; $DGL 0,30 mov a,DAY ;[INF] 2, 1 mov !_last_day,a ;[INF] 3, 1 ; line 213 : last_month = MONTH; $DGL 0,31 mov a,MONTH ;[INF] 2, 1 mov !_last_month,a ;[INF] 3, 1 ; line 214 : now_hour = get_long_hour(); $DGL 0,32 call !_get_long_hour ;[INF] 3, 3 movw ax,bc ;[INF] 1, 1 movw [hl+4],ax ; now_hour ;[INF] 2, 1 ; line 215 : // RWAIT = 0; ↑で行っています ; line 216 : // EI(); 〃 ; line 217 : ; line 218 : // 歩数計が止まっていた時間を考慮して必要なら進める // ; line 219 : if( last_year == now_year ) $DGL 0,37 mov a,!_last_year ;[INF] 3, 1 cmp a,[hl+3] ; now_year ;[INF] 2, 1 bnz $?L0048 ;[INF] 2, 4 ; line 220 : { ??bb05_hosu_increment: ; line 221 : if( now_hour > last_hour_fny ) $DGL 0,39 movw ax,!?L0039 ; last_hour_fny ;[INF] 3, 1 cmpw ax,[hl+4] ; now_hour ;[INF] 3, 1 bnc $?L0056 ;[INF] 2, 4 ; line 222 : { ??bb06_hosu_increment: ; line 223 : fill_hosu_hist_hours( now_hour - last_hour_fny ) ; ; $DGL 0,41 movw ax,[hl+4] ; now_hour ;[INF] 2, 1 subw ax,!?L0039 ; last_hour_fny ;[INF] 3, 1 call !_fill_hosu_hist_hours ;[INF] 3, 3 ??eb06_hosu_increment: ; line 224 : } ; line 225 : } $DGL 0,43 ??eb05_hosu_increment: br $?L0056 ;[INF] 2, 3 ?L0048: ; line 226 : else if( last_year == ( now_year -1 ) ) $DGL 0,44 mov a,[hl+3] ; now_year ;[INF] 2, 1 shrw ax,8 ;[INF] 2, 1 decw ax ;[INF] 1, 1 movw bc,ax ;[INF] 1, 1 mov x,!_last_year ;[INF] 3, 1 clrb a ;[INF] 1, 1 cmpw ax,bc ;[INF] 1, 1 bnz $?L0052 ;[INF] 2, 4 ; line 227 : { ??bb07_hosu_increment: ; line 228 : // 年をまたいでいるとき ; line 229 : u16 temp_hours = ( ( 365 + (( now_year & 0x03 ) == ; 1 ? 1: 0 )) * 24 ) - last_hour_fny + now_hour; $DGL 0,47 mov a,[hl+3] ; now_year ;[INF] 2, 1 and a,#03H ; 3 ;[INF] 2, 1 dec a ;[INF] 1, 1 bnz $?L0054 ;[INF] 2, 4 onew ax ;[INF] 1, 1 br $?L0055 ;[INF] 2, 3 ?L0054: clrw ax ;[INF] 1, 1 ?L0055: addw ax,#016DH ; 365 ;[INF] 3, 1 shlw ax,3 ;[INF] 2, 1 movw bc,ax ;[INF] 1, 1 addw ax,ax ;[INF] 1, 1 addw ax,bc ;[INF] 1, 1 subw ax,!?L0039 ; last_hour_fny ;[INF] 3, 1 addw ax,[hl+4] ; now_hour ;[INF] 3, 1 movw [hl],ax ; temp_hours ;[INF] 1, 1 ; line 230 : fill_hosu_hist_hours( temp_hours ); $DGL 0,48 call !_fill_hosu_hist_hours ;[INF] 3, 3 ??eb07_hosu_increment: ; line 231 : } $DGL 0,49 br $?L0056 ;[INF] 2, 3 ?L0052: ; line 232 : else if( last_year < now_year ) $DGL 0,50 mov a,!_last_year ;[INF] 3, 1 cmp a,[hl+3] ; now_year ;[INF] 2, 1 bnc $?L0056 ;[INF] 2, 4 ; line 233 : { ??bb08_hosu_increment: ; line 234 : // 数年放置 ; line 235 : fill_hosu_hist_hours( 0 ); $DGL 0,53 clrw ax ;[INF] 1, 1 call !_fill_hosu_hist_hours ;[INF] 3, 3 ??eb08_hosu_increment: ; line 236 : } ?L0056: ; line 237 : else ; line 238 : { ??bb09_hosu_increment: ??eb09_hosu_increment: ; line 239 : // カレンダーが巻き戻るなど ; line 240 : // ノーケアでよい ; line 241 : } ; line 242 : last_year = now_year; $DGL 0,60 mov a,[hl+3] ; now_year ;[INF] 2, 1 mov !_last_year,a ;[INF] 3, 1 ; line 243 : last_hour_fny = now_hour; $DGL 0,61 movw ax,[hl+4] ; now_hour ;[INF] 2, 1 movw !?L0039,ax ; last_hour_fny ;[INF] 3, 1 ; line 244 : ; line 245 : // 実際にインクリメント ; line 246 : if( pool[ p_record ] == HOSU_NODATA ) $DGL 0,64 mov x,!_p_record ;[INF] 3, 1 clrb a ;[INF] 1, 1 addw ax,ax ;[INF] 1, 1 addw ax,#loww (_pool) ;[INF] 3, 1 movw de,ax ;[INF] 1, 1 movw ax,[de] ;[INF] 1, 1 cmpw ax,#0FFFFH ; -1 ;[INF] 3, 1 bnz $?L0058 ;[INF] 2, 4 ; line 247 : { ??bb0A_hosu_increment: ; line 248 : pool[ p_record ] = 1; $DGL 0,66 onew ax ;[INF] 1, 1 movw [de],ax ;[INF] 1, 1 ??eb0A_hosu_increment: ; line 249 : } $DGL 0,67 br $?L0060 ;[INF] 2, 3 ?L0058: ; line 250 : else if( pool[ p_record ] != HOSU_MAX ) $DGL 0,68 mov x,!_p_record ;[INF] 3, 1 clrb a ;[INF] 1, 1 addw ax,ax ;[INF] 1, 1 addw ax,#loww (_pool) ;[INF] 3, 1 movw de,ax ;[INF] 1, 1 movw ax,[de] ;[INF] 1, 1 cmpw ax,#0FFFEH ; -2 ;[INF] 3, 1 bz $?L0060 ;[INF] 2, 4 ; line 251 : { ??bb0B_hosu_increment: ; line 252 : pool[ p_record ] += 1; $DGL 0,70 movw ax,[de] ;[INF] 1, 1 incw ax ;[INF] 1, 1 movw [de],ax ;[INF] 1, 1 ??eb0B_hosu_increment: ; line 253 : } ?L0060: ??eb03_hosu_increment: ; line 254 : } ; line 255 : } $DGL 0,73 ??ef_hosu_increment: addw sp,#06H ;[INF] 2, 1 pop hl ;[INF] 1, 1 ret ;[INF] 1, 6 ??ee_hosu_increment: ; line 256 : ; line 257 : ; line 258 : ; line 259 : /* ======================================================== ; line 260 : 空白の時間を適切に0にして、 ; line 261 : 今を含む1時間のデータを書く位置にポインタ?を進める ; line 262 : ======================================================== */ ; line 263 : void fill_hosu_hist_hours( u16 hours ) ; line 264 : { _fill_hosu_hist_hours: $DGL 1,168 push hl ;[INF] 1, 1 movw hl,ax ;[INF] 1, 1 ??bf_fill_hosu_hist_hours: ; line 265 : if( hours > 255 ) $DGL 0,2 movw ax,hl ;[INF] 1, 1 cmpw ax,#0100H ; 256 ;[INF] 3, 1 bc $?L0064 ;[INF] 2, 4 ; line 266 : { ??bb00_fill_hosu_hist_hours: ; line 267 : hours = 0; $DGL 0,4 clrw ax ;[INF] 1, 1 movw hl,ax ;[INF] 1, 1 ??eb00_fill_hosu_hist_hours: ; line 268 : } ?L0064: ; line 269 : ; line 270 : // 空白の数時間の設定 ; line 271 : do ; line 272 : { ??bb01_fill_hosu_hist_hours: ; line 273 : p_record += 1; $DGL 0,10 inc !_p_record ;[INF] 3, 2 ; line 274 : pool[ p_record ] = 0; $DGL 0,11 mov c,!_p_record ;[INF] 3, 1 clrb b ;[INF] 1, 1 shlw bc,1 ;[INF] 2, 1 clrw ax ;[INF] 1, 1 movw _pool[bc],ax ;[INF] 3, 1 ; line 275 : hours -= 1; $DGL 0,12 decw hl ;[INF] 1, 1 ??eb01_fill_hosu_hist_hours: ; line 276 : } ; line 277 : while( hours != 0 ); $DGL 0,14 clrw ax ;[INF] 1, 1 cmpw ax,hl ;[INF] 1, 1 bnz $?L0064 ;[INF] 2, 4 ; line 278 : } $DGL 0,15 ??ef_fill_hosu_hist_hours: pop hl ;[INF] 1, 1 ret ;[INF] 1, 6 ??ee_fill_hosu_hist_hours: ; line 279 : ; line 280 : ; line 281 : ; line 282 : /* ======================================================== ; line 283 : 空白の時間を適切に0にして、 ; line 284 : 今を含む1時間のデータを書く位置にポインタ?を進める ; line 285 : ======================================================== */ ; line 286 : void clear_hosu_hist() ; line 287 : { _clear_hosu_hist: $DGL 1,183 push hl ;[INF] 1, 1 ??bf_clear_hosu_hist: ; line 288 : u8 hours = 0; $DGL 0,2 mov l,#00H ; 0 ;[INF] 2, 1 ; line 289 : // 空白の数時間の設定 ; line 290 : do ?L0071: ; line 291 : { ??bb00_clear_hosu_hist: ; line 292 : pool[ hours ] = 0xFFFF; $DGL 0,6 mov a,l ;[INF] 1, 1 clrb x ;[INF] 1, 1 shrw ax,7 ;[INF] 2, 1 movw bc,ax ;[INF] 1, 1 clrw ax ;[INF] 1, 1 decw ax ;[INF] 1, 1 movw _pool[bc],ax ;[INF] 3, 1 ; line 293 : hours -= 1; $DGL 0,7 dec l ;[INF] 1, 1 ??eb00_clear_hosu_hist: ; line 294 : } ; line 295 : while( hours != 0 ); $DGL 0,9 mov a,l ;[INF] 1, 1 cmp0 a ;[INF] 1, 1 bnz $?L0071 ;[INF] 2, 4 ; line 296 : vreg_ctr[ VREG_C_ACC_HOSU_L ] = 0; $DGL 0,10 clrb !_vreg_ctr+75 ;[INF] 3, 1 ; line 297 : vreg_ctr[ VREG_C_ACC_HOSU_M ] = 0; $DGL 0,11 clrb !_vreg_ctr+76 ;[INF] 3, 1 ; line 298 : vreg_ctr[ VREG_C_ACC_HOSU_H ] = 0; $DGL 0,12 clrb !_vreg_ctr+77 ;[INF] 3, 1 ; line 299 : } $DGL 0,13 ??ef_clear_hosu_hist: pop hl ;[INF] 1, 1 ret ;[INF] 1, 6 ??ee_clear_hosu_hist: ; line 300 : ; line 301 : ; line 302 : extern u8 iic_burst_state; ; line 303 : bit record_read_msb_lsb; ; line 304 : ; line 305 : /* ======================================================== ; line 306 : 歩数計ヒストリ読み出しの後処理(初期化) ; line 307 : 読み出しポインタのクリア ; line 308 : ======================================================== */ ; line 309 : void hosu_read_end( ) ; line 310 : { _hosu_read_end: $DGL 1,194 ??bf_hosu_read_end: ; line 311 : record_read_msb_lsb = 0; $DGL 0,2 clr1 _record_read_msb_lsb ;[INF] 3, 2 ; line 312 : } $DGL 0,3 ??ef_hosu_read_end: ret ;[INF] 1, 6 ??ee_hosu_read_end: ; line 313 : ; line 314 : ; line 315 : /* ======================================================== ; line 316 : 歩数計のヒストリを返す。 ; line 317 : 1回呼ぶ度に、ヒストリの下位、上位、一時間遡って下位上位... ; line 318 : ======================================================== */ ; line 319 : u8 hosu_read( ) ; line 320 : { _hosu_read: $DGL 1,200 push hl ;[INF] 1, 1 subw sp,#04H ;[INF] 2, 1 movw hl,sp ;[INF] 3, 1 ??bf_hosu_read: ; line 321 : u8 dat; ; line 322 : u16 temp; ; line 323 : static u8 p_record_buffer; ; line 324 : ; line 325 : switch( iic_burst_state ){ $DGL 0,6 mov x,!_iic_burst_state ;[INF] 3, 1 clrb a ;[INF] 1, 1 onew bc ;[INF] 1, 1 subw ax,#00H ; 0 ;[INF] 3, 1 bz $?L0080 ;[INF] 2, 4 subw ax,bc ;[INF] 1, 1 bz $?L0081 ;[INF] 2, 4 subw ax,bc ;[INF] 1, 1 bz $?L0082 ;[INF] 2, 4 subw ax,bc ;[INF] 1, 1 bz $?L0083 ;[INF] 2, 4 subw ax,bc ;[INF] 1, 1 bz $?L0084 ;[INF] 2, 4 subw ax,bc ;[INF] 1, 1 bz $?L0085 ;[INF] 2, 4 br $?L0086 ;[INF] 2, 3 ??bb00_hosu_read: ; line 326 : case( 0 ): ?L0080: ; line 327 : p_record_buffer = p_record; $DGL 0,8 mov a,!_p_record ;[INF] 3, 1 mov !?L0078,a ; p_record_buffer ;[INF] 3, 1 ; line 328 : iic_burst_state += 1; $DGL 0,9 inc !_iic_burst_state ;[INF] 3, 2 ; line 329 : return( last_hour ); $DGL 0,10 mov x,!_last_hour ;[INF] 3, 1 clrb a ;[INF] 1, 1 movw bc,ax ;[INF] 1, 1 br $?L0079 ;[INF] 2, 3 ; line 330 : ; line 331 : case( 1 ): ?L0081: ; line 332 : iic_burst_state += 1; $DGL 0,13 inc !_iic_burst_state ;[INF] 3, 2 ; line 333 : return( last_day ); $DGL 0,14 mov x,!_last_day ;[INF] 3, 1 clrb a ;[INF] 1, 1 movw bc,ax ;[INF] 1, 1 br $?L0079 ;[INF] 2, 3 ; line 334 : ; line 335 : case( 2 ): ?L0082: ; line 336 : iic_burst_state += 1; $DGL 0,17 inc !_iic_burst_state ;[INF] 3, 2 ; line 337 : return( last_month ); $DGL 0,18 mov x,!_last_month ;[INF] 3, 1 clrb a ;[INF] 1, 1 movw bc,ax ;[INF] 1, 1 br $?L0079 ;[INF] 2, 3 ; line 338 : ; line 339 : case( 3 ): ?L0083: ; line 340 : iic_burst_state += 1; $DGL 0,21 inc !_iic_burst_state ;[INF] 3, 2 ; line 341 : return( btobcd(last_year) ); $DGL 0,22 mov a,!_last_year ;[INF] 3, 1 call !@@bbcd ;[INF] 3, 3 shrw ax,8 ;[INF] 2, 1 movw bc,ax ;[INF] 1, 1 br $?L0079 ;[INF] 2, 3 ; line 342 : ; line 343 : case( 4 ): ?L0084: ; line 344 : iic_burst_state += 1; $DGL 0,25 inc !_iic_burst_state ;[INF] 3, 2 ; line 345 : return( 0x55 ); // reserved dummy $DGL 0,26 movw bc,#055H ; 85 ;[INF] 3, 1 br $?L0079 ;[INF] 2, 3 ; line 346 : ; line 347 : case( 5 ): ?L0085: ; line 348 : iic_burst_state += 1; $DGL 0,29 inc !_iic_burst_state ;[INF] 3, 2 ; line 349 : return( 0xAA ); // reserved. dummy $DGL 0,30 movw bc,#0AAH ; 170 ;[INF] 3, 1 br $?L0079 ;[INF] 2, 3 ; line 350 : ; line 351 : default: ?L0086: ; line 352 : temp = pool[ p_record_buffer ]; $DGL 0,33 mov c,!?L0078 ; p_record_buffer ;[INF] 3, 1 clrb b ;[INF] 1, 1 shlw bc,1 ;[INF] 2, 1 movw ax,_pool[bc] ;[INF] 3, 1 movw [hl],ax ; temp ;[INF] 1, 1 ; line 353 : if( record_read_msb_lsb == 0 ) $DGL 0,34 bt _record_read_msb_lsb,$?L0089 ;[INF] 4, 5 ; line 354 : { ??bb01_hosu_read: ; line 355 : dat = (u8)( temp & 0x00FF ); $DGL 0,36 mov a,[hl] ; temp ;[INF] 1, 1 mov [hl+3],a ; dat ;[INF] 2, 1 ??eb01_hosu_read: ; line 356 : } $DGL 0,37 br $?L0090 ;[INF] 2, 3 ?L0089: ; line 357 : else ; line 358 : { ??bb02_hosu_read: ; line 359 : dat = (u8)(( temp >> 8 ) & 0x00FF ); $DGL 0,40 mov a,[hl+1] ; temp ;[INF] 2, 1 mov [hl+3],a ; dat ;[INF] 2, 1 ; line 360 : p_record_buffer -= 1; $DGL 0,41 dec !?L0078 ; p_record_buffer ;[INF] 3, 2 ??eb02_hosu_read: ; line 361 : } ?L0090: ; line 362 : record_read_msb_lsb += 1; $DGL 0,43 set1 CY ;[INF] 2, 1 xor1 CY,_record_read_msb_lsb ;[INF] 3, 1 rolc a,1 ;[INF] 2, 1 rorc a,1 ;[INF] 2, 1 mov1 _record_read_msb_lsb,CY ;[INF] 3, 2 ; line 363 : return( dat ); $DGL 0,44 mov a,[hl+3] ; dat ;[INF] 2, 1 shrw ax,8 ;[INF] 2, 1 movw bc,ax ;[INF] 1, 1 ??eb00_hosu_read: ; line 364 : } ?L0079: ; line 365 : } $DGL 0,46 ??ef_hosu_read: addw sp,#04H ;[INF] 2, 1 pop hl ;[INF] 1, 1 ret ;[INF] 1, 6 ??ee_hosu_read: ; line 366 : ; line 367 : ; line 368 : ; line 369 : /* ======================================================== ; line 370 : 今年の元旦からの経過時間(hour)を返す。 ; line 371 : 引数 無し ; line 372 : 返値 u16 long_hour ; line 373 : ======================================================== */ ; line 374 : static const u16 DAYS_FROM_HNY[] = { ; line 375 : 0, ; line 376 : 0, 31, 31+28, 59+31, 90+30, ; line 377 : 120+31, 151+30, 181+31, 212+31, 243+30, ; line 378 : 273+31, 304+30 }; ; line 379 : ; line 380 : u16 get_long_hour() ; line 381 : { _get_long_hour: $DGL 1,223 push hl ;[INF] 1, 1 subw sp,#06H ;[INF] 2, 1 movw hl,sp ;[INF] 3, 1 ??bf_get_long_hour: ; line 382 : u16 long_hour; ; line 383 : u8 year_hex; ; line 384 : u8 month_hex; ; line 385 : u8 day_hex; ; line 386 : u8 hour_hex; ; line 387 : ; line 388 : year_hex = bcdtob( YEAR ); $DGL 0,8 mov a,YEAR ;[INF] 2, 1 call !@@bcdtob ;[INF] 3, 3 mov [hl+3],a ; year_hex ;[INF] 2, 1 ; line 389 : month_hex = bcdtob( MONTH ); $DGL 0,9 mov a,MONTH ;[INF] 2, 1 call !@@bcdtob ;[INF] 3, 3 mov [hl+2],a ; month_hex ;[INF] 2, 1 ; line 390 : day_hex = bcdtob( DAY ); $DGL 0,10 mov a,DAY ;[INF] 2, 1 call !@@bcdtob ;[INF] 3, 3 mov [hl+1],a ; day_hex ;[INF] 2, 1 ; line 391 : hour_hex = bcdtob( HOUR ); $DGL 0,11 mov a,HOUR ;[INF] 2, 1 call !@@bcdtob ;[INF] 3, 3 mov [hl],a ; hour_hex ;[INF] 1, 1 ; line 392 : ; line 393 : RWAIT = 0; $DGL 0,13 clr1 RTCC1.0 ;[INF] 3, 2 ; line 394 : EI(); $DGL 0,14 ei ;[INF] 3, 4 ; line 395 : ; line 396 : // まず日数の部分 ; line 397 : long_hour = DAYS_FROM_HNY[ month_hex ]; $DGL 0,17 mov a,[hl+2] ; month_hex ;[INF] 2, 1 clrb x ;[INF] 1, 1 shrw ax,7 ;[INF] 2, 1 movw bc,ax ;[INF] 1, 1 movw ax,_DAYS_FROM_HNY[bc] ;[INF] 3, 1 movw [hl+4],ax ; long_hour ;[INF] 2, 1 ; line 398 : if(( ( year_hex & 0x03 ) == 0 ) && ( ( 3 <= month_hex ) $DGL 0,18 mov a,[hl+3] ; year_hex ;[INF] 2, 1 and a,#03H ; 3 ;[INF] 2, 1 cmp0 a ;[INF] 1, 1 bnz $?L0093 ;[INF] 2, 4 mov a,[hl+2] ; month_hex ;[INF] 2, 1 cmp a,#03H ; 3 ;[INF] 2, 1 bnc $?L0095 ;[INF] 2, 4 ; line 399 : || (( 2 == month_hex ) ; && ( day_hex == 29 )) )) $DGL 0,19 mov a,[hl+2] ; month_hex ;[INF] 2, 1 cmp a,#02H ; 2 ;[INF] 2, 1 bnz $?L0093 ;[INF] 2, 4 mov a,[hl+1] ; day_hex ;[INF] 2, 1 cmp a,#01DH ; 29 ;[INF] 2, 1 sknz ;[INF] 2, 1 ?L0095: ; line 400 : { ??bb00_get_long_hour: ; line 401 : // 閏年で、閏日より後 ; line 402 : long_hour += 1; $DGL 0,22 incw [hl+4] ; long_hour ;[INF] 3, 2 ??eb00_get_long_hour: ; line 403 : } ?L0093: ; line 404 : long_hour += day_hex - 1; $DGL 0,24 mov a,[hl+1] ; day_hex ;[INF] 2, 1 shrw ax,8 ;[INF] 2, 1 decw ax ;[INF] 1, 1 addw ax,[hl+4] ; long_hour ;[INF] 3, 1 movw [hl+4],ax ; long_hour ;[INF] 2, 1 ; line 405 : long_hour *= 24; // 日数→時間 $DGL 0,25 shlw ax,3 ;[INF] 2, 1 movw bc,ax ;[INF] 1, 1 addw ax,ax ;[INF] 1, 1 addw ax,bc ;[INF] 1, 1 movw [hl+4],ax ; long_hour ;[INF] 2, 1 ; line 406 : ; line 407 : long_hour += hour_hex; $DGL 0,27 mov a,[hl+4] ; long_hour ;[INF] 2, 1 add a,[hl] ; hour_hex ;[INF] 1, 1 mov x,a ;[INF] 1, 1 mov a,[hl+5] ; long_hour ;[INF] 2, 1 addc a,#00H ; 0 ;[INF] 2, 1 movw [hl+4],ax ; long_hour ;[INF] 2, 1 ; line 408 : ; line 409 : return( long_hour ); $DGL 0,29 movw bc,ax ;[INF] 1, 1 ; line 410 : } $DGL 0,30 ??ef_get_long_hour: addw sp,#06H ;[INF] 2, 1 pop hl ;[INF] 1, 1 ret ;[INF] 1, 6 ??ee_get_long_hour: @@CODEL CSEG @@BASE CSEG BASE END ; *** Code Information *** ; ; $FILE C:\78k_data\yav-mcu-basara\branches\0.10(fix)\pedo_alg_thre_det2.c ; ; $FUNC pedometer(30) ; void=(void) ; CODE SIZE= 447 bytes, CLOCK_SIZE= 435 clocks, STACK_SIZE= 50 bytes ; ; $CALL abs(51) ; bc=(int:ax) ; ; $CALL abs(52) ; bc=(int:ax) ; ; $CALL abs(53) ; bc=(int:ax) ; ; $CALL sqrt(60) ; bc,de=(double:ax,bc) ; ; $CALL hosu_increment(110) ; void=(void) ; ; $FUNC hosu_increment(183) ; void=(void) ; CODE SIZE= 213 bytes, CLOCK_SIZE= 166 clocks, STACK_SIZE= 12 bytes ; ; $CALL get_long_hour(214) ; bc=(void) ; ; $CALL fill_hosu_hist_hours(223) ; void=(unsigned short:ax) ; ; $CALL fill_hosu_hist_hours(230) ; void=(unsigned short:ax) ; ; $CALL fill_hosu_hist_hours(235) ; void=(unsigned short:ax) ; ; $FUNC fill_hosu_hist_hours(264) ; void=(unsigned short hours:ax) ; CODE SIZE= 30 bytes, CLOCK_SIZE= 31 clocks, STACK_SIZE= 2 bytes ; ; $FUNC clear_hosu_hist(287) ; void=(void) ; CODE SIZE= 29 bytes, CLOCK_SIZE= 26 clocks, STACK_SIZE= 2 bytes ; ; $FUNC hosu_read_end(310) ; void=(void) ; CODE SIZE= 4 bytes, CLOCK_SIZE= 8 clocks, STACK_SIZE= 0 bytes ; ; $FUNC hosu_read(320) ; bc=(void) ; CODE SIZE= 146 bytes, CLOCK_SIZE= 124 clocks, STACK_SIZE= 10 bytes ; ; $FUNC get_long_hour(381) ; bc=(void) ; CODE SIZE= 110 bytes, CLOCK_SIZE= 84 clocks, STACK_SIZE= 12 bytes ; Target chip : uPD79F0104 ; Device file : E1.00b