; 78K0R C Compiler V2.10 Assembler Source Date:13 Jun 2010 Time:19:31:23 ; 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 loader.c ; In-file : loader.c ; Asm-file : inter_asm\loader.asm ; Para-file : $PROCESSOR(9F0104) $DEBUG $NODEBUGA $KANJICODE SJIS $TOL_INF 03FH, 0210H, 02H, 00H, 00H, 00H, 00H $DGS FIL_NAM, .file, 099H, 0FFFEH, 03FH, 067H, 01H, 00H $DGS AUX_FIL, loader.c $DGS MOD_NAM, loader, 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, LDR_CNSL, 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, LDR_CODE, U, U, 00H, 078H, 00H, 00H $DGS SEC_NAM, LDR_CODL, U, U, 00H, 078H, 00H, 00H $DGS SEC_NAM, @@BASE, U, U, 00H, 078H, 00H, 00H $DGS ENM_TAG, _pwr_state_, 00H, 0FFFEH, 0AH, 0FH, 01H, 00H $DGS AUX_TAG, 01H, 01EH $DGS MEB_ENM, _OFF_TRIG, 00H, 0FFFFH, 04H, 010H, 00H, 00H $DGS MEB_ENM, _OFF, 01H, 0FFFFH, 04H, 010H, 00H, 00H $DGS MEB_ENM, _ON_TRIG, 02H, 0FFFFH, 04H, 010H, 00H, 00H $DGS MEB_ENM, _ON, 03H, 0FFFFH, 04H, 010H, 00H, 00H $DGS MEB_ENM, _SLEEP_TRIG, 04H, 0FFFFH, 04H, 010H, 00H, 00H $DGS MEB_ENM, _SLEEP, 05H, 0FFFFH, 04H, 010H, 00H, 00H $DGS MEB_ENM, _BT_CHARGE, 06H, 0FFFFH, 04H, 010H, 00H, 00H $DGS END_STR, .eos, 01H, 0FFFFH, 00H, 066H, 01H, 00H $DGS AUX_EOS, 013H, 01H $DGS ENM_TAG, _poweron_reason_, 00H, 0FFFEH, 0AH, 0FH, 01H, 00H $DGS AUX_TAG, 01H, 025H $DGS MEB_ENM, _NONE, 00H, 0FFFFH, 04H, 010H, 00H, 00H $DGS MEB_ENM, _PWSW, 01H, 0FFFFH, 04H, 010H, 00H, 00H $DGS MEB_ENM, _RTC_ALARM, 02H, 0FFFFH, 04H, 010H, 00H, 00H $DGS END_STR, .eos, 01H, 0FFFFH, 00H, 066H, 01H, 00H $DGS AUX_EOS, 01EH, 01H $DGS ENM_TAG, _model_, 00H, 0FFFEH, 0AH, 0FH, 01H, 00H $DGS AUX_TAG, 01H, 02FH $DGS MEB_ENM, _MODEL_JIKKI, 00H, 0FFFFH, 04H, 010H, 00H, 00H $DGS MEB_ENM, _MODEL_TS_BOARD, 01H, 0FFFFH, 04H, 010H, 00H, 00H $DGS MEB_ENM, _MODEL_SHIROBAKO, 02H, 0FFFFH, 04H, 010H, 00H, 00H $DGS MEB_ENM, _MODEL_RESERVED1, 03H, 0FFFFH, 04H, 010H, 00H, 00H $DGS MEB_ENM, _MODEL_RESERVED2, 04H, 0FFFFH, 04H, 010H, 00H, 00H $DGS MEB_ENM, _MODEL_RESERVED3, 05H, 0FFFFH, 04H, 010H, 00H, 00H $DGS END_STR, .eos, 01H, 0FFFFH, 00H, 066H, 01H, 00H $DGS AUX_EOS, 025H, 01H $DGS STR_STR, .0fake, 00H, 0FFFEH, 08H, 0AH, 01H, 00H $DGS AUX_TAG, 04H, 041H $DGS MEB_STR, _pwr_state, 00H, 0FFFFH, 0AH, 08H, 01H, 00H $DGS AUX_STR, 013H, 00H, 01H, 00H, 00H, 00H, 00H, 00H $DGS MEB_STR, _poweron_reason, 01H, 0FFFFH, 0AH, 08H, 01H, 00H $DGS AUX_STR, 01EH, 00H, 01H, 00H, 00H, 00H, 00H, 00H $DGS BIT_FLD, _dipsw0, 010H, 0FFFFH, 0CH, 012H, 01H, 00H $DGS AUX_BIT, 00H, 01H $DGS BIT_FLD, _dipsw1, 011H, 0FFFFH, 0CH, 012H, 01H, 00H $DGS AUX_BIT, 00H, 01H $DGS BIT_FLD, _dipsw2, 012H, 0FFFFH, 0CH, 012H, 01H, 00H $DGS AUX_BIT, 00H, 01H $DGS BIT_FLD, _reboot, 013H, 0FFFFH, 0CH, 012H, 01H, 00H $DGS AUX_BIT, 00H, 01H $DGS MEB_STR, _model, 03H, 0FFFFH, 0AH, 08H, 01H, 00H $DGS AUX_STR, 025H, 00H, 01H, 00H, 00H, 00H, 00H, 00H $DGS END_STR, .eos, 04H, 0FFFFH, 00H, 066H, 01H, 00H $DGS AUX_EOS, 02FH, 04H $DGS GLV_SYM, _main, U, U, 01H, 026H, 01H, 02H $DGS AUX_FUN, 00H, U, U, 073H, 00H, 00H $DGS BEG_FUN, ??bf_main, U, U, 00H, 065H, 01H, 00H $DGS AUX_BEG, 045H, 02H, 045H $DGS BEG_BLK, ??bb00_main, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 03H, 00H, 047H $DGS BEG_BLK, ??bb01_main, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 06H, 00H, 04BH $DGS END_BLK, ??eb01_main, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 08H $DGS BEG_BLK, ??bb02_main, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 0AH, 00H, 04FH $DGS END_BLK, ??eb02_main, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 015H $DGS BEG_BLK, ??bb03_main, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 017H, 00H, 055H $DGS REG_VAR, _pwup_delay0, 06H, 0FFFFH, 010CH, 04H, 01H, 00H $DGS AUX_STR, 00H, 018H, 01H, 00H, 00H, 00H, 00H, 00H $DGS REG_VAR, _pwup_delay1, 07H, 0FFFFH, 010CH, 04H, 01H, 00H $DGS AUX_STR, 00H, 019H, 01H, 00H, 00H, 00H, 00H, 00H $DGS BEG_BLK, ??bb04_main, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 01CH, 00H, 057H $DGS BEG_BLK, ??bb05_main, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 01FH, 00H, 05FH $DGS END_BLK, ??eb05_main, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 021H $DGS END_BLK, ??eb04_main, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 023H $DGS END_BLK, ??eb03_main, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 027H $DGS BEG_BLK, ??bb06_main, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 02AH, 00H, 065H $DGS REG_VAR, _i, 06H, 0FFFFH, 010CH, 04H, 01H, 00H $DGS AUX_STR, 00H, 02BH, 01H, 00H, 00H, 00H, 00H, 00H $DGS REG_VAR, _comp, 07H, 0FFFFH, 010CH, 04H, 01H, 00H $DGS AUX_STR, 00H, 02CH, 01H, 00H, 00H, 00H, 00H, 00H $DGS BEG_BLK, ??bb07_main, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 031H, 00H, 069H $DGS END_BLK, ??eb07_main, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 033H $DGS BEG_BLK, ??bb08_main, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 036H, 00H, 00H $DGS END_BLK, ??eb08_main, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 03AH $DGS END_BLK, ??eb06_main, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 03BH $DGS END_BLK, ??eb00_main, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 03FH $DGS END_FUN, ??ef_main, U, U, 00H, 065H, 01H, 00H $DGS AUX_END, 040H $DGS GLV_SYM, _int_kr, U, U, 0E001H, 026H, 01H, 02H $DGS AUX_FUN, 00H, U, U, 079H, 00H, 00H $DGS BEG_FUN, ??bf_int_kr, U, U, 00H, 065H, 01H, 00H $DGS AUX_BEG, 08CH, 00H, 079H $DGS END_FUN, ??ef_int_kr, U, U, 00H, 065H, 01H, 00H $DGS AUX_END, 02H $DGS GLV_SYM, _intp4, U, U, 0E001H, 026H, 01H, 02H $DGS AUX_FUN, 00H, U, U, 07FH, 00H, 00H $DGS BEG_FUN, ??bf_intp4, U, U, 00H, 065H, 01H, 00H $DGS AUX_BEG, 095H, 00H, 07FH $DGS END_FUN, ??ef_intp4, U, U, 00H, 065H, 01H, 00H $DGS AUX_END, 02H $DGS GLV_SYM, _intp5, U, U, 0E001H, 026H, 01H, 02H $DGS AUX_FUN, 00H, U, U, 085H, 00H, 00H $DGS BEG_FUN, ??bf_intp5, U, U, 00H, 065H, 01H, 00H $DGS AUX_BEG, 09DH, 00H, 085H $DGS END_FUN, ??ef_intp5, U, U, 00H, 065H, 01H, 00H $DGS AUX_END, 02H $DGS GLV_SYM, _hdwinit, U, U, 01H, 026H, 01H, 02H $DGS AUX_FUN, 00H, U, U, 08BH, 00H, 00H $DGS BEG_FUN, ??bf_hdwinit, U, U, 00H, 065H, 01H, 00H $DGS AUX_BEG, 0A4H, 00H, 08BH $DGS END_FUN, ??ef_hdwinit, U, U, 00H, 065H, 01H, 00H $DGS AUX_END, 015H $DGS STA_SYM, _hdwinit2, U, U, 01H, 03H, 01H, 02H $DGS AUX_FUN, 00H, U, U, 099H, 00H, 00H $DGS BEG_FUN, ??bf_hdwinit2, U, U, 00H, 065H, 01H, 00H $DGS AUX_BEG, 0BCH, 00H, 08FH $DGS BEG_BLK, ??bb00_hdwinit2, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 04H, 00H, 093H $DGS END_BLK, ??eb00_hdwinit2, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 019H $DGS BEG_BLK, ??bb01_hdwinit2, U, U, 00H, 064H, 01H, 00H $DGS AUX_BEG, 01BH, 00H, 00H $DGS END_BLK, ??eb01_hdwinit2, U, U, 00H, 064H, 01H, 00H $DGS AUX_END, 01FH $DGS END_FUN, ??ef_hdwinit2, U, U, 00H, 065H, 01H, 00H $DGS AUX_END, 0D1H $DGS GLV_SYM, _WDT_Restart, U, U, 01H, 02H, 01H, 02H $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H $DGS GLV_SYM, _system_status, U, U, 08H, 02H, 01H, 00H $DGS AUX_STR, 02FH, 00H, 04H, 00H, 00H, 00H, 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, _firm_restore, U, U, 0CH, 02H, 01H, 02H $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H $DGS GLV_SYM, _main_loop, U, U, 01H, 02H, 01H, 02H $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H EXTRN _WDT_Restart EXTRN _system_status EXTRN _vreg_ctr EXTRN _firm_restore EXTRN _main_loop PUBLIC _main PUBLIC _int_kr PUBLIC _intp4 PUBLIC _intp5 PUBLIC _hdwinit @@BITS BSEG @@CNST CSEG MIRRORP @@R_INIT CSEG UNIT64KP @@INIT DSEG BASEP @@DATA DSEG BASEP @@R_INIS CSEG UNIT64KP @@INIS DSEG SADDRP @@DATS DSEG SADDRP LDR_CNSL CSEG PAGE64KP @@RLINIT CSEG UNIT64KP @@INITL DSEG UNIT64KP @@DATAL DSEG UNIT64KP @@CALT CSEG CALLT0 ; line 1 : /* ======================================================== ; line 2 : MCU CTR BSR ; line 3 : 2009/03/30 ; line 4 : 開発技術部 藤田 ; line 5 : ; line 6 : ブートローダー部 ; line 7 : ホストの通信と、自己書き換え、ファームのチェックを行う。 ; line 8 : ; line 9 : ======================================================== */ ; line 10 : #pragma SFR ; line 11 : #pragma di ; line 12 : #pragma ei ; line 13 : #pragma nop ; line 14 : #pragma stop ; line 15 : #pragma halt ; line 16 : #pragma opc ; line 17 : ; line 18 : ; line 19 : #include "incs_loader.h" ; line 20 : ; line 21 : #include "fsl.h" ; line 22 : #include "fsl_user.h" ; line 23 : ; line 24 : #include "i2c_ctr.h" ; line 25 : #include "i2c_mcu.h" ; line 26 : #include "pm.h" ; line 27 : #include "rtc.h" ; line 28 : ; line 29 : #include "reboot.h" ; line 30 : ; line 31 : ; line 32 : // ======================================================== ; line 33 : #if (FSL_DATA_BUFFER_SIZE>0) ; line 34 : fsl_u08 fsl_data_buffer[FSL_DATA_BUFFER_SIZE]; ; line 35 : #endif ; line 36 : ; line 37 : ; line 38 : ; line 39 : #ifdef FSL_INT_BACKUP ; line 40 : static fsl_u08 fsl_MK0L_bak_u08; /* if (interrupt back ; up required) */ ; line 41 : static fsl_u08 fsl_MK0H_bak_u08; /* { ; */ ; line 42 : static fsl_u08 fsl_MK1L_bak_u08; /* reserve space fo ; r backup information */ ; line 43 : static fsl_u08 fsl_MK1H_bak_u08; /* of interrupt mas ; k flags */ ; line 44 : static fsl_u08 fsl_MK2L_bak_u08; /* ; */ ; line 45 : static fsl_u08 fsl_MK2H_bak_u08; /* } ; */ ; line 46 : #endif ; line 47 : ; line 48 : ; line 49 : ; line 50 : // magic.c の記述と違わないように注意! ; line 51 : #define MGC_LOAD 0x0FF6 ; line 52 : #define MGC_FOOT 0x4FF6 ; line 53 : ; line 54 : ; line 55 : ; line 56 : // ======================================================== ; line 57 : void FSL_Open( void ); ; line 58 : void FSL_Close( void ); ; line 59 : void hdwinit( void ); ; line 60 : void power_save( ); ; line 61 : static void hdwinit2( ); ; line 62 : ; line 63 : extern void main_loop( ); ; line 64 : ; line 65 : ; line 66 : ; line 67 : // ======================================================== ; line 68 : void main( ) ; line 69 : { LDR_CODE CSEG BASE _main: $DGL 1,65 push hl ;[INF] 1, 1 ??bf_main: ; line 70 : while( 1 ) ?L0003: ; line 71 : { ??bb00_main: ; line 72 : WDT_Restart( ); $DGL 0,4 call !_WDT_Restart ;[INF] 3, 3 ; line 73 : if( RTCEN ) $DGL 0,5 push hl ;[INF] 1, 1 movw hl,#0F0H ; 240 ;[INF] 3, 1 mov1 CY,[hl].7 ;[INF] 2, 1 pop hl ;[INF] 1, 1 bnc $?L0005 ;[INF] 2, 4 ; line 74 : { ??bb01_main: ; line 75 : system_status.reboot = 1; $DGL 0,7 set1 !_system_status+2.3 ;[INF] 4, 2 ??eb01_main: ; line 76 : } $DGL 0,8 br $?L0008 ;[INF] 2, 3 ?L0005: ; line 77 : else if( ( RESF & 0x10 ) != 0) // WDRF,WDTでリセット $DGL 0,9 mov a,#010H ; 16 ;[INF] 2, 1 and a,!RESF ;[INF] 3, 1 cmp0 a ;[INF] 1, 1 bz $?L0007 ;[INF] 2, 4 ; line 78 : { ??bb02_main: ; line 79 : system_status.reboot = 1; $DGL 0,11 set1 !_system_status+2.3 ;[INF] 4, 2 ; line 80 : #ifdef _PMIC_TWL_ ; line 81 : // 暴走してしまうので再起動させる ; line 82 : PM_reset_ast(); ; line 83 : /// hdwinit2ないでリセット解除される。続きに続行して ; よい(頭痛が痛い的) ; line 84 : #endif ; line 85 : vreg_ctr[ VREG_C_MCU_STATUS ] |= REG_BIT_STATUS_WDT_ ; RESET; $DGL 0,17 set1 !_vreg_ctr+2.1 ;[INF] 4, 2 ; line 86 : // set_irq( VREG_C_IRQ0, REG_BIT_IRQ_WDT_RESET ); ; line 87 : // ↑I2Cの初期化後に行う ; line 88 : hdwinit2( ); $DGL 0,20 call !_hdwinit2 ;[INF] 3, 3 ??eb02_main: ; line 89 : } $DGL 0,21 br $?L0008 ;[INF] 2, 3 ?L0007: ; line 90 : else ; line 91 : { ??bb03_main: ; line 92 : u8 pwup_delay0 = 0; $DGL 0,24 movw hl,#00H ; 0 ;[INF] 3, 1 ; line 93 : u8 pwup_delay1 = 0; ; line 94 : ; line 95 : do ?L0009: ; line 96 : { // 電池接続時、16ms待ってみる(チ ; ャタリング対策) ??bb04_main: ; line 97 : pwup_delay0 += 1; $DGL 0,29 inc l ;[INF] 1, 1 ; line 98 : do ?L0012: ; line 99 : { ??bb05_main: ; line 100 : pwup_delay1 += 1; $DGL 0,32 inc h ;[INF] 1, 1 ??eb05_main: ; line 101 : } ; line 102 : while( pwup_delay1 != 0 ); // u16にするとコ ; ンパイラが怒るんだが…。 $DGL 0,34 mov a,h ;[INF] 1, 1 cmp0 a ;[INF] 1, 1 bnz $?L0012 ;[INF] 2, 4 ??eb04_main: ; line 103 : } ; line 104 : while( pwup_delay0 != 0 ); $DGL 0,36 mov a,l ;[INF] 1, 1 cmp0 a ;[INF] 1, 1 bnz $?L0009 ;[INF] 2, 4 ; line 105 : ; line 106 : hdwinit2( ); $DGL 0,38 call !_hdwinit2 ;[INF] 3, 3 ??eb03_main: ; line 107 : } ?L0008: ; line 108 : ; line 109 : // ファームの整合性チェック // ; line 110 : { ??bb06_main: ; line 111 : u8 i; ; line 112 : u8 comp = 0; $DGL 0,44 movw hl,#00H ; 0 ;[INF] 3, 1 ; line 113 : ; line 114 : // ローダーと本体は同じバージョンか? ; line 115 : /// 次へのアップデートの途中で終わってないか? ; line 116 : for( i = 0; i < sizeof( __TIME__ ); i++ ) // si ; zeof( __TIME__ ) = 8 らし $DGL 0,48 ?L0015: mov a,l ;[INF] 1, 1 cmp a,#09H ; 9 ;[INF] 2, 1 bnc $?L0016 ;[INF] 2, 4 ; line 117 : { ??bb07_main: ; line 118 : comp += ( *( __far u8 * )( MGC_LOAD + i ) == *( ; u8 * )( MGC_FOOT + i ) ) ? 0 : 1; $DGL 0,50 movw ax,hl ;[INF] 1, 1 clrb a ;[INF] 1, 1 addw ax,#0FF6H ; 4086 ;[INF] 3, 1 push ax ;[INF] 1, 1 sar a,7 ;[INF] 2, 1 mov ES,a ;[INF] 2, 1 pop de ;[INF] 1, 1 mov a,ES:[de] ;[INF] 2, 2 mov c,a ;[INF] 1, 1 movw ax,hl ;[INF] 1, 1 clrb a ;[INF] 1, 1 addw ax,#04FF6H ; 20470 ;[INF] 3, 1 movw de,ax ;[INF] 1, 1 mov a,[de] ;[INF] 1, 1 cmp c,a ;[INF] 2, 1 bnz $?L0018 ;[INF] 2, 4 clrw ax ;[INF] 1, 1 br $?L0019 ;[INF] 2, 3 ?L0018: onew ax ;[INF] 1, 1 ?L0019: mov a,x ;[INF] 1, 1 add h,a ;[INF] 2, 1 ??eb07_main: ; line 119 : } $DGL 0,51 inc l ;[INF] 1, 1 br $?L0015 ;[INF] 2, 3 ?L0016: ; line 120 : ; line 121 : if( comp != 0 ) $DGL 0,53 mov a,h ;[INF] 1, 1 cmp0 a ;[INF] 1, 1 skz ;[INF] 2, 1 ; line 122 : { ??bb08_main: ; line 123 : // ファームリストアを試みる ; line 124 : firm_restore( ); $DGL 0,56 call !_firm_restore ;[INF] 3, 3 ??eb08_main: ; line 125 : // 帰ってこない。リセットをかける。 ; line 126 : } ?L0020: ??eb06_main: ; line 127 : } ; line 128 : ; line 129 : // 通常運転 ; line 130 : main_loop( ); $DGL 0,62 call !_main_loop ;[INF] 3, 3 ??eb00_main: ; line 131 : } $DGL 0,63 br $?L0003 ;[INF] 2, 3 ; line 132 : } $DGL 0,64 ??ef_main: pop hl ;[INF] 1, 1 ret ;[INF] 1, 6 ??ee_main: ; line 133 : ; line 134 : ; line 135 : ; line 136 : /* ======================================================== ; line 137 : キーリターン割り込み ; line 138 : ======================================================== */ ; line 139 : __interrupt void int_kr( ) ; line 140 : { @@BASE CSEG BASE _int_kr: $DGL 1,115 ??bf_int_kr: ; line 141 : } $DGL 0,2 ??ef_int_kr: reti ;[INF] 2, 6 ??ee_int_kr: ; line 142 : ; line 143 : ; line 144 : ; line 145 : /* ======================================================== ; line 146 : ext dc ; line 147 : ======================================================== */ ; line 148 : __interrupt void intp4( ) ; line 149 : { _intp4: $DGL 1,121 ??bf_intp4: ; line 150 : } $DGL 0,2 ??ef_intp4: reti ;[INF] 2, 6 ??ee_intp4: ; line 151 : ; line 152 : ; line 153 : /* ======================================================== ; line 154 : shell close ; line 155 : ======================================================== */ ; line 156 : __interrupt void intp5( ) ; line 157 : { _intp5: $DGL 1,127 ??bf_intp5: ; line 158 : } $DGL 0,2 ??ef_intp5: reti ;[INF] 2, 6 ??ee_intp5: ; line 159 : ; line 160 : ; line 161 : ; line 162 : // ======================================================== ; line 163 : void hdwinit( void ) ; line 164 : { // スタートアップルーチンが勝手に ; 呼びます LDR_CODE CSEG BASE _hdwinit: $DGL 1,133 di ;[INF] 3, 4 ??bf_hdwinit: ; line 165 : DI( ); /* マスタ割り込み禁止 */ ; line 166 : ; line 167 : CMC = 0b00010110; /* X1発振せず(入力ポート)、XT1使用 ; 、推奨の推奨で超低電力発振 */ $DGL 0,4 mov CMC,#016H ; 22 ;[INF] 3, 1 ; line 168 : CSC = 0b10000000; /* X1発振なし、XT1発振あり、高速内 ; 蔵発振動作 */ $DGL 0,5 mov CSC,#080H ; 128 ;[INF] 3, 1 ; line 169 : #ifdef _MCU_BSR_ ; line 170 : OSMC = 0x01; /* 隠しレジスタ */ $DGL 0,7 oneb !OSMC ;[INF] 3, 1 ; line 171 : #endif ; line 172 : #ifdef _OVERCLOCK_ ; line 173 : CKC = 0b00001000; /* CPU/周辺クロック=fMAIN、fMAIN= ; fMX、fCLK=fMX */ $DGL 0,10 mov CKC,#08H ; 8 ;[INF] 3, 1 ; line 174 : #else ; line 175 : // CKC デフォルトでよい ; line 176 : #endif ; line 177 : ; line 178 : /*--- 低電圧検出回路の設定 ---*/ ; line 179 : /* リセット解除時のデフォルトは、オプション・バイトにて指定さ ; れる */ ; line 180 : LVIS = 0b00000000; /* VLVI = 4.22±0.1V */ $DGL 0,17 clrb !LVIS ;[INF] 3, 1 ; line 181 : LVIM = 0b00000000; /* LVI動作禁止 */ $DGL 0,18 clrb !LVIM ;[INF] 3, 1 ; line 182 : /* 電源電圧(VDD)<検出電圧(VLVI)時に割込発生 */ ; line 183 : /* 電源電圧(VDD)≧検出電圧