0.10のX3対応版を登録

git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_mcu@193 013db118-44a6-b54f-8bf7-843cb86687b1
This commit is contained in:
N2232 2010-06-23 07:16:15 +00:00
parent 07439199a2
commit dc469bd4c6
172 changed files with 96200 additions and 0 deletions

14
branches/0.10(X3)/WDT.c Normal file
View File

@ -0,0 +1,14 @@
#pragma sfr
#include "incs_loader.h"
//=========================================================
// ウォッチドッグタイマのリスタート
// 0xACはマジック
void WDT_Restart( void )
{
WDTE = WDT_RESTART_MAGIC;
}

18
branches/0.10(X3)/WDT.h Normal file
View File

@ -0,0 +1,18 @@
#ifndef _WDT_
#define _WDT_
//=========================================================
#define WDT_RESTART_MAGIC 0xAC
//=========================================================
void WDT_Restart( void );
// 規定値以外を書くと例外でリセットがかかる
#define mcu_reset WDTE = 0x5A
#endif

154
branches/0.10(X3)/WDT.prn Normal file
View File

@ -0,0 +1,154 @@
78K0R Assembler W1.31 Date:13 Jun 2010 Page: 1
Command: -c9F0104 -yC:\Program Files\NEC Electronics Tools\DEV -_msgoff inter_asm\WDT.asm
Para-file:
In-file: inter_asm\WDT.asm
Obj-file: WDT.rel
Prn-file: WDT.prn
Assemble list
ALNO STNO ADRS OBJECT M I SOURCE STATEMENT
1 1 ; 78K0R C Compiler V2.10 Assembler Source Date:13 Jun 2010 Time:19:31:23
2 2
3 3 ; Command : -c9F0104 -yC:\Program Files\NEC Electronics Tools\DEV -_msgoff -i
4 4 ; renge -iC:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\
5 5 ; V1.20\inc78k0r -ms -qvjl3wt -sainter_asm -zp -no WDT.c
6 6 ; In-file : WDT.c
7 7 ; Asm-file : inter_asm\WDT.asm
8 8 ; Para-file :
9 9
10 10 $PROCESSOR(9F0104)
11 11 $DEBUG
12 12 $NODEBUGA
13 13 $KANJICODE SJIS
14 14 $TOL_INF 03FH, 0210H, 00H, 00H, 00H, 00H, 00H
15 15
16 16 $DGS FIL_NAM, .file, 019H, 0FFFEH, 03FH, 067H, 01H, 00H
17 17 $DGS AUX_FIL, WDT.c
18 18 $DGS MOD_NAM, WDT, 00H, 0FFFEH, 00H, 077H, 00H, 00H
19 19 $DGS SEC_NAM, @@BITS, U, U, 00H, 078H, 00H, 00H
20 20 $DGS SEC_NAM, @@CNST, U, U, 00H, 078H, 00H, 00H
21 21 $DGS SEC_NAM, @@R_INIT, U, U, 00H, 078H, 00H, 00H
22 22 $DGS SEC_NAM, @@INIT, U, U, 00H, 078H, 00H, 00H
23 23 $DGS SEC_NAM, @@DATA, U, U, 00H, 078H, 00H, 00H
24 24 $DGS SEC_NAM, @@R_INIS, U, U, 00H, 078H, 00H, 00H
25 25 $DGS SEC_NAM, @@INIS, U, U, 00H, 078H, 00H, 00H
26 26 $DGS SEC_NAM, @@DATS, U, U, 00H, 078H, 00H, 00H
27 27 $DGS SEC_NAM, LDR_CNSL, U, U, 00H, 078H, 00H, 00H
28 28 $DGS SEC_NAM, @@RLINIT, U, U, 00H, 078H, 00H, 00H
29 29 $DGS SEC_NAM, @@INITL, U, U, 00H, 078H, 00H, 00H
30 30 $DGS SEC_NAM, @@DATAL, U, U, 00H, 078H, 00H, 00H
31 31 $DGS SEC_NAM, @@CALT, U, U, 00H, 078H, 00H, 00H
32 32 $DGS SEC_NAM, LDR_CODE, U, U, 00H, 078H, 00H, 00H
33 33 $DGS SEC_NAM, LDR_CODL, U, U, 00H, 078H, 00H, 00H
34 34 $DGS SEC_NAM, @@BASE, U, U, 00H, 078H, 00H, 00H
35 35 $DGS GLV_SYM, _WDT_Restart, U, U, 01H, 026H, 01H, 02H
36 36 $DGS AUX_FUN, 00H, U, U, 019H, 00H, 00H
37 37 $DGS BEG_FUN, ??bf_WDT_Restart, U, U, 00H, 065H, 01H, 00H
38 38 $DGS AUX_BEG, 0CH, 00H, 019H
39 39 $DGS END_FUN, ??ef_WDT_Restart, U, U, 00H, 065H, 01H, 00H
40 40 $DGS AUX_END, 03H
41 41
42 42 PUBLIC _WDT_Restart
43 43
44 44 ----- @@BITS BSEG
45 45
46 46 ----- @@CNST CSEG MIRRORP
47 47
48 48 ----- @@R_INIT CSEG UNIT64KP
49 49
50 50 ----- @@INIT DSEG BASEP
51 51
52 52 ----- @@DATA DSEG BASEP
53 53
54 54 ----- @@R_INIS CSEG UNIT64KP
55 55
56 56 ----- @@INIS DSEG SADDRP
57 57
58 58 ----- @@DATS DSEG SADDRP
59 59
60 60 ----- LDR_CNSL CSEG PAGE64KP
61 61
62 62 ----- @@RLINIT CSEG UNIT64KP
63 63
64 64 ----- @@INITL DSEG UNIT64KP
65 65
66 66 ----- @@DATAL DSEG UNIT64KP
67 67
68 68 ----- @@CALT CSEG CALLT0
69 69
70 70 ; line 1 : #pragma sfr
71 71 ; line 2 :
72 72 ; line 3 :
73 73 ; line 4 : #include "incs_loader.h"
74 74 ; line 5 :
75 75 ; line 6 :
76 76 ; line 7 :
77 77 ; line 8 : //=========================================================
78 78 ; line 9 : // ウォッチドッグタイマのリスタート
79 79 ; line 10 : // 0xACはマジック
80 80 ; line 11 : void WDT_Restart( void )
81 81 ; line 12 : {
82 82
83 83 ----- LDR_CODE CSEG BASE
84 84 00000 _WDT_Restart:
85 85 $DGL 1,19
86 86 00000 ??bf_WDT_Restart:
87 87 ; line 13 : WDTE = WDT_RESTART_MAGIC;
88 88 $DGL 0,2
89 89 00000 CEABAC mov WDTE,#0ACH ; 172 ;[INF] 3, 1
90 90 ; line 14 : }
91 91 $DGL 0,3
92 92 00003 ??ef_WDT_Restart:
93 93 00003 D7 ret ;[INF] 1, 6
94 94 00004 ??ee_WDT_Restart:
95 95
96 96 ----- LDR_CODL CSEG
97 97
98 98 ----- @@BASE CSEG BASE
99 99 END
100 100
101 101
102 102 ; *** Code Information ***
103 103 ;
104 104 ; $FILE C:\78k_data\yav-mcu-basara\branches\0.10(fix)\WDT.c
105 105 ;
106 106 ; $FUNC WDT_Restart(12)
107 107 ; void=(void)
108 108 ; CODE SIZE= 4 bytes, CLOCK_SIZE= 7 clocks, STACK_SIZE= 0 bytes
109 109
110 110 ; Target chip : uPD79F0104
111 111 ; Device file : E1.00b
Segment informations:
ADRS LEN NAME
00000 00000H.0 @@BITS
00000 00000H @@CNST
00000 00000H @@R_INIT
00000 00000H @@INIT
00000 00000H @@DATA
00000 00000H @@R_INIS
00000 00000H @@INIS
00000 00000H @@DATS
00000 00000H LDR_CNSL
00000 00000H @@RLINIT
00000 00000H @@INITL
00000 00000H @@DATAL
00000 00000H @@CALT
00000 00004H LDR_CODE
00000 00000H LDR_CODL
00000 00000H @@BASE
Target chip : uPD79F0104
Device file : E1.00b
Assembly complete, 0 error(s) and 0 warning(s) found. ( 0)


BIN
branches/0.10(X3)/WDT.rel Normal file

Binary file not shown.

View File

@ -0,0 +1,3 @@
@echo off
set VF="C:\Program Files\NEC Electronics Tools\RA78K0R\W1.31\bin\vf78k0r.exe"
%VF% -y"C:\Program Files\NEC Electronics Tools\DEV" -_msgoff -obsr.lmf "..\..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2.10\lib78k0r\s0rm.rel" -go85h,0FC00h,1024 -gi0FFFFFFFFFFFFFFFFFFFFh -pbsr_k0r.map -nkd -gb7EFBFFh -b"C:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib" -bcl0rdm.lib -bcl0rm.lib -bcl0rmf.lib -i"C:\Program Files\NEC Electronics Tools\CC78K0R\W2.10\lib78k0r" -dbsr_mcu.dr -s -w0 loader.rel pm.rel i2c_ctr.rel main.rel magic.rel WDT.rel i2c_mcu.rel i2c_twl.rel ini_VECT.rel led.rel rtc.rel vreg_ctr.rel vreg_twl.rel adc.rel renge.rel accero.rel self_flash.rel reboot.rel sw.rel task_debug.rel task_misc.rel task_sys.rel pedo_alg_thre_det2.rel -vx

250
branches/0.10(X3)/accero.c Normal file
View File

@ -0,0 +1,250 @@
/* ========================================================
 
CPUに割り込み
I2Cの競合回避などがあるので
======================================================== */
#pragma SFR
#pragma NOP
#pragma HALT
#pragma STOP
#pragma ROT
// rorb, rolb, rorw, rolw
#pragma MUL
#pragma BCD
#include "incs.h"
#include <math.h>
// ========================================================
// レジスタ名
#define ACC_REG_WHOAMI 0x0F
#define ACC_REG_CTRL1 0x20
#define ACC_REG_CTRL5 0x24
#define ACC_REG_X 0x28
// ビット位置
#define ACC_bP_PM0 5
#define ACC_bP_DR0 3
// ビット設定値
#define ACC_BITS_PM_PDN 0
#define ACC_BITS_PM_NORM 1
#define ACC_BITS_PM_LP0R5 2
#define ACC_BITS_PM_LP1 3
#define ACC_BITS_PM_LP2 4
#define ACC_BITS_PM_LP5 5
#define ACC_BITS_PM_LP10 6
#define ACC_BITS_DR_50Hz 0
#define ACC_BITS_DR_100Hz 1
#define ACC_BITS_DR_400Hz 2
#define ACC_BITS_DR_1000Hz 3
#define ACC_BITS_ALL_AXIS_ON 7
#define VREG_BITMASK_ACC_CONF_ACQ ( 1 << 0 )
#define VREG_BITMASK_ACC_CONF_HOSU ( 1 << 1 )
// ========================================================
task_status tsk_soft_int( );
/* ========================================================
 
I2Cが使用中だったら
======================================================== */
task_status_immed tsk_cbk_accero( )
{ // 疑似isrから登録されます
/*
if(( system_status.pwr_state == OFF ) || ( system_status.pwr_state == BT_CHARGE ) )
{
return ( ERR_SUCCESS );
}
else
{
*/
// 加速度センサデータレジスタへの反映
if( iic_mcu_read( IIC_SLA_ACCEL, ( ACC_REG_X | 0x80 ), 6, &vreg_ctr[VREG_C_ACC_XL] )
!= ERR_SUCCESS )
{
// 加速度センサが異常になったので止める
vreg_ctr[VREG_C_ACC_CONFIG] &= ~( VREG_BITMASK_ACC_CONF_HOSU | VREG_BITMASK_ACC_CONF_ACQ );
// vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_ACCERO_ERR;
acc_hosu_set();
return ( ERR_SUCCESS ); // タスクの削除は必要
}
else
{
// 正常時パス //
// 加速度更新&割り込み
if( (( vreg_ctr[VREG_C_ACC_CONFIG] & VREG_BITMASK_ACC_CONF_ACQ ) != 0 ) &&
( system_status.pwr_state == ON )
)
{
set_irq( VREG_C_IRQ1, REG_BIT_ACC_DAT_RDY );
// ゴミデータのカラ読み
if( ACC_VALID == 1 )
{
u8 temp[6];
iic_mcu_read( IIC_SLA_ACCEL, ( ACC_REG_X | 0x80 ), 6, temp );
}
}
if(( system_status.pwr_state != OFF ) &&
( system_status.pwr_state != BT_CHARGE ) &&
( ( vreg_ctr[VREG_C_ACC_CONFIG] & VREG_BITMASK_ACC_CONF_HOSU ) != 0 )
)
{
DBG_LED_WIFI_2_on;
pedometer(); // 歩数計
DBG_LED_WIFI_2_off;
}
}
return ( ERR_SUCCESS );
}
/*=======================================================
  
========================================================*/
task_status_immed acc_read( )
{
vreg_ctr[VREG_C_ACC_W_BUF] = iic_mcu_read_a_byte( IIC_SLA_ACCEL, vreg_ctr[VREG_C_ACC_R_ADRS] );
// vreg_ctr[ VREG_C_ACC_R_BUF ] = iic_mcu_read_a_byte( IIC_SLA_ACCEL, vreg_ctr[VREG_C_ACC_R_ADRS] );
vreg_ctr[VREG_C_IRQ1] |= REG_BIT_ACC_ACK;
if( ( vreg_ctr[VREG_C_IRQ_MASK1] & REG_BIT_ACC_ACK ) == 0 )
{
IRQ0_ast;
}
return ( ERR_SUCCESS );
}
/*=========================================================
  
========================================================*/
task_status_immed acc_write( )
{
iic_mcu_write_a_byte( IIC_SLA_ACCEL, vreg_ctr[VREG_C_ACC_W_ADRS], vreg_ctr[VREG_C_ACC_W_BUF] );
vreg_ctr[VREG_C_IRQ1] |= REG_BIT_ACC_ACK;
if( ( vreg_ctr[VREG_C_IRQ_MASK1] & REG_BIT_ACC_ACK ) == 0 )
{
IRQ0_ast;
}
return ( ERR_SUCCESS );
}
/*=========================================================
 
todo
========================================================*/
task_status_immed acc_hosu_set( )
{
u8 str_send_buf[4];
iic_mcu_read_a_byte( IIC_SLA_ACCEL, ACC_REG_WHOAMI );
if( iic_mcu_bus_status == ERR_NOSLAVE )
{
vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_ACCERO_ERR;
#ifdef _MCU_BSR_
// PMK23 = 1;
#endif
return ( ERR_SUCCESS ); // とりあえず、タスクは削除しなくてはならない
}else{
vreg_ctr[ VREG_C_STATUS_1 ] &= ~REG_BIT_ACCERO_ERR;
}
str_send_buf[1] = 0x00; // ctrl2 HPF:normal, filterd, HPF for IRQ : dis/dis, HPF coeff:norm
#ifdef _MODEL_WM0_
# ifdef _MODEL_WM0_TEG2_CTRC_
str_send_buf[2] = 0x02; // 回路が一部違う
# else
str_send_buf[2] = 0x10; // 3 IRQ pol :Active HI, Drive:Pushpull,
/// IRQ2flg latch: auto clear after read, IRQ2 conf: IRQ( fall,shock,...)
/// 1 : auto clear after read, conf: data ready
# endif
#else
# ifdef _MODEL_CTR_JIKKI_
str_send_buf[2] = 0x10;
# else
str_send_buf[2] = 0x02; // 3 IRQ pol :Active HI, Drive:Pushpull,
/// IRQ2flg latch: auto clear after read, IRQ2 conf: IRQ( fall,shock,...)
/// 1 : auto clear after read, conf: data ready
# endif
#endif
str_send_buf[3] = 0x80; // ctrl3 block update:enable, MSB first, scale: +-2G(default), selftest: dis
if( ( vreg_ctr[VREG_C_ACC_CONFIG] &
( VREG_BITMASK_ACC_CONF_HOSU | VREG_BITMASK_ACC_CONF_ACQ ) ) == 0 )
{
#ifdef _MCU_BSR_
PMK23 = 1;
#endif
// 完全停止
str_send_buf[0] =
( ACC_BITS_PM_PDN << ACC_bP_PM0 | 0 << ACC_bP_DR0 | ACC_BITS_ALL_AXIS_ON );
}
else
{
#ifdef _MCU_BSR_
PMK23 = 0;
#endif
// 100Hz 自動取り込み
str_send_buf[0] =
( ACC_BITS_PM_NORM << ACC_bP_PM0
| ACC_BITS_DR_100Hz << ACC_bP_DR0
| ACC_BITS_ALL_AXIS_ON );
}
iic_mcu_write( IIC_SLA_ACCEL, ( ACC_REG_CTRL1 | 0x80 ), 4, str_send_buf );
// カラ読み
if( ACC_VALID == 1 )
{
if( system_status.pwr_state == ON )
{
u8 temp[6];
iic_mcu_read( IIC_SLA_ACCEL, ( ACC_REG_X | 0x80 ), 6, temp );
}
}
return ( ERR_SUCCESS );
}
/* ========================================================
I2Cが使用中かもしれないので
======================================================== */
__interrupt void intp23_ACC_ready( )
{
EI();
if( ( vreg_ctr[VREG_C_ACC_CONFIG] & 0x03 ) != 0x00 )
{
if( ( system_status.pwr_state == ON ) || ( system_status.pwr_state == SLEEP ) )
{
if( ACC_VALID )
{
renge_task_immed_add( tsk_cbk_accero );
}
}
}
}

View File

@ -0,0 +1,14 @@
#ifndef _accero_
#define _accero_
#include "jhl_defs.h"
#include "pedometer.h"
///////////////////////////////////////////////////////////
task_status_immed tsk_cbk_accero( );
task_status_immed acc_hosu_set( );
#endif

1027
branches/0.10(X3)/accero.prn Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

356
branches/0.10(X3)/adc.c Normal file
View File

@ -0,0 +1,356 @@
/* ========================================================
nintendo
'09 Apr
======================================================== */
#include "incs.h"
#include "adc.h"
#include "pm.h"
#include "led.h"
bit adc_updated;
u8 adc_raw_vol;
u8 adc_raw_dep;
#define INTERVAL_TSK_ADC 3
/* ========================================================
ADC設定と
BT_TEMP,_P
ADIN1
VOL
PM_BT_DET,_P PM_init
8tics毎に呼ばれADCを停止します
 
======================================================== */
/*
// max -4db
static const u8 slider_to_codec[64] =
{
127, 125, 124, 123, 121, 120, 119, 117,
116, 115, 113, 112, 111, 109, 108, 107,
105, 104, 103, 101, 100, 99, 98, 96,
95, 94, 92, 91, 90, 88, 87, 86,
84, 83, 82, 80, 79, 78, 76, 75,
74, 72, 71, 70, 69, 67, 66, 65,
63, 62, 61, 59, 58, 57, 55, 54,
53, 51, 50, 49, 47, 46, 45, 44
};
*/
// max -10db
static const u8 slider_to_codec[64] =
{
127, 126, 125, 124, 123, 122, 121, 120,
119, 118, 117, 116, 115, 114, 113, 112,
111, 110, 109, 109, 108, 107, 106, 105,
104, 103, 102, 101, 100, 99, 98, 97,
96, 95, 94, 93, 92, 91, 90, 89,
88, 87, 86, 85, 84, 83, 82, 81,
81, 80, 79, 78, 77, 76, 75, 74,
73, 72, 71, 70, 69, 68, 67, 66
};
void tsk_adc( )
{
static u8 task_interval = 0;
static u8 old_tune;
static u8 sndvol_codec;
static u8 bt_temp_old;
if( task_interval-- != 0 )
{
return;
}
else
{
task_interval = (u8)( INTERVAL_TSK_ADC / SYS_INTERVAL_TICK );
}
if( adc_updated )
{
if( system_status.pwr_state == ON )
{
// Tune ///////////////////////////////////////
{
// 似非ヒステリシス V2
// ガリオームには適さない
#define KIKAN 32
static u8 old_value;
static s8 diffs;
u8 temp;
if( abs( adc_raw_dep - old_value ) >= 2 )
{
// 大きく離れた
vreg_ctr[ VREG_C_TUNE ] = adc_raw_dep;
old_value = adc_raw_dep;
#if 0
;
;
set_irq( VREG_C_IRQ0, REG_BIT_VR_TUNE_CHANGE );
#endif
diffs = 0;
}
else
{
// 近所の値でも、ある期間でいっぱい偏っていたらそっちに寄せる
static u8 kikan_count = KIKAN;
if( old_value < adc_raw_dep )
{
diffs += 1;
}
else if( old_value > adc_raw_dep )
{
diffs -= 1;
}
if( --kikan_count == 0 )
{
if( diffs >= KIKAN && ( diffs < 64 ))
{
old_value += 1;
}
else if( ( diffs <= ( 256 - KIKAN )) && ( diffs > ( 128 + 64 ) )) // あらー?
{
old_value -= 1;
}
vreg_ctr[ VREG_C_TUNE ] = old_value;
kikan_count = KIKAN;
diffs = 0;
}
}
}
vreg_ctr[ VREG_C_DBG1 ] = vreg_ctr[ VREG_C_TUNE ];
vreg_ctr[ VREG_C_DBG2 ] = adc_raw_dep; // dbg
// Volume /////////////////////////////////////
{
// 似非ヒステリシスを付けて64段
u8 temp;
static u8 vol_old;
static u8 force_update_vol;
if( abs( adc_raw_vol - vol_old ) >= 2 ) // 生値でこれくらいずれたら更新
{
// if( vreg_ctr[ VREG_C_SND_VOL ] != ( adc_raw_vol / 4 ) )
{
vol_old = adc_raw_vol;
// レジスタ更新
vreg_ctr[ VREG_C_SND_VOL ] = ( adc_raw_vol / 4 );
vreg_twl[ REG_TWL_INT_ADRS_VOL ] = adc_raw_vol / ( 256 / 32 ); // ←adc値でよい
// codecに伝える
iic_mcu_write_a_byte( IIC_SLA_CODEC, CODEC_REG_VOL, slider_to_codec[ adc_raw_vol / 4 ] );
#ifndef _MODEL_CTR_
iic_mcu_write_a_byte( IIC_SLA_DCP, 0, slider_to_codec[ ( 255 - adc_raw_vol ) / 4 ] ); // todo
#endif
// set_irq( VREG_C_IRQ0, REG_BIT_VR_SNDVOL_CHANGE ); // 割り込み廃止
force_update_vol = 100;
}
}
{
// ポーリング
if( --force_update_vol == 0 )
{
vol_old = adc_raw_vol;
// レジスタ更新
// vreg_ctr[ VREG_C_SND_VOL ] = temp;
// vreg_twl[ REG_TWL_INT_ADRS_VOL ] = adc_raw_vol / ( 256 / 32 ); // ←adc値でよい
// codecに伝える
iic_mcu_write_a_byte( IIC_SLA_CODEC, CODEC_REG_VOL, slider_to_codec[ adc_raw_vol / 4 ] );
force_update_vol = 100;
}
}
}
// TUNE_LED ///////////////////////////////////
// ここで?仕様?
{
switch ( vreg_ctr[VREG_C_LED_TUNE] )
{
case LED_TUNE_ILM_ON:
LED_duty_TUNE = vreg_ctr[VREG_C_LED_BRIGHT];
break;
case LED_TUNE_ILM_SVR:
LED_duty_TUNE = vreg_ctr[VREG_C_TUNE] / 16;
break;
case LED_TUNE_ILM_OFF:
default:
LED_duty_TUNE = 0;
break;
}
}
adc_updated = 0;
}
}
ADCEN = 1;
ADM = 0b00011011; // セレクトモード、章圧、fCLK/6 ///ここから ↓
ADPC = 0x06; // ADCポートのセレクト
ADS = ADC_SEL_TUNE;
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
ADCS = 1; // AD開始。 /// ここまで  までに1us=8clk以上開ける
ADIF = 0;
ADMK = 0;
}
/* ========================================================
 minでもMAXでもない値を返す
 
 使
======================================================== */
static u8 getmean3( u8 * hist )
{
if( *hist > *( hist + 1 ) )
{
if( *hist > *( hist + 2 ) )
{
return( ( *( hist + 1 ) > *( hist + 2 ) ) ? *( hist + 1 ) : *( hist + 2 ) );
}
else
{
return( *hist );
}
}else{
if( *hist > *( hist + 2 ) )
{
return( *hist );
}
else
{
return( ( *( hist + 1 ) < *( hist + 2 ) ) ? *( hist + 1 ) : *( hist + 2 ) );
}
}
}
/* ========================================================
 
  
======================================================== */
__interrupt void int_adc( )
{
static u8 hist_tune[3];
static u8 hist_snd_vol[3];
static u8 hist_bt_temp[3];
static u8 index;
EI( );
switch ( ADS )
{
/*
case ( ADC_SEL_AMB_BRIT ):
vreg_ctr[ VREG_C_AMBIENT_BRIGHTNESS ] = ADCRH;
break;
*/
case ( ADC_SEL_TUNE ):
hist_tune[index] = ADCRH;
#ifdef _MODEL_WM0_
adc_raw_dep = 255 - getmean3( hist_tune );
#else
adc_raw_dep = getmean3( hist_tune );
#endif
break;
case ( ADC_SEL_VOL ):
hist_snd_vol[index] = ADCRH;
#ifdef _MODEL_CTR_JIKKI_
adc_raw_vol = ( 255 - getmean3( hist_snd_vol ));
#else
adc_raw_vol = getmean3( hist_snd_vol );
#endif
// TWL用レジスタ(32段)の更新。アトミックな処理として扱わないと不都合が。
/// 割り込みはHorizonを通してコマンドを発行されるのを待てばよい
break;
case ( ADC_SEL_BATT_TEMP ):
hist_bt_temp[index] = ADCRH;
raw_adc_temperature = getmean3( hist_bt_temp );
renge_task_immed_add( PM_bt_temp_update );
break;
case ( ADC_SEL_BATT_DET ):
// vreg_ctr[ VREG_C_DBG_BATT_DET ] = ADCRH;
// todo
break;
}
// もっとまともな書き方がありそうだ
// if( ADS == ADC_SEL_BATT_DET ){
if( ADS != ADC_SEL_BATT_TEMP )
{ // 電池判別は電源投入の一回のみ
ADS += 1; // 次のチャンネル
BT_TEMP_P = 1; // 電池温度監視スタート
}
else
{
ADCEN = 0; // 止めてしまう
BT_TEMP_P = 0; // 電池温度監視スタート
adc_updated = 1;
index = ( index == 2 ) ? 0 : ( index + 1 );
}
}
/* ========================================================
tsk_adcと競合することを考慮していません
======================================================== */
u8 get_adc( u8 ch )
{
u8 temp;
ADMK = 1;
ADIF = 0;
ADCEN = 1;
ADCS = 0;
ADM = 0b00100011; // セレクトモード、昇圧、fCLK/6 ///ここから↓
ADPC = 0x06; // ADCポートのセレクト
ADS = ch;
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
NOP();
ADCS = 1; // AD開始。 /// ここまで↑ に、1us以上開ける
ADMK = 0;
while( ADIF == 0 ){;}
temp = ADCRH;
ADCEN = 0;
return ( temp );
}

43
branches/0.10(X3)/adc.h Normal file
View File

@ -0,0 +1,43 @@
#ifndef __adc__
#define __adc__
#include "jhl_defs.h"
///////////////////////////////////////
// ANI2 P22
#define ADC_SEL_AMB_BRIT 0x02
/*
// ANI3 P23
#define ADC_SEL_GYRO_YAW 0x03
// ANI4 P24
#define ADC_SEL_GYRO_PITCH 0x04
// ANI5 P25
#define ADC_SEL_GYRO_ROLL 0x05
*/
// ANI6 P26
#define ADC_SEL_TUNE 0x06
// ANI7 P27
#define ADC_SEL_VOL 0x07
// ANI8 P150
#define ADC_SEL_BATT_TEMP 0x08
// ANI9 P151
#define ADC_SEL_BATT_DET 0x09
///////////////////////////////////////
#define CODEC_REG_VOL 0x13
///////////////////////////////////////
///////////////////////////////////////
u8 get_adc( u8 ch );
#endif

1506
branches/0.10(X3)/adc.prn Normal file

File diff suppressed because it is too large Load Diff

BIN
branches/0.10(X3)/adc.rel Normal file

Binary file not shown.

View File

@ -0,0 +1,80 @@
/* ========================================================
======================================================== */
enum BATT_VENDER {
BT_PANASONIC, // open
BT_UNKNOWN1,
BT_UNKNOWN2,
BT_UNKNOWN3,
BT_UNKNOWN4,
BT_UNKNOWN5,
BT_UNKNOWN6, // gnd
BT_MAXELL
};
static const u8 BT_PARAM[][64] = {
// ID = 0 GND 白箱
/// パラメータ無し
{ // ID = 1 120 ohm
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
},
{ // ID = 2 360 hom
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
},
{ // ID = 3 750 ohm
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
},
{ // ID = 4 1.3kohm
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
},
{ // ID = 5 2.7kohm パナ
0xAD, 0x30, 0xAE, 0x70, 0xB0, 0x00, 0xB3, 0x00,
0xB4, 0x70, 0xB5, 0xA0, 0xB7, 0x80, 0xBA, 0x00,
0xBB, 0x90, 0xBD, 0x00, 0xBE, 0x00, 0xBF, 0xF0,
0xC3, 0x00, 0xC5, 0xC0, 0xC8, 0x00, 0xCA, 0xC0,
0x04, 0x00, 0x12, 0x00, 0x0C, 0x10, 0x24, 0x00,
0x10, 0xD0, 0x1B, 0xF0, 0x0A, 0xF0, 0x08, 0xE0,
0x0C, 0xF0, 0x08, 0xC0, 0x08, 0xB0, 0x07, 0xF0,
0x0B, 0x00, 0x05, 0xD0, 0x02, 0x00, 0x09, 0x00
},
{ // ID = 6 8.2kohm
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
},
{ // ID = 7 マクセル
0xAD, 0x30, 0xAE, 0x70, 0xB0, 0x00, 0xB3, 0x00,
0xB4, 0x70, 0xB5, 0xA0, 0xB7, 0x80, 0xBA, 0x00,
0xBB, 0x90, 0xBD, 0x00, 0xBE, 0x00, 0xBF, 0xF0,
0xC3, 0x00, 0xC5, 0xC0, 0xC8, 0x00, 0xCA, 0xC0,
0x04, 0x00, 0x12, 0x00, 0x0C, 0x10, 0x24, 0x00,
0x10, 0xD0, 0x1B, 0xF0, 0x0A, 0xF0, 0x08, 0xE0,
0x0C, 0xF0, 0x08, 0xC0, 0x08, 0xB0, 0x07, 0xF0,
0x0B, 0x00, 0x05, 0xD0, 0x02, 0x00, 0x09, 0x00
}
};
static const unsigned char BT_PANA_RCOMP = 135;
static const float BT_PANA_TEMPCOUP = 0.3;
static const float BT_PANA_TEMPCODN = 0.5;

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,982 @@
:02000000C20438
:02000200FFFFFE
:0400100053475547B6
:02001C00D948C1
:0200240045494C
:02002A009247FB
:08003400724A2F4A6D4A4D4744
:02004A00574716
:0400C0007EFBFF853F
:0A00C400FFFFFFFFFFFFFFFFFFFF3C
:0A00CE00FFFFFFFFFFFFFFFFFFFF32
:1000D800C7FDC902C736F00071F4C6DE06713018D4
:1000E800F9EF2B51105FA8FFD1DD13713018F971AA
:1000F8000300710B2071103EFBFD6201EF1036000A
:1001080000868767D1DFFB66D1DFF6FD6201360026
:1001180000664C09DE2317F104F60FC1317B9EFD02
:10012800C411897217F104F64F14896142DF03F68E
:10013800EF01E660610786EFD867D161E8FDDB0370
:10014800FD5302EF8CC6D7717BFACEA016CEA180E4
:10015800CEA408F5AAFFF5A9FFD78F18F931350AFB
:10016800CD0003CD0306E40EEF07F400CD0306F43B
:100178000EF520FFCE23F0CE2EFCF401F402F40499
:10018800F405F406CD0740F40CF408F40FF521FF4C
:10019800CE22E9CE24FBCE25F3CE26FCCE271FCED9
:1001A8002CFFCE2FFFCE28FFF53000F53100F533B8
:1001B80000F53400CF350003CF370019F53C00F5C2
:1001C8003E00F54300F54700CF530006F55700F60B
:1001D800BEE0BEE2F5D0FFCBE4FFFFCBE6FFFFCEEB
:1001E800D4FFCEE8FFCEECFFCEE9FFCEEDFFCEEA9E
:1001F800FFCEEEFECEEBFFCEEFFFCED8FFCEDCFF7C
:10020800CE38B1CE3971F537FF7108F20090BFB41E
:10021800017138F100F54002F54102F54302F5A5F8
:10022800FFF5A6FF7158F000F530FF7128F0005077
:1002380087BF1801BF1A01BF1C01BF1E017148F01A
:1002480000F53002F5BCFFF5BDFFD7FD5B33FD4778
:100258003BFD2A2F717AFAFD88268F18F931350A65
:1002680031040009CF16F902EF03F516F9FD7934C8
:10027800FDF737FDA402FD2C46713221712BE7FDF5
:10028800C902FD4A3B31342105FD4A3BEFF7FDC960
:1002980002FDCC3BD2DFFA61EDEFE4D73102040373
:1002A800F6EF01E6603418F9718C89718999311279
:1002B8000403F6EF01E6603418F9718C8971999995
:1002C800D7CEABACD78C05318EED830C8C05318E37
:1002D800FD870CD2D7BDD831FFBDDADADAADD8ED5B
:1002E8004F0F8C05318E31AD128C04318E318D0358
:1002F800D7C72006FBF8FFFD9404301400C1300076
:1003080020F7FD0C04C0CC05048C054C14DE08FD58
:10031800CD02615905EFF2CC05048C054C14DE6B57
:10032800FDCD02CC04008C044C04DE4E3182514ACF
:10033800301AF9BC02CC0100FDC90231B2E2063123
:10034800825102EFF6713BE2AC02148E5099715063
:1003580030026179026159018C01D161E83184511F
:10036800DA304000C1FDEA02FDDD02C0D2DD06FD43
:100378001F0FE7EF5A615904EFACFDD40261E800A2
:1003880031845102EF05615905EF8F71603002CC5D
:100398000200CC03008C034C09DE248C03318E123E
:1003A80049F61F728C03318E04F64F14896142DFBF
:1003B80003F6EF01E6600E029C02615903EFD68C4A
:1003C80002D1DF08FD0D0EFD1F0FEF03FD1F0F10FB
:1003D80006C6D7FD9404300800C1300050F7FD0C64
:1003E80004C0FD1F0FF7D73184BD02EFFA717BBD42
:1003F800CBE4FFFFCBE6FFFFCBD4FFFF717ABED77C
:10040800717BBED7C7C3C12006FBF8FF8C109C05C3
:100418008C10318E040C00128C05318EBDD813FD62
:100428003106DE63FDC9028C05318EFD7F0CD2DDFD
:1004380005FDCD02EFF1CC04008C044C04DE3ECC6B
:100448000300301AF9BBAC06148C089EFD118972A2
:10045800AB146299AC06A1BC066179006159038CA2
:1004680003D1DFE2304000C1FDEA02FDDD02C0D267
:10047800DD06FD0804E7EF10615904EFBCFDD40266
:10048800DFFB615905EF89F7100AC6D7717B9D71AB
:100498007BFAFDEF03301AF9FD320DFDBD0CF7D7DD
:1004A800FD9404FD0804FD0C0ECEABAAF7D7CEFAD6
:0A04B8000630D00061DDC161FCD701
:1004C20061CF5100718C7109FECBF800FEFC4F0127
:1004D20000F6BF00F953C0F693935820FEDFF941AE
:1004E2000036744B3474FCEF05118B99A7A51744A1
:1004F200BA4BDFF53602F93074FCEF04CC0000A7EA
:1005020047DFF9410036FC2034BAFCEF05118B9924
:10051200A7A51744FC20DFF536BAFC30BAFCEF047D
:10052200CC0000A747DFF9FCD80000EFFEC361DD75
:10053200717BFABEF0ADD8BEF200DBF6FFADDCBED9
:10054200F000AEF6BDD8AEF40312ADDABEF200AEE4
:10055200F661CD03BDDAC2D7C3F33174D90883C1C2
:10056200F626D8BDD8C0317505C312F623C2FD7B6D
:100572000593DF0312F623C2D7440000DD2761DDB5
:10058200717BFACFE80080BEF6F6BEF4BEF2ADD8BB
:10059200BEF0CFE800818FE8003103FAAFE000F54A
:1005A200E80061CDD7ADD8D7C3F33174DB0F83C177
:1005B200F626D8BDD861317026DABDDAC031750DA4
:1005C20083C312F626DCBDDC61317023C2FDE30574
:1005D20093DF0CF626D8BDD861317026DABDDAC2B7
:1005E200D7C161686BDC6BDDC0DD2F61DD717BFA29
:1005F200CFE80080BEF4ADDCBEF6ADD8BEF0ADDA19
:10060200BEF2CFE800818FE8003103FAAEF0BDD828
:10061200AEF2BDDAF5E80061CDD7F6BDD8BDDAD7C6
:1006220006DABDDAADDC06D8BDD861D8A6DAD7467F
:10063200D8DD0771FF7177D971C0D75BDB9DDB60B5
:100642005BDA9DDAADDC5BD9085BD808BDD8D7C3CD
:10065200C7F3728EFDC162314C4100360020116138
:10066200A072C09EFD62C6C2D7C3C7F3728EFDC11F
:10067200625C0F0C000FFE00314C4100360A201163
:1006820061800FFE0073C09EFD63C6C2D7C5C3144E
:10069200DADCC9DC0000ADDEC1CDDF00C7F4DEFA72
:1006A200DC8DDA5C7F9DDD6BD96BD861F87112DE6F
:1006B200645C7F9DDC616B616A61F87102DE150129
:1006C200707177DB7171DE7174DA8DDB61DC4CFF86
:1006D200DD05D1DF35EF293114DE097152DEEF2A53
:1006E2003102DE06EDA408ED9F083162DEF9ED8CE1
:1006F200087122DE813104DE193152DEEAED77081B
:100702007132DE817114DE7161DE084CFFDDD1D100
:10071200DDDF3152DED83162DEE36100F161DC24DB
:100722007F00146370318C66728DDC3124DE0AB571
:1007320001311C61D8A13175F671FABDDA1337D8CF
:10074200D9E8D8F8DD618A3134DE0AB501311C619D
:10075200D8A13175F671FA35BDD81765D6BDDC154D
:1007620067D606DC377065D61C00BDDC138DDBD680
:1007720007167101DE63D8DAD6071670F11C007114
:1007820004DE1C0006DC570061D88733D8DBD603B1
:100792001261D887158DDAD6031261D88765D8DA47
:1007A200D6BDDC64D8DBD606DCBDDC65D8DBD61C66
:1007B2000061A8DC6103671BDD1ADC0061008DDCCF
:1007C2001C0031731201311C61D8A1146661DC6115
:1007D200D8A3ADD8ED0B0814ADD8A1ED0B08EADA19
:1007E20031730C94DD0901311C61D8A13175F435E6
:1007F20060EF2344EAFFDC76609133311E35311E0F
:100802003571F983DFF533EF0D71FCDCE644FF004F
:100812006168DE72DDE33172DF21618A4C80618AB8
:10082200DC19DF0633718C33DE1183DF0E3571FA8A
:1008320004010035DE054CFEDD4C817174DE6C0076
:1008420061FB618D71F9618C618B618A9DDCF4DEE3
:1008520061F8A4DE7174DF61D8D7C6D4DE61E8FD29
:10086200AF0815BDDA13BDD8C0BDDEC2C4D7510270
:10087200EF047173DEF17174DE9DDEF6EF15F4DCC8
:10088200EFD25104EF055103EF01F17174DE9DDEE9
:100892003080FE61FB14F73172DFE3EFB7CDDE0586
:1008A200EF02F4DE34FF7F3172DFD3EFA78EFC70EC
:1008B2008EFDC1C5C3ADDE315E041A20320000C315
:1008C200C1D8DEF1C1AEF8FCD90800C0C0C0C2C4B4
:1008D200C09EFD609EFCD71489728A049EFDAA0206
:1008E2001411894C40DD0E624C0430020061C830A4
:1008F2000100BF00F9D77C80C5C314DADCC9DC0073
:1009020000ADDEC1CDDF03ED1B09C5C314DADCC9BE
:10091200DC0000ADDEC1CDDF02C7F4DEFADC8DDA29
:100922005C7F9DDD6BD96BD861F87112DE645C7FF0
:100932009DDC616B616A61F87102DE15017171DE25
:10094200707174DA8DDB61DC7177DE7161DE4CFF10
:10095200DD08D1DD407172DDEF423114DE097152E2
:10096200DEEF393102DE03EDA4083154DE1F3164BB
:10097200DE1BED9F08813104DE313142DE07EADA07
:10098200DAD867EF093164DE04517F6155669DDC78
:10099200F4DEED5608817114DE7141DE084CFFDD94
:1009A200C23152DED9D1DDCD7172DC3142DEDE617F
:1009B20028DD13DE0B4CE1DCC57CFF817180EF0684
:1009C2004C20DEC96100BDDAADD8EADC37618A337A
:1009D200618E37618CDC12DD1E37311E35311E35DA
:1009E20071F9B4DBDFF437EF0E33311E33311E33CE
:1009F20071F9B4DBDFF433353164DE2845DF0537C6
:100A02004337DD1ADE0A352533273361D8B1EF0BC0
:100A12007ADE80253723121761D8B1EDE007ED7435
:100A220008ED880833073308611C08611DDEEC4AB3
:100A3200DAFEDDEDA4DA33311E33311E71FA337181
:100A4200F933EFD7C5C314DADCC9DC0000ADDEC16F
:100A5200CDDF01C7F4DEFADC645C7F9DDC616B6193
:100A62006A61F87112DE8DDA5C7F9DDD6BD96BD81D
:100A720061F87102DE1501707177DB7171DE7174DC
:100A8200DA8DDB61DC4CFFDD05D1DF3CEF30310478
:100A9200DE097142DEEF313112DE06EDA408ED9F70
:100AA200083142DEF9ED77083162DE0C7132DE8107
:100AB2003114DE1C3162DEE6ED8408ED8C08712211
:100AC200DE817104DE7161DE084CFFDDCAD1DDDC3E
:100AD2003142DEE73162DECD6120F13C00047F006D
:100AE200146370318C66728DDC3134DE0AA50131FB
:100AF2001C61D8A13175F671FABDDAADD80833BDE3
:100B0200D867618A708DDD3124DE0AB501311C613E
:100B1200D8A13175F671FA35BDDC3000013600001E
:100B22003546DA35DF043346D833DE04B6DCEF125D
:100B3200510361D831050B3526DA353326D83361B6
:100B4200D8B5311C350861DC0861DC35DC0C354672
:100B5200DA35DF043346D83371C061DC0861DC0862
:100B6200370861DC0861DC37DECA08121714ADDC15
:100B7200ED0B087ADB80D7C5C3C18DDA71FA73F841
:100B8200D9ADDA01F04C9FDE622C7FDC5E2C10DEE8
:100B92001F8133DD05311E83DFFB3174DB0914F65F
:100BA2002312F62561D8B3BDD813BDDAC0C2C4D7AB
:100BB2002C08DE163383F8D8DD0B311E618A61FB07
:100BC200618A83DFF5618A08EFD02C07758DD8DD45
:100BD2000D311E33311E3371F985DFF5EFBC3174EF
:100BE200DB09311C03DC045380DDBCF7F6EFB8C52A
:100BF200C3C18DDA71FA73F8D9ADDA01F0DC144CA5
:100C02009E61D8ED8B0BDF0B8DD8BDD813BDDAC03A
:100C1200C2C4D7F6BDDABDD8EFF5C5C3C1ADDADAC5
:100C2200D831750914F62312F661D8B125ED3B0CC3
:100C3200C5C3C1ADDADAD8F4DB0361C8DD3B2355A5
:100C42009E31730A9501311C61D8A13175F6618A12
:100C52004C80618ADC11DF0633718C33DE0983DF5D
:100C62000604010061D8857174DB3561FB9DDB658B
:0D0C720071F99DDA637064BDD8C0C2C4D7AB
:100C7F005208EF065203EF025206FEE600FE1B007B
:100C8F00DC16089F03088F0408089F040862FE24DF
:100C9F0000089F0408EEBF00EEBA00C1C514410E54
:100CAF0011D9D0FF118FD1FF312E45C4C0D7F231EA
:100CBF00A2C401E2D79DE261DD4C09DF12717BFA1C
:100CCF00C18F06089FC9FCC0CF060800EE27003170
:100CDF00F2FA04CF0608004C00DF05D50008DD1638
:100CEF0061DD717BFAD50608DD0ACDE31F61CD61A9
:100CFF00CDEE160061CDFED40061FFFE9A00FCF828
:100D0F00FF0EFEB20061CDFED5004C09DF0EC18F84
:100D1F0006086FC9FC9F0608C0EE0400CF06080046
:100D2F00F8E3D75200EF025202FE3700CFC8FC00A3
:100D3F00CF060800BF0408C716629F0008410011C4
:100D4F008F26259B4100118F27259F0108C6510033
:100D5F00FE62FFEF025205CF060800C1510CFE0ADA
:100D6F0000C0D7C1511DFE0200C0D761DD717BFAF3
:100D7F0070CEC0A59EC47CFF9EC4609EC461CDD7BB
:100D8F0061DD717BFAC18EC45C1BFED6FFCF0608F6
:100D9F0001FED7FFC061CDD731F2FA1AC1AEE4BF61
:100DAF00BAFCAEE6BFBCFCAED4BFBEFC30FFFFBE8C
:100DBF00E4BEE6BED4C0D731F2FA11C1AFBAFCBE61
:100DCF00E4AFBCFCBEE6AFBEFCBED4C0D7C1BFC053
:100DDF00FC13BFC2FC15BFC4FC17BFC6FCC0D7AF06
:100DEF00C0FCDBC2FCEBC4FCFBC6FCD7534B305240
:100DFF005430324E323030475631323000FFC1500E
:100E0F00FEFEAB0061DD717BFACF060800FE0A0023
:100E1F00FEA4FF61CDF8E3EECF00C7FB0408BFBA15
:100E2F00FC8FC0009C05C5C337040600BFBCFC3552
:100E3F0036710E300000522BFE6600C2C4C6301F42
:100E4F000EB800300000B8022004AFBCFCB8003070
:100E5F000F00B802AFBAFC61FF520AFE3AFFECF87E
:100E6F00FF0E717BFAC1C7FB04088C05C65C80FEC0
:100E7F000200C0D761DD717BFA70CFC0FFA59FC0A4
:100E8F00007CFF9FC000609FC00061CDD7618BFECB
:100E9F00E2FF717BBE410011FB000017CEFC006129
:100EAF00CB089EFDF31161C999A58392DFF7D7FE99
:100EBF00B1FED5C8FCDF23C1CF0308035109FEF4EF
:100ECF00FDC0D2DF37FE3800A20408CF0308075158
:100EDF0009FEE1FDD2B20408DF22C7FB040831830B
:100EEF0002C6D7C6510AFECCFD624C1FDF06CFC823
:100EFF00FC01EF04CFC8FC00C0EE5BFEC0EE55FE58
:100F0F00C7C1FB04088B31196C0161589BC0C6D750
:100F1F00717BFAFE4DFEAF0408040600C114368340
:100F2F000E300000522DF3FE77FF8FC000FE2BFE18
:100F3F0061CF5C807C8073C0041900CEFC0F61CB45
:100F4F00C55404EF03C55417FE18FEC7360008BB7F
:100F5F00629C0288089C03D1DD334C41DE2F70F177
:100F6F00312DB161090033081C000851FF612A417E
:100F7F000E118FD0FF613B118FD1FF6138DC0E8BCB
:100F8F005C03DF0964C6C4FE2BFDEECAFDC6C4EECA
:020F9F00C3FD90
:0A0FF60031363A30383A3139000044
:0A20000000060C12181E242A3036C8
:10200A00001632486480961228446076920824406A
:10201A004040666D756C0000404066646976000059
:10202A004040666164640000404066737562000067
:10203A00404066636D70000061636F7300000000CA
:10204A006173696E000000006174616E0000000037
:10205A006174616E32000000636F7300000000005B
:10206A0073696E000000000074616E0000000000D9
:10207A00636F73680000000073696E6800000000F7
:10208A0074616E680000000065787000000000004E
:10209A0066726578700000006C64657870000000F4
:1020AA006C6F6700000000006C6F67313000000041
:1020BA006D6F646600000000706F7700000000001A
:1020CA0073717274000000006365696C000000009F
:0E20DA00666C6F6F72000000666D6F64000030
:1020E8007B5DCFBFA8D6E43FDCEF1AA192C031D008
:0420F80021409705E7
:0A21000031363A30383A3139000028
:10210A0001020203030200FEFBF7F3F0F0F3FA0404
:10211A001225384D5F6E777A776E5F4D3825120437
:10212A00FAF3F0F0F3F7FBFE0002030302020100E8
:10213A000000000000000000000000000000000095
:10214A000000000000000000000000000000000085
:10215A000000000000000000000000000000000075
:10216A000000000000000000000000000000000065
:10217A000000000000000000000000000000000055
:10218A000000000000000000000000000000000045
:10219A000000000000000000000000000000000035
:1021AA000000000000000000000000000000000025
:1021BA000000000000000000000000000000000015
:1021CA000000000000000000000000000000000005
:1021DA0000000000000000000000000000000000F5
:1021EA0000000000000000000000000000000000E5
:1021FA0000000000000000000000000000000000D5
:10220A0000000000000000000000000000000000C4
:10221A0000000000000000000000000000000000B4
:10222A00000000000000000000000000000000ADF7
:10223A0030AE70B000B300B470B5A0B780BA00BBBE
:10224A0090BD00BE00BFF0C300C5C0C800CAC0042C
:10225A000012000C10240010D01BF00AF008E00C49
:10226A00F008C008B007F00B0005D0020009000012
:10227A000000000000000000000000000000000054
:10228A000000000000000000000000000000000044
:10229A000000000000000000000000000000000034
:1022AA00000000000000000000000000000000AD77
:1022BA0030AE70B000B300B470B5A0B780BA00BB3E
:1022CA0090BD00BE00BFF0C300C5C0C800CAC004AC
:1022DA000012000C10240010D01BF00AF008E00CC9
:1022EA00F008C008B007F00B0005D002000900870B
:1022FA009A99993E0000003F01020203030200FE80
:10230A00FBF7F3F0F0F3FA041225384D5F6E777A93
:10231A00776E5F4D38251204FAF3F0F0F3F7FBFEFF
:10232A00000203030202010001020203030200FE8B
:10233A00FBF7F3F0F0F3FA041225384D5F6E777A63
:10234A00776E5F4D38251204FAF3F0F0F3F7FBFECF
:10235A00000203030202010001020203030200FE5B
:10236A00FBF7F3F0F0F3FA041225384D5F6E777A33
:10237A00776E5F4D38251204FAF3F0F0F3F7FBFE9F
:10238A00000203030202010001020203030200FE2B
:10239A00FBF7F3F0F0F3FA041225384D5F6E777A03
:1023AA00776E5F4D38251204FAF3F0F0F3F7FBFE6F
:1023BA00000203030202010001020203030200FEFB
:1023CA00FBF7F3F0F0F3FA041225384D5F6E777AD3
:1023DA00776E5F4D38251204FAF3F0F0F3F7FBFE3F
:1023EA0000020303020201F6DA6E940001020203FC
:1023FA00030200FEFBF7F3F0F0F3FA041225384D5E
:10240A005F6E777A776E5F4D38251204FAF3F0F033
:10241A00F3F7FBFE000203030202010001020203BA
:10242A00030200FEFBF7F3F0F0F3FA041225384D2D
:10243A005F6E777A776E5F4D38251204FAF3F0F003
:10244A00F3F7FBFE0002030302020100010202038A
:10245A00030200FEFBF7F3F0F0F3FA041225384DFD
:10246A005F6E777A776E5F4D38251204FAF3F0F0D3
:10247A00F3F7FBFE0002030302020100010202035A
:10248A00030200FEFBF7F3F0F0F3FA041225384DCD
:10249A005F6E777A776E5F4D38251204FAF3F0F0A3
:1024AA00F3F7FBFE000203030202017F7E7D7C7BC1
:1024BA007A797877767574737271706F6E6D6D6CE8
:1024CA006B6A696867666564636261605F5E5D5CCA
:1024DA005B5A59585756555453525151504F4E4DB5
:1024EA004C4B4A49484746454443420001020203CD
:1024FA00030200FEFBF7F3F0F0F3FA041225384D5D
:10250A005F6E777A776E5F4D38251204FAF3F0F032
:10251A00F3F7FBFE000203030202010008010102B5
:10252A000203030200FEFBF7F3F0F0F3FA041225AC
:10253A00384D5F6E777A776E5F4D38251204FAF35D
:10254A00F0F0F3F7FBFE00020303020201000102AE
:10255A000203030200FEFBF7F3F0F0F3FA0412257C
:10256A00384D5F6E777A776E5F4D38251204FAF32D
:10257A00F0F0F3F7FBFE000203030202010001027E
:10258A000203030200FEFBF7F3F0F0F3FA0412254C
:10259A00384D5F6E777A776E5F4D38251204FAF3FD
:1025AA00F0F0F3F7FBFE000203030202010001024E
:1025BA000203030200FEFBF7F3F0F0F3FA0412251C
:1025CA00384D5F6E777A776E5F4D38251204FAF3CD
:1025DA00F0F0F3F7FBFE000203030202010001021E
:1025EA000203030200FEFBF7F3F0F0F3FA041225EC
:1025FA00384D5F6E777A776E5F4D38251204FAF39D
:10260A00F0F0F3F7FBFE00020303020201000000F0
:10261A0000001F003B005A0078009700B500D40064
:08262A00F300110130014E0123
:10263200506CED032E710300710B20D771130071E2
:102642001B20D730FA00ED213DC1506CFDED2CC0AE
:1026520062D772344FFB89616A99D7C1E6A1C15032
:1026620084FDCB2D1004D7AF0EF92414001231FFD4
:1026720033BDD813BDDAD7300700C1E6A1C15084FB
:10268200FDCB2D1004D7C72008FBF8FFF519F93050
:102692009600FD213D305400BB17C1E6A1C150FE9A
:1026A200C1FD32261006304000BB17C1E6A1C15061
:1026B20006C1FD32261006D2DD0A71004AFBE51979
:1026C200F9EDC027304057BB17C1E6A1C1503EC14A
:1026D200FD3226100617040300C1300400C1500C5D
:1026E200C1506CFD5C2D100630D4C0BB17C1E6A1F1
:1026F200C1500EC1FD32261006F690BB17C1E6A1ED
:10270200C1500CC1FD32261006716201300900FD74
:10271200EC3A6231DEB1609C077163013134200210
:10272200EFFA7122208C07318EF723DD0A24030091
:10273200DD0B240400EF06CF19F902EF2E34392104
:10274200C5304000C1C1FD322610068FF9229F0319
:10275200F9DBFC22AFFA22BF04F933BF06F9DB0032
:1027620023AFFE22BF08F933BF0AF930C800FD21AA
:102772003D30D4C0BB17C1E6A1C1500EC1FD322607
:10278200100630C800FD213D300400FD4B269C0799
:102792004C6DDD0A8C074C6EDD048C074C6F170400
:1027A2000300C1300400C1500CC1FD32261006F6F0
:1027B200BB17C1E6A1C1503EC1FD3226100671729F
:1027C20001300800FDEC3A629F02F930D727FD8AFA
:1027D2003B1008C6D7C7C1FBF8FF8F0CF94F02F9AF
:1027E200DD477122028F02F9318EF7BDD813BDDAAF
:1027F200FD1C0CC9DCCDCC30DF42FD8F06C9DC00EC
:1028020000308043FD460AADD8BDDCADDAC9D866DA
:10281200E6C9DAA242FDF808FD790BADD8BF0EF980
:102822008F0EF99F46FB712302D574FCDF7971226A
:10283200024046FB15DC25FD6926FD1C0CAF04F9A0
:10284200BDDCAF06F9FD8F06FD750B3172DB05FDB0
:10285200F10BEF03FD790BADD8BBEF23FD6926FD2C
:102862001C0CAF08F9BDDCAF0AF9FD8F06FD750B34
:102872003172DB05FDF10BEF03FD790BADD8BBD94E
:1028820003F9F1610900BB318D086E0108BB7123A8
:102892000217C1E6A1C1500CC1FD32261006D2DFDB
:1028A200068F02F99F0CF9A074FCF7C0C6D7C7FDCA
:1028B2007926301100FD213D300F00FD5D263003E9
:1028C20000FD213D301F00FD5D26301600FD213D3B
:1028D200560166D1DD1071704BFBE6A1C15013FDAC
:1028E200AD37C0716307716307CF10F90317F11297
:1028F200C6D7C7716207D510F9DD3C301400FD5A06
:1029020029344BFB895C9F998A0C7CFF50FF5C1435
:10291200D1DD1D8A0C7CFF5C14FD5426710A2356FE
:1029220000310203058666D1DFF7710303710B23C1
:10293200345EFB895CEB99716207F510F9FD79262B
:10294200303300FD213DF6FD5D2671784BFBE6C17B
:102952005013FDAD37C0C6D7C7C1C1FBF8FFCC01CC
:10296200008C025C20D1DD0C710010F98C016C200E
:102972009C01EF118C025C10D1DD0A710810F98CF8
:10298200016C109C018C025C08D1DD0C711010F9F5
:102992008C016C089C01EF118C025C04D1DD0A7180
:1029A2001810F98C016C049C018F4BFB5C9F72D94F
:1029B20010F9F1316D14D910F9F1314D616D0861E1
:1029C2006C5C606162629F4BFB8F57FB7CFF50FF28
:1029D2005E01D1DD218F57FB7CFF5E01FD54267124
:1029E2000A23CC0000310203076159008BD1DFF5C5
:1029F200710303710B23D510F9DD06300A00FD21A6
:102A02003DD910F9F1C15004C15084FDCB2D100401
:102A1200F71004C6D7C7D93FFBF1C15006C1508495
:102A2200FDCB2D10046276D940FBF1C15007C15095
:102A320084FDCB2D100462616617F112C6D7FD1713
:102A42002AF7D7C7FD3726FD3E2671030E715207BE
:102A520030A000FD213D7153075663664C05DE032D
:102A6200E7EF24669F47FB71020E710A20711A205C
:102A7200306400FD213D3102000CFD3726FD3E266B
:102A820071030EE7EF01F7C6D731040018FD3726B0
:102A9200FD3E2671030E715207FD4526FD4526FDBA
:102AA2004526715307FD3726FD3E2671030EF7D7E3
:102AB2008F75FCB075FCD161E8ED592BCF75FC80A8
:102AC200710407E6613012F6710420611043DD2BB8
:102AD200710407E661306061FB7101203104200F4F
:102AE20071304BFBE6A1C15011FDAD37C0EF0C7147
:102AF200384BFBE6C15011FDAD37C04046FB366195
:102B0200D8E576FC4046FB02DC094046FB2C61D846
:102B1200F576FC4076FC01DF0C4046FB02DC064009
:102B220046FB2CDC0BD576FCDF0B4046FB36DE0584
:102B3200712304EF037122043112050671404BFB2D
:102B4200EF0471484BFB31120503E6EF01F66061B9
:102B5200FB714102FD0E2CD7C757008F11F9763059
:102B62001000C150A4FDED2CC0629F11F9D521FBCC
:102B7200DD04F7ED0C2C717BFA667F11F95C08D14C
:102B8200DD1E8F11F95C08D1DF0C301000C150122C
:102B9200FDAD37C0EF0A302000C15012FDAD37C085
:102BA200667F11F95C04D1DD1E8F11F95C04D1DF5F
:102BB2000C300400C15012FDAD37C0EF0A300800DE
:102BC200C15012FDAD37C08F11F95C40D1DD09E66D
:102BD200A1C15012FDAD37C08F11F95C01D1DD08E2
:102BE200E6C15012FDAD37C0717AFA8F11F95C411E
:102BF200D1DD163411F9895CBE99D911F9F1C150B0
:102C020010C150A4FDCB2D1004F7C6D7C7C1FBF8E5
:102C1200FF8F4AFB5C01D1DF2217C1E6A1C1A1A14E
:102C2200C1506CFD5C2D10068B9F47FB8C019F48A9
:102C3200FBE6A1FD4B269F49FBEF04CF47FB634018
:102C420047FB05DE03E6EF01F6F1C15012C150A4C5
:102C5200FDCB2D1004C0C6D7FDB028F7D7FDF42850
:102C6200F7D7C78F5EFB7617F1FD5A29664F5EFBD9
:102C7200DFF1F55EFBF7C6D77140F00071783002E4
:102C8200713AE6713BE2713AEA713BEE5A06FCCFC9
:102C920034024AE552FF711A52710A5271483002E7
:102CA2007130300271203002CF330205CF32020A76
:102CB2007130310271203102713BE6717030028E47
:102CC200265CFC9E26D7717830027148F000D7311D
:102CD2008EED982E300400BF2401D7300400BF22AD
:102CE20001D78B318EFD822ED2D7D7C7C1C1FBF857
:102CF200FF31422003FD2A2F3134200300EFF97106
:102D02003220F521FB8C02318EFD822ED2DD0ACFDC
:102D120021FB02713320F7EF3D8C0AFDD12CFDE13E
:102D22002E8C026C01FDD12CFDD62C301740BF1C1D
:102D320001FDDD2CF6BF2A01710BE2CE44FF318288
:102D4200E202EFFA8E449C01FD0A2F710BE271330D
:102D5200208C01318E121004C6D7C7C1FBF8FF3197
:102D6200422003FD2A2F3134200300EFF971322073
:102D7200FDE42CDD07713320E7A3EF4A8C08FDD177
:102D82002CFDE12E8B6C01FDD12CFDD62C30174091
:102D9200BF1C01FDDD2C8C0A91DF04F6BF2A0171F4
:102DA2000BE2CE44FF3182E202EFFAAC0C148E4405
:102DB2009961790C61690A8C0AD1DFDAFD0A2F71F7
:102DC2000BE2713320F7C0C6D7C7C1FBF8FF31420F
:102DD2002003FD2A2F3134200300EFF971322071D4
:102DE2000AE6FDE42CDD06713320E7EF118C08FDC5
:102DF200D12C8C0AFDD12CFD0A2F713320F7C0C6CD
:102E0200D7C7C1FBF8FF31422003FD2A2F313420FE
:102E12000300EFF9713220710AE6710BE2FDE42C36
:102E2200DD09713320717AFAE7EF52710BE2312238
:102E32002039C7341AFBAC0C1652048B99A5A79201
:102E4200DFF9C63184BD02EFFA717ABDCEB144CB4F
:102E5200B41AFB8C0A318EBEB8CEBB48714BE171FD
:102E62004BE5710ABD8C089E44EF118C089E44719B
:102E72000BE68C0A9F20FBAC0CBF1EFBF7C0C6D72B
:102E8200C716FDBC2E17F1FD982ED2DD06FD0A2FC6
:102E9200E7EF01F7C6D7C716710AE6710BE2669E25
:102EA200443182E20300EFF9F6420401DD09AF0486
:102EB20001BF0C01E7EF01F7C6D7AF2801085CFBA1
:102EC20008BF2801FDEC2CAF28015CFBBF280130B4
:102ED2000400BF2A01301780BF1C01FDDD2CD7AFD3
:102EE2002401086C0408BF2401AF28016C0F086C90
:102EF2000B08BF2801FDEC2CAF2A01085CFB08BFC0
:102F02002A01FDEC2CEDBC2EFDD62CF6BF2A013099
:102F12000B0BBF2801FDEC2C300B0FBF2801FDEC81
:102F22002C300F0FBF2801D7710BBD0000717BBD84
:102F32007132057120F000FDEC2CF6BF2601502401
:102F4200BF1401CB440018300F0FBF28017133208A
:102F5200712320710BE2710AE6FDBC2ECE44FF31D3
:102F620082E202EFFAFD0A2FAF0401BF0C017142A7
:102F720020D731342002EFFAFDE12E71330571289A
:102F8200F000714320D7D7D7F1E7240000D7D964E6
:102F9200FBF1BE66D7D964FBF1BE6AD7D964FBF1F7
:102FA200BE64D77100F200304400BFB60130018820
:102FB200BF9001300984BF9E01BF9C01BF9A01BF2F
:102FC2009801BF9601BF9401BF9201F53CFF30FE0C
:102FD20000BFBE015004BFBC01F6BFB80150EEBF36
:102FE200BA01A1BFB201C918FE008F18F931350725
:102FF200F565FBCB6CFF00D730EF00BFB401F6BF25
:10300200BA017108F200D7D965FBFD8A2FDD1123C1
:10301200DD4423DD3D23DD1F23DD3F23DD44EF3689
:103022008F16F9318F240300DD09240200DF3AFDF7
:10303200DD30D7FD6C30D7F6426CFF61E8E612AEA8
:103042006C23BE6CF6426EFF61E8E612AE6E23BEE2
:103052006ED7FDDD30D7FD6C30D7F6BE6CCB6EFF80
:1030620000D7CB6CFF00F6BE6ED74047FB03DE17DE
:10307200A022FB4022FB7FDE07F6BE6CBE6EEF068F
:10308200D964FBF1BE6ED74047FB0CDE27F6426CDB
:10309200FF61E8B26CFFD964FBF1426EFFDD3BD900
:1030A20064FB12AE6E43DE03E6EF02F6B112AE6EC1
:1030B20003BE6ED7D964FBF1426CFFDD14D964FB09
:1030C20012AE6C43DE03E6EF02F6B112AE6C03BE43
:1030D2006CF6426EFF61E8B26EFFD7D523FBDD04CA
:1030E200B023FBD7CF23FB0AAE6E4228FBDD13AF22
:1030F20028FB426EFFDE05B26EFFEF06AE6EA1A1A7
:10310200BE6EAE6C4226FBDD13AF26FB426CFFDEC9
:1031120005B26CFFEF06AE6CA1A1BE6CD924FBF127
:10312200F734020023DD0625DD0325DF1F4047FBC0
:103132000CDE0CF6BF26FBD964FBBF28FBEF1FD9C0
:1031420064FBF1BF26FBF6BF28FBEF124047FB0CE6
:10315200DE07E6A1BF28FBEF05E6A1BF26FBAE6CAA
:103162004226FBDF0AAE6E4228FB61F8A024FBD7A1
:103172008F2AFBB02AFBD1DF714066FB02DF0D31E3
:10318200C4D00C714BD0CF2DFB02EF03F52DFBD930
:1031920066FBFD8A2FDD0623DD0D23DD14F6BE66F8
:1031A200F52CFBF52BFBD7FD902FF52CFBF52BFB1C
:1031B200D7D52DFBDD2DD92CFBF1E734020023DD21
:1031C2000625DD0325DF05F6BE66EF03FD902FA081
:1031D2002CFB402CFB20DF06F52CFBB02DFBCF2A6D
:1031E200FB16D7FD902FCF2AFBC8D7C78F2EFBB077
:1031F2002EFBD161E8EDB332D969FBFD8A2FDD09DF
:1032020023DD1223DD1B23DD43F6BE6AF530FBF519
:103212002FFBEDB332FD972FF530FBF52FFBEDB30E
:1032220032D930FBF1E734020023DD0625DD032528
:10323200DF05FD972FEF03F6BE6AA030FB4030FB9F
:103242001061F8F530FBCF2EFB32EF65CF2EFB3C41
:10325200D52FFBDD08F6BE6AF52FFBEF54D930FB04
:10326200F1BDD85004FD5A0501087208D930FBF1AE
:10327200312F04F1231489318FD2DD040192DFFC56
:10328200605CC076D1DF05F530FBEF03A030FBE5D3
:103292002FFB665C80D1DD0FFD972F665C40D1DD90
:1032A20010CF2EFBB4EF0A665C40D161F8CF2EFB43
:1032B200B4C6D7D532FBDD04B032FBD7D967FBFDEC
:1032C2008A2FDD0F23DD1A23DD1023DD5523DD29AF
:1032D20023DD3AF6BE64F57AFCD7FD9E2FF57AFC23
:1032E200D7D57AFCDF08FD9E2FE57AFCEF06F6BE05
:1032F20064F57AFCCF32FBFAD7D57AFCDF0BFD9E60
:103302002FE57AFCCF32FBFAD7F567FBD7D57AFCEB
:10331200DF0BF6BE64E57AFCCF32FBFAD7CF67FB50
:1033220002D7D9A3FBFD8A2FDD0923DD2523DD0A80
:1033320023EF1FF6BE64F57AFCD7D57AFCDF08FDD1
:103342009E2FE57AFCEF06F6BE64F57AFCCF32FBDF
:10335200FAD7FD9E2FE57AFCD7C736F00071F4DC70
:10336200297170F000CE9D08CE9EC0CE9F80F5924E
:10337200FFF593FFCE9415E596FFF595FFCE9711D5
:10338200CE9809CE9C7F71003EFB711BE3712BE34B
:10339200711AE7712BE7717A9D710A9E31929E0232
:1033A200EFFA710B9E715320716320717320C6D79F
:1033B200C73152201E715220710A9E31929E02EF35
:1033C200FA346CFB3692FF52078B99A5A792DFF96C
:1033D200710B9EC6D7C7880616316220157162200E
:1033E200C73434FB3092FF1652078B99A5A792DFA0
:1033F200F9C66673671834FBC6D7C77153203164A8
:10340200201E716320710A9E31929E02EFFA34925D
:10341200FF3634FB52078B99A5A792DFF9710B9EF9
:1034220031742013717B9E8F74FB9E9A8F75FB9E65
:103432009B716320717A9EC6D7667367183CFBD76F
:10344200349FFB89616899D772667362183CFBD717
:10345200318EC117F1243000FDD733C0D7675C3FEE
:1034620072667362183CFBD75C3F318EC117F12440
:103472003000FDD733C0D7CF64FBFFF53CFBCF3D17
:10348200FB10CF3FFB5CCF40FB5FD7C788061666B9
:103492004C6061C8ED1F3717F1E73402002561F86F
:1034A200ED7A35B12361E3ED8735B12361E3ED9325
:1034B200352361F8ED993524110024050061D8ED1A
:1034C200B83524030061F8EDBE352361F8ED04360A
:1034D2002361F8EDD5352361F8ED0D37B1240400F1
:1034E20061D8ED623624000061F8ED6E36B1240534
:1034F2000061D8ED7436252361E3ED7D362361F852
:10350200ED86362361F8ED8D362361F8ED9636238C
:1035120061F8ED9D362361F8EDA5362361F8EDAB38
:10352200362361F8EDB2362361F8EDBD362361F83A
:10353200EDC5362361F8EDCA362361F8EDD23624A3
:10354200040061F8EDD7362361F8EDE2362561F823
:10355200EDED362361F8EDF2362407002403006115
:10356200D8EDFD3624000061F8ED02372524100065
:1035720061D8ED6836ED1F37FD3B345CC0316A9F80
:10358200A1FBED1F3730402AFD8A3BFD3B34ED1F86
:1035920037FD3B34ED1F37FD3B344041FB6ADF13FF
:1035A2004042FB68DF0D4C6CDF09305043FD8A3B23
:1035B200713AE6ED1F37FD3B34ED1F3717F1043C3E
:1035C200FB1489616F9967D1DD06309340FD8A3B18
:1035D200ED1F37675C02D1DD08305A2CFD8A3BEFC4
:1035E2000C675C01D1DD06305F2CFD8A3B675C3CD9
:1035F200D1DD0C675C3CFD4A3430642CFD8A3BED26
:103602001F3767D1DD575C01D1DD05300800EF01BE
:10361200F6609F9FFB675C02D1DD03E6EF01F6FDDA
:103622004234675C04D1DD04E6A1EF01F6FD4234C9
:10363200675C08D1DD05302000EF01F6FD423467FA
:103642005C10D1DD05301000EF01F6FD4234675CFD
:1036520020D1DD05304000EF01F6FD4234ED1F3789
:10366200FD3B34ED1F37FD3B34ED1F37FD3B34EDA1
:103672001F37675C0FFD4A34ED1F37675C7FFD52D1
:1036820034ED1F3767FD6A34ED1F37675C07FD5263
:1036920034ED1F3767FD6A34ED1F37675C1FFD523B
:1036A20034EF7A67FD5234EF74FD3B349E99EF6D2F
:1036B200675C7FFD4A34717220EF62FD5F34717284
:1036C20020EF5AFD5F34EF55675C1FFD4A34EF4D22
:1036D200FD3B34EF48FD3B3430FF3DFD8A3BEF3D7F
:1036E200FD3B3430B83DFD8A3BEF32FD3B34EF2DDC
:1036F200FD3B3430DB3DFD8A3BEF22FD3B34EF1DC9
:10370200675C01D1DD17FD2C46EF12FD3B34318E93
:10371200247200DD0524050061F8CEABAAC6D7C726
:1037220016664C30DC094C37DE05FDB233EF5166CC
:103732004C02DF118FA1FB5C03318E316D086F3EAD
:10374200FB0812EF4D664C4FDF06FD4D46F3EF428C
:10375200664C3DDF0CAE90BF9CFBD99CFBF112EF97
:1037620031664C3EDF07D99DFBF112EF25664C7F97
:10377200DF0E30EE40FD8A3B713AE6324A00EF122C
:10378200664C60DC0532EE00EF086673093CFB31E3
:103792008E12C6D7C71617F1241000240500DE09C1
:1037A2006672383CFB00710221C6D7717BFAC7C131
:1037B200C1FBF8FF8C02730944FB5E0AD1DF248C43
:1037C20002318E043CFB14896E0A99710A23CC01E2
:1037D20000310203086159018C01D1DFF471030346
:1037E200710B231004C6717AFAD7675C0372667391
:1037F20062189EFBD7CFA1FB03D7C788061617F125
:10380200E734020025DD2F23DD1725DD1923DD0531
:1038120023DD1BEF2D304000C15012FDAD37C0EF4C
:1038220021FDEC37EF1CFDEC37FDB532EF1466736A
:1038320067189EFBEF0C6791DF08E6C15012FDADE1
:1038420037C0C6D7C71617F1E7240000DD0F23DD06
:1038520061240300DD0C24FB00DD6CEF60323500D7
:10386200EF664047FB5BDC06CFA2FB0FEF3240471F
:10387200FB4CDC06CFA2FB0BEF264047FB33DC06FA
:10388200CFA2FB07EF1A4047FB1ADC06CFA2FB03CD
:10389200EF0E4047FB06DC05E5A2FBEF03F5A2FBBA
:1038A20031120505308000EF01F6086FA2FB081205
:1038B200EF168F9FFBF59FFB318E12EF0B6673099C
:1038C2009EFB318E12EF01F7C6D7C71617F1E72418
:1038D2000000DD3C241000DD1C23DD1C23DD34242C
:1038E2000E00DD18241100DD18240F00DD1824302D
:1038F20000DD18EF23E7EF22E7A3EF1E320400EF0B
:1039020019320500EF14320600EF0F320700EF0AFA
:10391200F7EF07320300EF02F792C6D7D9AEFBF1F9
:10392200312FD7706131FDBA4B1344020071FED7BB
:1039320049B524318EC15013C150A4FDCB2D1004C2
:10394200D7C78F92FCB092FCD161E8ED983AE5922C
:10395200FC31122103ED793A4016F90361E8ED7961
:103962003A8FAFFB2FB3FBFD2539DC118FAFFB9FE5
:1039720044FB8FAFFB9FB3FBF5B4FBEF5F8FB3FB51
:103982004FAFFBDE05A0B4FBEF0B8FAFFB4FB3FBDA
:1039920061D8B0B4FBB093FCD593FCDF3F8FB4FB8E
:1039A2007C804CA0DC0E8FB4FB7C804CC0DE05A07A
:1039B200B3FBEF1B8FB4FB318F44E10071FEDE0FCE
:1039C2008FB4FB318F44C10071FE61C8B0B3FB8F6D
:1039D200B3FB9F44FBCF93FC20F5B4FB8F44FB9FCA
:1039E20041FB8FAFFB9F42FB8FAEFB2FB5FBFD254B
:1039F20039DC418FAEFB9FB5FBFD1E39609F45FB55
:103A0200D9AEFBF1313F609FA4FBFD1E3912FD329E
:103A120039F690F9AEFBF3231231FF31EE03312F69
:103A22001249B524318EC1F6C15050FDCB2D100480
:103A3200CFB6FB64B0B6FBD5B6FBDF118FAEFB9FF2
:103A4200B5FBFD1E3912FD3239CFB6FB64D968FBD6
:103A5200F1E7240000DD1A23DD0523DD0AEF12D988
:103A620064FBF1BD1AEF0DD944FBF1314FBD1AEFE2
:103A720003F6BD1A7113217150F000CE301BCF171F
:103A82000006CE31060000000000000000717A300E
:103A9200710BE3710BE7C6D7C7168B728C01614AB3
:103AA200DE248B728C02614ADE168C01728C0261FA
:103AB2004ADE068C01318EEF048C02318E12EF2821
:103AC2008B318E12EF228B728C02614ADE068B31B1
:103AD2008E12EF148C01728C026142DE068C01316F
:103AE2008EEF048C02318E12C6D7C716710AE771A7
:103AF2000BE37150F000717B30CE3023CF170006FC
:103B0200669E310000000000000000717A30710BE7
:103B1200E73182E302EFFA8D1F7158F000318E1205
:103B2200C6D7F0317E12E678C4FBD78C01F0317E25
:103B320004C4FB14A96168D78C03F0317E04C4FB72
:103B420014A96168D7ED753BC731222104313421B4
:103B52001F7133217123215600664C0BDD1272F363
:103B6200311C7994FCCEFC0061CAFDCC3B86EFE9A6
:103B7200F7C6D7C75600664C08DE0BF0317E12F648
:103B820078C4FB86EFF0C6D7C7C1C1FBF8FFCC01F2
:103B9200008C014C08DE2DFD2D3BDD0AA961490296
:103BA200DF1D00E7EF208C014C08DE10FD2D3BDF0E
:103BB20006AC02B9F7EF0F615901EFEAE7EF0761CF
:103BC2005901EFCD00E71004C6D7C72004FBF8FF68
:103BD200CC02FFCC03008C034C08DE42FD3A3BDDF5
:103BE20024A9E743DF0300EF308C0372F3311C7921
:103BF200C4FBCEFC0061CAD2DF058C03FD243B8CE2
:103C0200039C02EF146159038C034C08DE10FD3A49
:103C12003B61E800615903EFEF615903EFB88C0291
:103C22008161F8ED143DF642C6FB61E800CC01006B
:103C3200CC00018B4C0861C8EDC93C717BFA8C0148
:103C4200F0317E1279C4FBE743DF628BF0317E04F0
:103C5200C4FB14A96168DF348C014DDE0F8C01F0C6
:103C6200317E12F678C4FB615901EFEC6159008B89
:103C72004C08DE138BF0317E04C4FB14A961686129
:103C8200E800615900EFE8717AFAEF3B8BF0317E80
:103C920004C4FB14A9E743DD1DA9128C01F0317E97
:103CA2003378C4FB8BFD243B615901EF09FD2D3BA9
:103CB20061F800615901717AFAFD2D3BDF0300EFD3
:103CC20006615900ED353C717BFACC00008B4C0843
:103CD200DE3D8BF0317E04C4FB14A96168DF1C0059
:103CE2006159008B4C08DE278BF0317E04C4FB1433
:103CF200A9616861E800615900EFE88BF0317E0448
:103D0200C4FB14A9E743DF02F6B9615900EFBE71A3
:103D12007AFA8C0281DD03E7EF01F71004C6D7C7F8
:103D2200C1C1FBF8FFFDC9028C02D1DD126169023B
:103D3200305C03BBF6614900DDEE618900EFF510EE
:103D420004C6D7C1300600C150A8C15030FD5C2D59
:103D52001006D7C72006FBF8FF3481FBC5300600EA
:103D6200C150A8C15030FD5C2D1006D2DD0D347C4F
:103D7200FB895CFC99FDFF3DF7EF378F7CFB5C0113
:103D8200D1DD174016F903DF11301000C1A1FDADDE
:103D920037C031240F0417FD453D4016F901DD11EE
:103DA2004016F906DD0B8F7CFB5C02D161E8FD7ADF
:103DB20043F71006C6D7D97DFBF1C15030FDED2C7B
:103DC200C0629F80FB71304DFB8F55FB5C08D1DFD9
:103DD20006710303710B23F7D7D980FBF1C1D97F99
:103DE200FBC15030FDCB2D100471304DFB8F55FBC4
:103DF2005C08D1DF06710303710B23F7D7C7200AD2
:103E0200FBF8FF300F00C15030FDED2CC04021FB0C
:103E120002DF0771104AFBF7EF3F71184AFBCC072C
:103E220000CC0802CC09808F7CFB5C03D1DF05CC7F
:103E32000607EF03CC062F17040600C1300400C1A9
:103E420050A0C15030FD032E100631240F0A401637
:103E5200F903DF0417FD453DF7100AC6D730040009
:103E6200C15010FDAD37C0D7300800C15010FDADB4
:103E720037C0D78F16F9318FF723DD07240200DD13
:103E820010EF17F5D4FBF5D6FBF5D5FBF5AAFCEF41
:103E9200097152217162217172218FABFCB0ABFCAE
:103EA200D161E8ED943FCFABFC088F16F9318FE773
:103EB20034020023DD0A25DD07252361F3ED543F9B
:103EC2003134071140D4FB02DC2640D4FB26DE202D
:103ED200FD5F3EEF1B40D4FB25DF05FD6A3EEF1080
:103EE20040D4FB94DF0ACF65FB04F516F971322149
:103EF2008F4CFB5C02D1DD15A0AAFC40AAFC0DDCB4
:103F02000FCF65FB04F516F9713221EF03F5AAFC18
:103F12008F19F9318FE7B12361C30871040271016E
:103F220022EF037102223104221140D5FB02DC147C
:103F320040D5FB26DE0EFD5F3EEF0940D5FB256135
:103F4200F8FD6A3E40D6FB01DF08301000C1FDAD2E
:103F520037C031340708715321F5D4FBEF153154C2
:103F62002105F5D4FBEF0CA0D4FBD5D4FB61F8CF2F
:103F7200D4FBFF31440707717321F5D6FBD73174A7
:103F82002104F5D6FBD7A0D6FBD5D6FB61F8CFD658
:103F9200FBFFD7C74016F902DF0E308000C1500880
:103FA200C15050FDCB2D1004C6D7C72004FBF8FF2B
:103FB2004016F903DD064016F905DF218F45FB9C0B
:103FC200038F44FB9C028F7CFB9C018E929B17C14A
:103FD200300400C1F6C15044FD032E10061004C681
:103FE200D7C1506CFDED2CC0629E50D7C7D5AEFC38
:103FF200DD06B0AEFCED9140CFAEFC0231140706F7
:1040020071104BFBEF0471184BFB4016F903DD06F0
:104012004016F905DF798F4BFB7FDAFB76D1DD4E57
:104022008F4BFB9FDAFB665C10D1DD1E8F4BFB5C76
:1040320010D1DD0C308000C15011FDAD37C0EF0A48
:10404200304000C15011FDAD37C0665C02D1DD1EAB
:104052008F4BFB5C02D1DD0C304000C15010FDAD36
:1040620037C0EF0A302000C15010FDAD37C08F7C41
:10407200FB5C03D1DD0E31240F0A30553DFD8A3B36
:10408200D261F80031220707305A2BFD8A3B00C665
:10409200D78F5CFB5C0FD1DD4E8F5CFB5C01D1DD09
:1040A20005F516F9EF418F5CFB5C02D1DD0F710360
:1040B20000710B20711300711B2071030E8F5CFBCA
:1040C2005C08D1DD0571030EEF0E8F5CFB5C04D141
:1040D200DD06711300711B20300500FD213D7102C8
:1040E2000E710A20711A20F55CFBF7D7C731845193
:1040F20002EF66319451047140300231B2E203E7BB
:10410200EF66713BE28F12F9A012F9318EE72400BB
:1041120000DD0E23DD1223DD1C23DD2C23DD31EF38
:10412200388F19F99E50EF2EF6C15084FDED2CC048
:10413200629E50EF21716201300900FDEC3A62315A
:104142005A9E50716301EF0E300800FDE33FEF0607
:10415200300900FDE33FE7EF0F7160300271483034
:1041620002713BE6F512F9F7C6D7C15005C150847A
:10417200FDCB2D1004D78F16F9318FE72400006193
:10418200F8ED814223DD212361F8ED0D422361F830
:10419200ED4C422361F8ED5B422361F8ED66422368
:1041A20061F8EDD942ED1A438F17F9318F240200DD
:1041B200DD26D5D4FBDD05F5B0FCEF03A0B0FC8F06
:1041C200B0FC01DE07F516F9713221D740D4FB03AA
:1041D20061D8ED1D43E517F9F5B0FCFD2A2FFD88E6
:1041E20026FD452AD2DD0A713221FD742FF516F91A
:1041F200D7FD172A7163074017F901DF05F565FB43
:10420200EF04CF65FB03CF16F902D7FDA52FCF37F9
:10421200001DFD7A2C8F3EFB5C02D1DD0A3080004E
:10422200C15010FDAD37C0FD892F714A9DF537FF92
:10423200F517F9713221CBE43FEFCBE6F6F0CED49D
:10424200EF713818F9CF16F903D7FD1E4331040C6C
:1042520007CF16F904713221D7300F00FD6C41CF20
:1042620016F905D7FD1E4331020C13300800FD6C10
:1042720041300500FD213DCF16F902713221D7CF21
:1042820065FB03F6426CFFDF05426EFF61E8D7FD76
:10429200FA2FFDC82CFD882F714B9DF54CFBF54D77
:1042A200FBF54EFBF54FFB716207CF350003CF37AD
:1042B2000019FD8B2ACE3708CBE4BFFFCBE6FFF116
:1042C200CED4FFF6BEE0BEE2BED0F5B0FCCF16F90A
:1042D20006F5D4FBF5D6FB3102071F71720140D4FB
:1042E200FB04DE0C40D6FB04DE064017F902DF2B8E
:1042F200E516F9713221713AE7D771730131949E53
:1043020002EFFAFD742F712AE761FD712BE7E516C2
:10431200F9713221713AE7D700EFFDD73102002956
:10432200F642DCFBDF27E6BFDCFBF6C15004C150DE
:1043320084FDCB2D10048F4BFB5C9F9F4BFB7110B8
:104342005CFB309340FD8A3BD7F6BFDCFBD7FDF91F
:1043520002F7D7BDD8F6BDDAD7F303FDBA4B13D7B0
:10436200ADD8BDDCADDABDDED7DADEC3BDDCF6BD6D
:10437200DEFD2F05C0BDDED7C72024FBF8FF8F82EC
:10438200FBF0F981FBFD5B43BC048F84FBF0F983F6
:10439200FBFD5B43BC028F86FBF0F985FBFD5B43B3
:1043A200BBAC04FD5543AC04311EBDDCF6BDDEFDE5
:1043B2002F05FD6243AC02FD5543AC02311EDADC2F
:1043C200C3FD6B43C0BDDCADDEFD2206FD6243AB27
:1043D200FD5543AB311EDADCC3FD6B43C0BDDCAD22
:1043E200DEFD2206FD1C0CDADAADD8FCC24B00C39E
:1043F200C58F6CFC5C3FF0317E04ECFB14C2C0BD87
:10440200D813BDDA3172DB05FDF10BEF03FD790B39
:10441200ADD8B9A06CFCF6BC20BC229C1F8C1F4CF2
:104422002EDD3C8F6CFC0E1F70F161DC605C3FF096
:10443200317E1279ECFBFD55438C1F7309E825315F
:104442008FBDDC70BDDEFD2F05AC20BDDCAC22FDD6
:104452002206ADDABC22ADD8BC2061591FEFBEAC3A
:1044620020BDD8AC22BDDAC9DC0004F6FDAA05C91C
:10447200DCFFFFF6FD3D06ADD8BFE4FBAFDEFB423D
:10448200E4FBDD12AFE0FBBFE2FBAFDEFBBFE0FB14
:10449200AFE4FBBFDEFBAFE0FB42E2FBDC50AFDE92
:1044A200FB42E0FBDE48AFB2FC42DEFBDE4040E610
:1044B200FB16DC1F40E6FBA0DE168FE7FB4FE6FB98
:1044C200DE0EAFDEFB22E8FB44691061C8FD394510
:1044D200F5E6FBAFDEFB445146DC0BAFDEFB2410FE
:1044E20027BFB4FCEF1930F82ABFB4FCEF1140E645
:1044F200FBFFDD03E6EF01F634E6FB89610899AFC5
:10450200E2FB42E0FBDC1BAFE0FB42DEFBDE13AF73
:10451200DEFB42B4FCDE0BF5E7FBAFDEFBBFE8FBE4
:10452200EF1140E7FBFFDD03E6EF01F634E7FB891D
:104532006108991024C6D7C72006FBF8FFA087FBA5
:10454200D587FBDF1CA088FBD588FBDF14A089FB85
:10455200D589FBDF0CCF87FBFFCF88FBFFCF89FB21
:10456200FF717BFA710A9E31929E02EFFA8E98FDDC
:1045720051069C038E949FB6FC8E969FB7FC8E9735
:104582009FB8FCFDDF4613BC048FB9FC4E03DF125B
:10459200AF70FC614904DE41AC042270FCFD0E46A2
:1045A200EF378C03318EB112D9B9FCF143DF1F8C86
:1045B200035C0391DF03E6EF01F6046D01313D1266
:1045C20001032270FC610904BBFD0E46EF0B8FB99B
:1045D200FC4E03DE04F6FD0E468C039FB9FCAC04D0
:1045E200BF70FCD96EFCF101041AF914A944FFFF53
:1045F200DF04E6B9EF12D96EFCF101041AF914A92D
:1046020044FEFFDD03A9A1B91006C6D7C716174499
:104612000001DC02F616A06EFCF96EFCF3311CF60A
:10462200781AF9B7F647DFEEC6D7C7560066F031FB
:104632007E12F6B1781AF99666D1DFF1F587FBF5AD
:1046420088FBF589FBC6D7711322D7C72004FBF874
:10465200FFD912F9F1E7240000DD1123DD1E23DD6D
:104662002523DD2C23DD3723DD3CEF428F6EFC9FBB
:1046720072FCA012F9D9B6FCF112EF5DA012F9D9C1
:10468200B7FCF112EF53A012F9D9B8FCF112EF49BD
:10469200A012F98FB9FCFD6B06318E12EF3BA0120E
:1046A200F9325500EF33A012F932AA00EF2BF9725A
:1046B200FCF3311C791AF9BB311222058B9C03EFF2
:1046C200078C019C03B072FC718071172261DC615E
:1046D200FB7111228C03318E121004C6D7C720063B
:1046E200FBF8FF8E98FD51069C038E97FD51069CA8
:1046F200028E96FD51069C018E94FD51069B710B14
:104702009E717AFA8C02F0317E12791826BC048CE2
:10471200035C03D1DF158C024C03DE0C8C024C02CD
:10472200DF098C014C1D61F86179048C01318EB175
:10473200610904BC04313D120103BC048C040D70F8
:0B4742008C051C00BC04121006C6D73A
:10474D0061FC61FC61FC61FC61FCC1C3C5C7520C1D
:10475D00929269D4FEC1DFF88EFD708EFCC14016B9
:10476D00F903DF09717AFA305A2BFD8A3BC09EFCA2
:10477D00609EFD34D4FE5206C0B9A5A592DFF9C6E0
:10478D00C4C2C061FCC1C3C5C7520C929269D4FEAC
:10479D00C1DFF88EFD708EFCC1717AFA31A25141E4
:1047AD00F578FC71483002716030023104212671B8
:1047BD000A23710321D54CFBDF0FD54DFBDF0AD545
:1047CD004EFBDF05D54FFBDD0C31020302EFFA7115
:1047DD000303710B23FD4946FDFC33F512F9EDC1C1
:1047ED00483184510DF578FC71483002FDFC33EDF4
:1047FD00C148319451154078FC03DD0C4078FC0420
:10480D00DD064078FC0161F8F578FCD978FCF1E71C
:10481D00240000DD0823DD1323DD35EF5271403018
:10482D0002E578FC71503002EDC1488E509F13F9AE
:10483D00D913F9F1FD2137629F15F94013F97FDD89
:10484D0006CF78FC02EF03F578FC71503002EF646F
:10485D003194511731C45106CF78FC03EF11F5781F
:10486D00FC7148300271603002EF49CF78FC044092
:10487D0078FC03DF0E8F15F99E50D913F9F1FD96D3
:10488D0037EF118E507617F1C1D913F9FD8D34C064
:10489D00715030024013F94FDD094013F97F61E883
:1048AD00A013F94078FC03DF0BD913F9F1FD213783
:1048BD00629F15F9C09EFC609EFD34D4FE5206C069
:1048CD00B9A5A592DFF9C6C4C2C061FCC1C3C5C7F5
:1048DD00520C929269D4FEC1DFF88EFD708EFCC130
:1048ED00F616717AFA714AE5717BBD51405F04018C
:1048FD00D1DD05A7F647DFF3300400BF2401F6BF75
:10490D002A01300B0BBF2801FDEC2C300B0FBF28FB
:10491D0001FDEC2C300F0FBF2801710AE671332019
:10492D00C09EFC609EFD34D4FE5206C0B9A5A59272
:10493D00DFF9C6C4C2C061FCC1C3C5C7520C929297
:10494D0069D4FEC1DFF88EFD708EFCC1717AFAD587
:10495D0020FBDD0EEB1EFB899E44A21EFBB020FB4F
:10496D00EF2B710AE6300400BF2401F6BF2A013097
:10497D000B0BBF2801FDEC2C300B0FBF2801FDECFC
:10498D002C300F0FBF2801712320713320C09EFCE6
:10499D00609EFD34D4FE5206C0B9A5A592DFF9C6BE
:1049AD00C4C2C061FC00EFFD61FC00EFFD61FC00C5
:1049BD00EFFD61FC00EFFD61FC00EFFD61FC00EF20
:1049CD00FD61FC00EFFD61FC00EFFD61FC00EFFD02
:1049DD0061FC00EFFD61FC00EFFD61FC00EFFD618E
:1049ED00FC00EFFD61FC00EFFD61FC00EFFD61FCE3
:1049FD0000EFFD61FC00EFFD61FC00EFFD61FC00CF
:104A0D00EFFD61FC00EFFD61FC00EFFD61FC00EFCF
:104A1D00FD61FC00EFFD61FC00EFFD61FC00EFFDB1
:104A2D0061FCC18F76FB4F96FFDF328F77FB4F977F
:104A3D00FFDF2A8F78FB4F98FFDF228F55FB5C0439
:104A4D00D1DF1A71204DFB710303710B234016F951
:104A5D0006DD064016F90161F8CF17F902C061FCB9
:104A6D0071222161FCC1C3C5C7520C929269D4FE5B
:104A7D00C1DFF88EFD708EFCC1717AFA8E31318EE8
:104A8D00E7240600DD0923DD1D23DD3123EF49D9A0
:104A9D00C0FBF104B7FB148D1F9930B7FBFD9A3A9B
:104AAD00629FAFFBEF32D9C0FBF104BAFB148D1F2F
:104ABD009930BAFBFD9A3A629FAEFBEF1BD9C0FB52
:104ACD00F104BDFB148D1F9930BDFBFD9A3A629F19
:104ADD0002F930D727FD8A3B4031FF08DD08A031B0
:104AED00FF717201EF1C7158F00071730171122189
:104AFD0040C0FB02DF03F6EF05D9C0FBF1A1609FBB
:104B0D00C0FBC09EFC609EFD34D4FE5206C0B9A50C
:104B1D00A592DFF9C6C4C2C061FCC1C3C5C7520CA2
:104B2D00929269D4FEC1DFF88EFD708EFCC1717A50
:104B3D00FA8F7CFB5C03D1DD164016F903DD0640D0
:104B4D0016F905DF0A31240F0630553DFD8A3BC0AD
:104B5D009EFC609EFD34D4FE5206C0B9A5A592DF21
:074B6D00F9C6C4C2C061FCDF
:104B74000000000000000000753E4339B22A0930ED
:104B84007231ED31B532EE3F953FAC3F78410020B4
:104B9400753E4339B22A09307231ED31B532EE3FF8
:104BA400953FAC3F78410000000000000000983AB7
:064BB400F82A23301299DB
:104BBA00317503F7332312D7C73314F4DCCDDF8002
:104BCA00FC2A4C00CDDF16ECD54B00C64ADE02DECD
:104BDA003815014CFFDD290361C8DD241571FB4A34
:104BEA00DC80DC17DF08618A718C618ADE0D82DF66
:104BFA000A83DF07A5A144807FDE0B448000DC0125
:104C0A00D7CDDE01EF03CDDE03EDAF08F10361C8B6
:104C1A00DD03F4DED73174DEF934FF7FCDDE05D74C
:104C2A00159DDE010361C8DDE9234CFFDDDE31722B
:104C3A00DEE7D1318EDF11C9DA807EBDD89DDDFD78
:104C4A009F0615317E247E0036E820247C00553EDE
:104C5A00311FDE04A136F220C151806174C5C38DB3
:104C6A00DCC1410011ABBDD811AC02BDDA118C0810
:104C7A009DDDC7FD9F06C611AC04BDD811AC06BDAB
:104C8A00DA118C099DDDFD1C0920046ADF03FC4C46
:104C9A004D00FCD84C00FD9F06FC2D4D00FD9F06E3
:104CAA00C9DAC03FC9D80000F4DD51806175FD1C26
:104CBA0009FC154D00FD9F06B4DF4ADF80DFCFFCFB
:104CCA002D4D00FD9F06100AC0317D0514D715BD74
:104CDA00DA13BDD88DDC9DDDD7C9DA803FC9D8008B
:104CEA0000F4DDD7118C019DDD11AC02BDD811ACE9
:104CFA0004BDDA1704060016D78C019DDDAC02BD8F
:104D0A00D8AC04BDDA1704060016D7A806BDDAA87F
:104D1A0004BDD888089DDDD7A80C14A80A128809F2
:104D2A009DDCD7A80CBDDAA80ABDD888099DDDD7B5
:104D3A00A80635B806A80433B804880861A8DC9820
:0D4D4A0008D715B80613B8048DDC9808D7FB
:0A4FF60031363A30383A3139000004
:00000001FF


File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

BIN
branches/0.10(X3)/bsr.lmf Normal file

Binary file not shown.

576
branches/0.10(X3)/bsr.sym Normal file
View File

@ -0,0 +1,576 @@
#05
;FF PUBLIC
02FFED8@@CPR1
02FFEDE@@FPRF1
02FFEDF@@FPRF2
02FFEDE@@FPRFP
02FFED8@@FPRS
02FFEDC@@FPRXD
02FFEDC@@FPRXP
02FFEDD@@FPRXS
0100683@@bbcd
0100669@@bcdtob
0100924@@fadd
0100933@@fadde
0100934@@faddx
0100A5E@@fdiv
0100A6E@@fdivx
01008A4@@finfws
0104F7C@@fldd2
0104F6F@@flds1
0104F87@@flds2
0104F32@@fldsd
0104F48@@fldsk_f
0104F5D@@fldsk_n
01008C7@@fmthrr
01006A7@@fmul
01006B7@@fmulx
01007F8@@fnor
010086E@@fret
010088C@@fret0
010088F@@fret0s
0100898@@fret0x
0100B8D@@frev
0104E2F@@frnd
0104E84@@fsqrtx
0104FA6@@fst1d
0100830@@fstore
0104F3D@@fstrcp
0100910@@fsub
0100B91@@ftols
0100BA3@@ftolse
0100C09@@ftolu
0100823@@funite
010089C@@fx0div
0104F94@@fxcd1
0100888@@fxinex
01008BC@@fxnan1
01008B7@@fxnan2
01008A0@@fxover
0100649@@iscmp
0100572@@isrem
0100593@@iurem
010063A@@lsadd
0100655@@lsband
01005C2@@lsdiv
0100547@@lsmul
0100C34@@lstof
010063A@@luadd
0100655@@luband
01005FB@@ludiv
0100547@@lumul
0100C4A@@lutof
0100C53@@lutofe
0100E89FSL_AFTER_SWAP_BEGIN
000002BFSL_AFTER_SWAP_SIZE
0100E9BFSL_PHYSICALLY_SWAP_BEGIN
0100EB4FSL_PHYSICALLY_SWAP_ENTRY
0000019FSL_PHYSICALLY_SWAP_ENTRY_OFFSET
000002DFSL_PHYSICALLY_SWAP_SIZE
02FFC78_?DATA
02FFCCE_?DATAL
02FFCBE_?DATS
02FFCBE_?INIS
02FFCBE_?INIT
02FFCCE_?INITL
01020FC_?RLINIT
01020FC_?R_INIS
0104E14_?R_INIT
0000000_@MAA
02FFED8_@RTARG0
02FFED9_@RTARG1
02FFEDA_@RTARG2
02FFEDB_@RTARG3
02FFEDC_@RTARG4
02FFEDD_@RTARG5
02FFEDE_@RTARG6
02FFEDF_@RTARG7
02FFED4_@SEGAX
02FFED5_@SEGBC
02FFED6_@SEGDE
02FFED7_@SEGHL
00FFE00_@STBEG
00FFCCE_@STEND
0100547_@cend
01004DA_@cstart
0100010_@vect10
0100012_@vect12
010001C_@vect1c
0100024_@vect24
010002A_@vect2a
0100034_@vect34
0100036_@vect36
0100038_@vect38
010003A_@vect3a
010004A_@vect4a
010005A_@vect5a
0100062_@vect62
0100F27_ASM_calc_security
0100CC2_ASM_check_block
0100C97_FSL_BlankCheck
0100F6C_FSL_EEPROMWrite
0100C9B_FSL_Erase
0100E24_FSL_ForceReset
0100C9F_FSL_IVerify
0100D4A_FSL_Init
0100D4E_FSL_Init_cont
0100E25_FSL_InvertBootFlag
0100CD5_FSL_ModeCheck
0100DA7_FSL_SetInterruptMode
0100D82_FSL_SetMode_A0
0100D8A_FSL_SetMode_A1
0100F37_FSL_SwapBootCluster
0100F67_FSL_Write
0100CDC_FSL_execute
0102CBF_IIC_ctr_Init
0102D16_IIC_ctr_Stop
0102FFA_IIC_twl_Init
010304F_IIC_twl_Stop
0103073_LED_init
01030C6_LED_stop
0102974_PM_BL_set
0102914_PM_LCD_off
01028D9_PM_LCD_on
0102A3E_PM_LCD_vcom_set
0102800_PM_bt_temp_update
01026B1_PM_init
0102ADB_PM_sys_pow_off
0102A68_PM_sys_pow_on
0103427_RTC_init
0300110_SW_HOME_n
02FFBD9_SW_home_count
030010E_SW_home_mask
02FFBD8_SW_pow_count
030010D_SW_pow_mask
02FFBDA_SW_wifi_count
030010F_SW_wifi_mask
0100E41_SetInfoBootSwap
0100F0B_SetInfo_OldBootSwapEntry
0100ED6_SetInfo_common
0100F01_SetInfo_execute
0100F10_SetInfo_execute_exit
01002D8_WDT_Restart
0104E14_abs
0103EB2_acc_hosu_set
0103E6B_acc_read
0103E8E_acc_write
02FFBB3_adc_raw_dep
02FFBB2_adc_raw_vol
0300109_adc_updated
0103999_adrs_table_twl_ext2int
0104750_clear_hosu_hist
0100D7E_common_exit_fsl_function
0100D7C_common_exit_param_err1
010417B_do_command0
02FF900_errno
0104732_fill_hosu_hist_hours
01003F3_firm_restore
0100310_firm_update
0104C2C_fn_intcmp0
0104C31_fn_intcmp1
0104C36_fn_intdma0
0104C0E_fn_intlvi
0104C6D_fn_intmd
0104C13_fn_intp0
0104C18_fn_intp1
0104C1D_fn_intp2
0104C22_fn_intp3
0104C68_fn_intrtc
0104C40_fn_intsr0
0104C4F_fn_intsr1
0104C45_fn_intsre0
0104C54_fn_intsre1
0104C3B_fn_intst0
0104C4A_fn_intst1
0104C59_fn_inttm01
0104C5E_fn_inttm02
0104C63_fn_inttm03
0104C72_fn_inttm04
0104C77_fn_inttm05
0104C7C_fn_inttm06
0104C81_fn_inttm07
0104C09_fn_intwdti
0102526_fsl_fx_MHz_u08
0102527_fsl_low_voltage_u08
02FFCBE_fsl_mk0_bak
02FFCC0_fsl_mk1_bak
02FFCC2_fsl_mk2_bak
0103B9A_get_adc
0104803_get_long_hour
0100149_hdwinit
0104771_hosu_read
010476D_hosu_read_end
02FF912_iic_burst_state
02FFB21_iic_mcu_bus_status
0300103_iic_mcu_busy
0300104_iic_mcu_initialized
0102DAA_iic_mcu_read
0102D3B_iic_mcu_read_a_byte
0102F78_iic_mcu_start
0102FD4_iic_mcu_stop
0300102_iic_mcu_wo_dma
0102E51_iic_mcu_write
0102E19_iic_mcu_write_a_byte
02FFB20_iic_send_wo_dma_len
02FFB1A_iic_send_work
0104CC9_int_adc
0104A19_int_dma1
0104A85_int_iic10
01048B6_int_iic_ctr
0104AF2_int_iic_twl
0104871_int_kr
0104C86_int_rtc
0104CC4_int_rtc_int
0104C27_intp21_RFTx
0104D7E_intp23_ACC_ready
0104873_intp4
0104877_intp4_extdc
0104875_intp5
0104879_intp5_shell
010487B_intp6_PM_irq
0300108_irq_readed
02FFCBB_last_day
02FFCBA_last_hour
02FFCBC_last_month
02FFCBD_last_year
01000D8_main
0100256_main_loop
0100DDE_maskload
0100DBF_masksave
01008F1_matherr
01004CE_my_reboot
0102D3A_nop8
0102B9F_ntr_pmic_comm
02FFB1E_p_iic_send_wo_dma_dat
02FFC72_p_record
010449E_pedometer
02FF91A_pool
02FFB23_pre_dat
02FF902_raw_adc_temperature
02FF903_rcomp
0300111_record_read_msb_lsb
030010A_renge_flg_interval
0103BF5_renge_init
0103C38_renge_task_immed_add
0103C7A_renge_task_immed_run
030010C_renge_task_immediate_not_empty
0103BF8_renge_task_interval_run
030010B_renge_task_interval_run_force
0300107_rtc_alarm_dirty
010347E_rtc_buf_reflesh
0300106_rtc_dirty
0300105_rtc_lock
01034C8_rtc_unlock
02FFB38_rtc_work
010387A_set_irq
01034A3_set_rtc
0104E1C_sqrt
0104E1C_sqrtf
0100E9B_swap_physically
02FF916_system_status
02FFBC6_system_time
02FFBC8_tasks_immed
02FF908_temp_co_dn
02FF904_temp_co_up
02FFBDD_temp_debug_3
02FFB24_tot
0103A10_tsk_adc
0102AF7_tsk_batt
0103E03_tsk_cbk_accero
0104084_tsk_debug
010408B_tsk_debug2
0103381_tsk_led_cam
01032B9_tsk_led_notify
01030D5_tsk_led_pow
010323E_tsk_led_wifi
01040CE_tsk_misc_stat
0103F25_tsk_sw
010427A_tsk_sys
0102CA9_tski_PM_BL_set
0102CA4_tski_PM_LCD_off
0102C9F_tski_PM_LCD_on
0104474_tski_firm_update
01041E5_tski_mcu_info_read
01004C0_tski_mcu_reset
0102A63_tski_vcom_set
0300101_update
02FFB22_vreg_adrs
02FFB40_vreg_ctr
0103863_vreg_ctr_after_read
0103545_vreg_ctr_init
01037EE_vreg_ctr_read
010355A_vreg_ctr_write
02FFBA2_vreg_twl
01038C4_vreg_twl_init
0103913_vreg_twl_read
01038C9_vreg_twl_write
0103DCF_wait_ms
0100E2BcontinueInvertBootFlag
0100EC8copyToDataBuffer
0100E37returnAfterRAMExecution
02FFCCCset_info_interrupted
;FF @cstart
;FF loader
<010015F_hdwinit2
;FF pm
<01022F9_BT_PANA_RCOMP
01022FE_BT_PANA_TEMPCODN
01022FA_BT_PANA_TEMPCOUP
0102139_BT_PARAM
0102C53_PM_get_batt_left
02FFC7A_charge_hys
02FFC78_count
010210A_lpf_coeff
02FF90C_rawdat_old
02FF910_reg_shadow
02FFC79_task_interval
02FF90E_temperature
01026A2bs_F0145
010266Bbs_F0146
0102677bs_F0147
0102685bs_F0148
0102654bs_F0149
0102660bs_F0150
0102642bs_F0151
0102632bs_F0153
0102637bs_F0154
010263Cbs_F0155
0102692bs_S0144
010264Bbs_S0152
01026B1es_F0145
0102677es_F0146
0102685es_F0147
0102692es_F0148
0102660es_F0149
010266Bes_F0150
010264Bes_F0151
0102637es_F0153
010263Ces_F0154
0102642es_F0155
01026A2es_S0144
0102654es_S0152
;FF i2c_ctr
<0102302_lpf_coeff
02FF913_reg_adrs
02FF914_reg_adrs_internal
02FFC7C_state
02FF915_tx_buf
;FF main
<0102332_lpf_coeff
01002B3_read_dipsw
;FF magic
<0102100_MGC_HEAD
0100FF6_MGC_LOAD
0104FF6_MGC_TAIL
;FF WDT
;FF i2c_mcu
<0102ED0_iic_mcu_call_slave
0102EE6_iic_mcu_send_a_byte
0102F2F_iic_mcu_send_re_st
0102F58_iic_mcu_send_sp
0102F0A_iic_mcu_send_st
0102362_lpf_coeff
0102D32bs_F0084
0102D1Fbs_F0085
0102D24bs_S0086
0102D2Bbs_S0087
0102D3Aes_F0084
0102D24es_F0085
0102D2Bes_S0086
0102D32es_S0087
;FF i2c_twl
<0102392_lpf_coeff
;FF ini_VECT
;FF led
<01023F1_MSG_MAIL
02FFB2A_blue_to
02FFB27_delay
02FFB35_flag_wifi_TX
02FFB31_flag_wifi_TX
02FFB33_flg_char_space
01031A9_led_pow_hotaru
0103138_led_pow_normal
01023C2_lpf_coeff
02FFB2C_red_to
02FFB2F_remain_wifi_tx
02FFB26_state
02FFB28_state
02FFC7E_state_led_cam
02FFB37_state_led_cam_twl
02FFB34_state_notify_led
02FFB30_state_wifi_tx
02FFB32_task_interval
02FFB36_task_interval
02FFB2E_task_interval
0103058bs_S0172
010305Ebs_S0173
0103065bs_S0174
010306Cbs_S0175
010305Ees_S0172
0103065es_S0173
010306Ces_S0174
0103073es_S0175
;FF rtc
<01023F6_lpf_coeff
;FF vreg_ctr
<0102426_lpf_coeff
02FFBA0_rsub_temp
0103536bs_F0101
010351Ebs_F0102
010352Bbs_S0103
0103516bs_S0104
0103507bs_S0105
010350Ebs_S0106
0103545es_F0101
010352Bes_F0102
0103536es_S0103
010351Ees_S0104
010350Ees_S0105
0103516es_S0106
;FF vreg_twl
<0102456_lpf_coeff
02FFC80_tasks
01038B9bs_S0051
01038C4es_S0051
;FF adc
<02FFBB6_bt_temp_old
02FFBB8_diffs
02FFBBA_force_update_vol
0103B48_getmean3
02FFBC1_hist_bt_temp
02FFBBE_hist_snd_vol
02FFBBB_hist_tune
02FFBC4_index
02FFC97_kikan_count
0102486_lpf_coeff
02FFBB4_old_tune
02FFBB7_old_value
01024B5_slider_to_codec
02FFBB5_sndvol_codec
02FFC96_task_interval
02FFBB9_vol_old
01039FFbs_F0074
01039F2bs_F0075
01039EBbs_S0076
0103A10es_F0074
01039FFes_F0075
01039F2es_S0076
;FF renge
<0103C23_renge_task_immed_init
02FFC98_tasks
0103BDBbs_S0094
0103BE8bs_S0095
0103BD2bs_S0096
0103BE8es_S0094
0103BF5es_S0095
0103BDBes_S0096
;FF accero
<01024F6_lpf_coeff
0103DF3bs_F0038
0103E03es_F0038
;FF self_flash
<0100420_FSL_Close
0100407_FSL_Open
0100424_firm_duplicate
01004AC_my_FSL_Init
01002F4bs_F0061
01002EBbs_F0063
01002DCbs_F0064
0100301bs_S0060
01002E3bs_S0062
0100301es_F0061
01002F4es_F0063
01002E3es_F0064
0100310es_S0060
01002EBes_S0062
;FF reboot
;FF sw
<02FFCAE_cnt_force_off
0102528_lpf_coeff
02FFCAF_task_interval
0103F1Dbs_F0060
0103F25es_F0060
;FF task_debug
<02FFCB0_count
0102558_lpf_coeff
02FFBDC_task_interval
;FF task_misc
<010425D_end
02FFCB2_interval_task_misc_stat
0102588_lpf_coeff
02FFBDE_state_old
01040C2bs_F0060
01040CEes_F0060
;FF task_sys
<010442B_chk_emergencyExit
01025B8_lpf_coeff
02FFBE0_state
02FFCB4_timeout
010426Ebs_F0057
010427Aes_F0057
;FF pedo_alg_thre_det2
<0102618_DAYS_FROM_HNY
02FFBE2_acc_norm
02FFBE8_acc_norm_temp
02FFC70_hist_indx
010465D_hosu_increment
02FFBEA_interval_hh
02FFC74_last_hour_fny
01025E8_lpf_coeff
02FFBF0_norm_hist
02FFC76_p_record_buffer
02FFBEE_peak_h
02FFBEC_peak_l
02FFC71_t_rise
02FFCB6_th_H
02FFCB8_th_L
02FFBEB_time_l
010447Fbs_F0097
010448Fbs_S0096
0104486bs_S0098
0104479bs_S0099
0104486es_F0097
010449Ees_S0096
010448Fes_S0098
010447Fes_S0099
;FF fsl_block_cmd
;FF fsl_block_check
;FF fsl_common
;FF fsl_reset
;FF fsl_si_ibf
;FF fsl_phySwap
;FF fsl_si_common
;FF fsl_swap
;FF fsl_write
;FF @lumul
;FF @isrem
;FF @iurem
;FF @lsdiv
;FF @ludiv
;FF @ladd
;FF @iscmp
;FF @lband
;FF @SEGREG
;FF @RTARG0
;FF @bcdtob
;FF @bbcd
;FF abs
;FF m_fmul
;FF m_fcom1
;FF m_fcom5
;FF m_fcom6
;FF m_fsub
;FF m_fadd
;FF m_fdiv
;FF m_frev
;FF m_ftols
;FF m_ftolu
;FF m_lstof
;FF m_lutof
;FF m_sqrt
;FF m_fcom4
;FF m_fsqrtx
;FF m_fcom3
;FF @rom
=


File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,656 @@
78K0R Linker W1.31 Date:13 Jun 2010 Page: 1
Command: -yC:\Program Files\NEC Electronics Tools\DEV -_msgoff -obsr.l
mf ..\..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2
.10\lib78k0r\s0rm.rel -go85h,0FC00h,1024 -gi0FFFFFFFFFFFFFFFF
FFFFh -pbsr_k0r.map -nkd -gb7EFBFFh -bC:\Program Files\NEC El
ectronics Tools\FSL78K0R_Type02ES\V1.20\lib78k0r\fsl.lib -bcl
0rdm.lib -bcl0rm.lib -bcl0rmf.lib -iC:\Program Files\NEC Elec
tronics Tools\CC78K0R\W2.10\lib78k0r -dbsr_mcu.dr -s -w0 load
er.rel pm.rel i2c_ctr.rel main.rel magic.rel WDT.rel i2c_mcu.
rel i2c_twl.rel ini_VECT.rel led.rel rtc.rel vreg_ctr.rel vre
g_twl.rel adc.rel renge.rel accero.rel self_flash.rel reboot.
rel sw.rel task_debug.rel task_misc.rel task_sys.rel pedo_alg
_thre_det2.rel
Para-file:
Out-file: bsr.lmf
Map-file: bsr_k0r.map
Direc-file:bsr_mcu.dr
*** Link information ***
68 output segment(s)
3ED6H byte(s) real data
4631 symbol(s) defined
*** Memory map ***
SPACE=REGULAR
MEMORY=BCL0
BASE ADDRESS=00000H SIZE=01000H
OUTPUT INPUT INPUT BASE SIZE
SEGMENT SEGMENT MODULE ADDRESS
@@VECT00 00000H 00002H CSEG AT
@@VECT00 @cstart 00000H 00002H
LDR_CNSL 00002H 00000H CSEG PAGE64KP
LDR_CNSL 00002H 00000H CSEG PAGE64KP
LDR_CNSL loader 00002H 00000H
LDR_CNSL 00002H 00000H CSEG PAGE64KP
LDR_CNSL main 00002H 00000H
LDR_CNSL 00002H 00000H CSEG PAGE64KP
LDR_CNSL WDT 00002H 00000H
LDR_CNSL 00002H 00000H CSEG PAGE64KP
LDR_CNSL self_flash
00002H 00000H
LDR_CNSL 00002H 00000H CSEG PAGE64KP
LDR_CNSL reboot 00002H 00000H
??NMIROM 00002H 00002H CSEG
* gap * 00004H 0000CH
@@VECT10 00010H 00004H CSEG AT
@@VECT10 ini_VECT 00010H 00004H
* gap * 00014H 00008H
@@VECT1C 0001CH 00002H CSEG AT
@@VECT1C ini_VECT 0001CH 00002H
* gap * 0001EH 00006H
@@VECT24 00024H 00002H CSEG AT
@@VECT24 ini_VECT 00024H 00002H
* gap * 00026H 00004H
@@VECT2A 0002AH 00002H CSEG AT
@@VECT2A ini_VECT 0002AH 00002H
* gap * 0002CH 00008H
@@VECT34 00034H 00008H CSEG AT
@@VECT34 ini_VECT 00034H 00008H
* gap * 0003CH 0000EH
@@VECT4A 0004AH 00002H CSEG AT
@@VECT4A ini_VECT 0004AH 00002H
* gap * 0004CH 0000EH
@@VECT5A 0005AH 00002H CSEG AT
@@VECT5A ini_VECT 0005AH 00002H
* gap * 0005CH 00006H
@@VECT62 00062H 00002H CSEG AT
@@VECT62 ini_VECT 00062H 00002H
* gap * 00064H 0005CH
?CSEGOB0 000C0H 00004H CSEG OPT_BYTE
@@CODE 000C4H 00000H CSEG BASE
@@CODE magic 000C4H 00000H
@@CODE ini_VECT 000C4H 00000H
LDR_CODL 000C4H 00000H CSEG
LDR_CODL loader 000C4H 00000H
LDR_CODL main 000C4H 00000H
LDR_CODL WDT 000C4H 00000H
LDR_CODL self_flash
000C4H 00000H
LDR_CODL reboot 000C4H 00000H
?CSEGSI 000C4H 0000AH CSEG
?OCDSTAD 000CEH 0000AH CSEG
LDR_CODE 000D8H 00402H CSEG
LDR_CODE loader 000D8H 0017EH
LDR_CODE main 00256H 00082H
LDR_CODE WDT 002D8H 00004H
LDR_CODE self_flash
002DCH 001F2H
LDR_CODE reboot 004CEH 0000CH
@@LCODE 004DAH 007BDH CSEG
@@LCODE @cstart 004DAH 0006DH
@@LCODE @lumul 00547H 0002BH
@@LCODE @isrem 00572H 00021H
@@LCODE @iurem 00593H 0002FH
@@LCODE @lsdiv 005C2H 00039H
@@LCODE @ludiv 005FBH 0003FH
@@LCODE @ladd 0063AH 0000FH
@@LCODE @iscmp 00649H 0000CH
@@LCODE @lband 00655H 00014H
@@LCODE @bcdtob 00669H 0001AH
@@LCODE @bbcd 00683H 00024H
@@LCODE m_fmul 006A7H 00151H
@@LCODE m_fcom1 007F8H 000CFH
@@LCODE m_fcom5 008C7H 0002AH
@@LCODE m_fcom6 008F1H 0001FH
@@LCODE m_fsub 00910H 00014H
@@LCODE m_fadd 00924H 0013AH
@@LCODE m_fdiv 00A5EH 0012FH
@@LCODE m_frev 00B8DH 00004H
@@LCODE m_ftols 00B91H 00078H
@@LCODE m_ftolu 00C09H 0002BH
@@LCODE m_lstof 00C34H 00016H
@@LCODE m_lutof 00C4AH 0004DH
FSL_CODE 00C97H 00322H CSEG
FSL_CODE fsl_block_cmd
00C97H 0002BH
FSL_CODE fsl_block_check
00CC2H 00013H
FSL_CODE fsl_common
00CD5H 0014FH
FSL_CODE fsl_reset
00E24H 00001H
FSL_CODE fsl_si_ibf
00E25H 00064H
FSL_CODE fsl_phySwap
00E89H 0004DH
FSL_CODE fsl_si_common
00ED6H 00061H
FSL_CODE fsl_swap 00F37H 00030H
FSL_CODE fsl_write
00F67H 00052H
* gap * 00FB9H 0003DH
MGC_LOAD 00FF6H 0000AH CSEG AT
MGC_LOAD magic 00FF6H 0000AH
MEMORY=ROM
BASE ADDRESS=02000H SIZE=03000H
OUTPUT INPUT INPUT BASE SIZE
SEGMENT SEGMENT MODULE ADDRESS
@@CNSTL 02000H 00000H CSEG PAGE64KP
@@CNSTL @cstart 02000H 00000H
@@CNSTL 02000H 00000H CSEG PAGE64KP
@@CNSTL pm 02000H 00000H
@@CNSTL 02000H 00000H CSEG PAGE64KP
@@CNSTL i2c_ctr 02000H 00000H
@@CNSTL 02000H 00000H CSEG PAGE64KP
@@CNSTL i2c_mcu 02000H 00000H
@@CNSTL 02000H 00000H CSEG PAGE64KP
@@CNSTL i2c_twl 02000H 00000H
@@CNSTL 02000H 00000H CSEG PAGE64KP
@@CNSTL ini_VECT 02000H 00000H
@@CNSTL 02000H 00000H CSEG PAGE64KP
@@CNSTL led 02000H 00000H
@@CNSTL 02000H 00000H CSEG PAGE64KP
@@CNSTL rtc 02000H 00000H
@@CNSTL 02000H 00000H CSEG PAGE64KP
@@CNSTL vreg_ctr 02000H 00000H
@@CNSTL 02000H 00000H CSEG PAGE64KP
@@CNSTL vreg_twl 02000H 00000H
@@CNSTL 02000H 00000H CSEG PAGE64KP
@@CNSTL adc 02000H 00000H
@@CNSTL 02000H 00000H CSEG PAGE64KP
@@CNSTL renge 02000H 00000H
@@CNSTL 02000H 00000H CSEG PAGE64KP
@@CNSTL accero 02000H 00000H
@@CNSTL 02000H 00000H CSEG PAGE64KP
@@CNSTL sw 02000H 00000H
@@CNSTL 02000H 00000H CSEG PAGE64KP
@@CNSTL task_debug
02000H 00000H
@@CNSTL 02000H 00000H CSEG PAGE64KP
@@CNSTL task_misc
02000H 00000H
@@CNSTL 02000H 00000H CSEG PAGE64KP
@@CNSTL task_sys 02000H 00000H
@@CNSTL 02000H 00000H CSEG PAGE64KP
@@CNSTL pedo_alg_thre_det2
02000H 00000H
@@CNSTL 02000H 0000AH CSEG PAGE64KP
@@CNSTL @bcdtob 02000H 0000AH
@@CNSTL 0200AH 00010H CSEG PAGE64KP
@@CNSTL @bbcd 0200AH 00010H
@@CNSTL 0201AH 000CEH CSEG PAGE64KP
@@CNSTL m_fcom5 0201AH 000CEH
@@CNSTL 020E8H 00014H CSEG PAGE64KP
@@CNSTL m_fsqrtx 020E8H 00014H
@@R_INIS 020FCH 00000H CSEG UNIT64KP
@@R_INIS @cstart 020FCH 00000H
@@R_INIS loader 020FCH 00000H
@@R_INIS pm 020FCH 00000H
@@R_INIS i2c_ctr 020FCH 00000H
@@R_INIS main 020FCH 00000H
@@R_INIS magic 020FCH 00000H
@@R_INIS WDT 020FCH 00000H
@@R_INIS i2c_mcu 020FCH 00000H
@@R_INIS i2c_twl 020FCH 00000H
@@R_INIS ini_VECT 020FCH 00000H
@@R_INIS led 020FCH 00000H
@@R_INIS rtc 020FCH 00000H
@@R_INIS vreg_ctr 020FCH 00000H
@@R_INIS vreg_twl 020FCH 00000H
@@R_INIS adc 020FCH 00000H
@@R_INIS renge 020FCH 00000H
@@R_INIS accero 020FCH 00000H
@@R_INIS self_flash
020FCH 00000H
@@R_INIS reboot 020FCH 00000H
@@R_INIS sw 020FCH 00000H
@@R_INIS task_debug
020FCH 00000H
@@R_INIS task_misc
020FCH 00000H
@@R_INIS task_sys 020FCH 00000H
@@R_INIS pedo_alg_thre_det2
020FCH 00000H
@@R_INIS @rom 020FCH 00000H
@@CALT 020FCH 00000H CSEG
@@CALT @cstart 020FCH 00000H
@@CALT loader 020FCH 00000H
@@CALT pm 020FCH 00000H
@@CALT i2c_ctr 020FCH 00000H
@@CALT main 020FCH 00000H
@@CALT magic 020FCH 00000H
@@CALT WDT 020FCH 00000H
@@CALT i2c_mcu 020FCH 00000H
@@CALT i2c_twl 020FCH 00000H
@@CALT ini_VECT 020FCH 00000H
@@CALT led 020FCH 00000H
@@CALT rtc 020FCH 00000H
@@CALT vreg_ctr 020FCH 00000H
@@CALT vreg_twl 020FCH 00000H
@@CALT adc 020FCH 00000H
@@CALT renge 020FCH 00000H
@@CALT accero 020FCH 00000H
@@CALT self_flash
020FCH 00000H
@@CALT reboot 020FCH 00000H
@@CALT sw 020FCH 00000H
@@CALT task_debug
020FCH 00000H
@@CALT task_misc
020FCH 00000H
@@CALT task_sys 020FCH 00000H
@@CALT pedo_alg_thre_det2
020FCH 00000H
@@RLINIT 020FCH 00000H CSEG UNIT64KP
@@RLINIT loader 020FCH 00000H
@@RLINIT pm 020FCH 00000H
@@RLINIT i2c_ctr 020FCH 00000H
@@RLINIT main 020FCH 00000H
@@RLINIT magic 020FCH 00000H
@@RLINIT WDT 020FCH 00000H
@@RLINIT i2c_mcu 020FCH 00000H
@@RLINIT i2c_twl 020FCH 00000H
@@RLINIT ini_VECT 020FCH 00000H
@@RLINIT led 020FCH 00000H
@@RLINIT rtc 020FCH 00000H
@@RLINIT vreg_ctr 020FCH 00000H
@@RLINIT vreg_twl 020FCH 00000H
@@RLINIT adc 020FCH 00000H
@@RLINIT renge 020FCH 00000H
@@RLINIT accero 020FCH 00000H
@@RLINIT self_flash
020FCH 00000H
@@RLINIT reboot 020FCH 00000H
@@RLINIT sw 020FCH 00000H
@@RLINIT task_debug
020FCH 00000H
@@RLINIT task_misc
020FCH 00000H
@@RLINIT task_sys 020FCH 00000H
@@RLINIT pedo_alg_thre_det2
020FCH 00000H
@@RLINIT @rom 020FCH 00000H
@@CODEL 020FCH 00000H CSEG
@@CODEL pm 020FCH 00000H
@@CODEL i2c_ctr 020FCH 00000H
@@CODEL magic 020FCH 00000H
@@CODEL i2c_mcu 020FCH 00000H
@@CODEL i2c_twl 020FCH 00000H
@@CODEL ini_VECT 020FCH 00000H
@@CODEL led 020FCH 00000H
@@CODEL rtc 020FCH 00000H
@@CODEL vreg_ctr 020FCH 00000H
@@CODEL vreg_twl 020FCH 00000H
@@CODEL adc 020FCH 00000H
@@CODEL renge 020FCH 00000H
@@CODEL accero 020FCH 00000H
@@CODEL sw 020FCH 00000H
@@CODEL task_debug
020FCH 00000H
@@CODEL task_misc
020FCH 00000H
@@CODEL task_sys 020FCH 00000H
@@CODEL pedo_alg_thre_det2
020FCH 00000H
* gap * 020FCH 00004H
MGC_MIMI 02100H 0000AH CSEG AT
MGC_MIMI magic 02100H 0000AH
@@CNST 0210AH 00528H CSEG
@@CNST @cstart 0210AH 00000H
@@CNST loader 0210AH 00000H
@@CNST pm 0210AH 001F8H
@@CNST i2c_ctr 02302H 00030H
@@CNST main 02332H 00030H
@@CNST magic 02362H 00000H
@@CNST WDT 02362H 00000H
@@CNST i2c_mcu 02362H 00030H
@@CNST i2c_twl 02392H 00030H
@@CNST ini_VECT 023C2H 00000H
@@CNST led 023C2H 00034H
@@CNST rtc 023F6H 00030H
@@CNST vreg_ctr 02426H 00030H
@@CNST vreg_twl 02456H 00030H
@@CNST adc 02486H 00070H
@@CNST renge 024F6H 00000H
@@CNST accero 024F6H 00030H
@@CNST self_flash
02526H 00002H
@@CNST reboot 02528H 00000H
@@CNST sw 02528H 00030H
@@CNST task_debug
02558H 00030H
@@CNST task_misc
02588H 00030H
@@CNST task_sys 025B8H 00030H
@@CNST pedo_alg_thre_det2
025E8H 0004AH
ROM_CODE 02632H 0223FH CSEG
ROM_CODE pm 02632H 0068DH
ROM_CODE i2c_ctr 02CBFH 00060H
ROM_CODE i2c_mcu 02D1FH 002DBH
ROM_CODE i2c_twl 02FFAH 0005EH
ROM_CODE led 03058H 003CFH
ROM_CODE rtc 03427H 000E0H
ROM_CODE vreg_ctr 03507H 003B2H
ROM_CODE vreg_twl 038B9H 00132H
ROM_CODE adc 039EBH 001E7H
ROM_CODE renge 03BD2H 00221H
ROM_CODE accero 03DF3H 0012AH
ROM_CODE sw 03F1DH 00167H
ROM_CODE task_debug
04084H 0003EH
ROM_CODE task_misc
040C2H 001ACH
ROM_CODE task_sys 0426EH 0020BH
ROM_CODE pedo_alg_thre_det2
04479H 003F8H
@@BASE 04871H 0055DH CSEG BASE
@@BASE loader 04871H 00006H
@@BASE pm 04877H 0003FH
@@BASE i2c_ctr 048B6H 00163H
@@BASE main 04A19H 00000H
@@BASE magic 04A19H 00000H
@@BASE WDT 04A19H 00000H
@@BASE i2c_mcu 04A19H 000D9H
@@BASE i2c_twl 04AF2H 00117H
@@BASE ini_VECT 04C09H 0007DH
@@BASE led 04C86H 00000H
@@BASE rtc 04C86H 00043H
@@BASE vreg_ctr 04CC9H 00000H
@@BASE vreg_twl 04CC9H 00000H
@@BASE adc 04CC9H 000B5H
@@BASE renge 04D7EH 00000H
@@BASE accero 04D7EH 00050H
@@BASE self_flash
04DCEH 00000H
@@BASE reboot 04DCEH 00000H
@@BASE sw 04DCEH 00000H
@@BASE task_debug
04DCEH 00000H
@@BASE task_misc
04DCEH 00000H
@@BASE task_sys 04DCEH 00000H
@@BASE pedo_alg_thre_det2
04DCEH 00000H
@@R_INIT 04DCEH 00046H CSEG UNIT64KP
@@R_INIT @cstart 04DCEH 00000H
@@R_INIT loader 04DCEH 00000H
@@R_INIT pm 04DCEH 00004H
@@R_INIT i2c_ctr 04DD2H 00002H
@@R_INIT main 04DD4H 00000H
@@R_INIT magic 04DD4H 00000H
@@R_INIT WDT 04DD4H 00000H
@@R_INIT i2c_mcu 04DD4H 00000H
@@R_INIT i2c_twl 04DD4H 00000H
@@R_INIT ini_VECT 04DD4H 00000H
@@R_INIT led 04DD4H 00002H
@@R_INIT rtc 04DD6H 00000H
@@R_INIT vreg_ctr 04DD6H 00000H
@@R_INIT vreg_twl 04DD6H 00016H
@@R_INIT adc 04DECH 00002H
@@R_INIT renge 04DEEH 00016H
@@R_INIT accero 04E04H 00000H
@@R_INIT self_flash
04E04H 00000H
@@R_INIT reboot 04E04H 00000H
@@R_INIT sw 04E04H 00002H
@@R_INIT task_debug
04E06H 00002H
@@R_INIT task_misc
04E08H 00002H
@@R_INIT task_sys 04E0AH 00002H
@@R_INIT pedo_alg_thre_det2
04E0CH 00008H
@@R_INIT @rom 04E14H 00000H
@@LCODEL 04E14H 0019DH CSEG
@@LCODEL abs 04E14H 00008H
@@LCODEL m_sqrt 04E1CH 00013H
@@LCODEL m_fcom4 04E2FH 00041H
@@LCODEL m_fsqrtx 04E70H 000C2H
@@LCODEL m_fcom3 04F32H 0007FH
* gap * 04FB1H 00045H
MGC_TAIL 04FF6H 0000AH CSEG AT
MGC_TAIL magic 04FF6H 0000AH
MEMORY=RAM
BASE ADDRESS=FF900H SIZE=00500H
OUTPUT INPUT INPUT BASE SIZE
SEGMENT SEGMENT MODULE ADDRESS
@@DATA FF900H 00378H DSEG BASEP
@@DATA @cstart FF900H 00002H
@@DATA loader FF902H 00000H
@@DATA pm FF902H 00010H
@@DATA i2c_ctr FF912H 00004H
@@DATA main FF916H 00204H
@@DATA magic FFB1AH 00000H
@@DATA WDT FFB1AH 00000H
@@DATA i2c_mcu FFB1AH 00008H
@@DATA i2c_twl FFB22H 00004H
@@DATA ini_VECT FFB26H 00000H
@@DATA led FFB26H 00012H
@@DATA rtc FFB38H 00008H
@@DATA vreg_ctr FFB40H 00062H
@@DATA vreg_twl FFBA2H 00010H
@@DATA adc FFBB2H 00014H
@@DATA renge FFBC6H 00012H
@@DATA accero FFBD8H 00000H
@@DATA self_flash
FFBD8H 00000H
@@DATA reboot FFBD8H 00000H
@@DATA sw FFBD8H 00004H
@@DATA task_debug
FFBDCH 00002H
@@DATA task_misc
FFBDEH 00002H
@@DATA task_sys FFBE0H 00002H
@@DATA pedo_alg_thre_det2
FFBE2H 00096H
@@DATA @rom FFC78H 00000H
@@INIT FFC78H 00046H DSEG BASEP
@@INIT @cstart FFC78H 00000H
@@INIT loader FFC78H 00000H
@@INIT pm FFC78H 00004H
@@INIT i2c_ctr FFC7CH 00002H
@@INIT main FFC7EH 00000H
@@INIT magic FFC7EH 00000H
@@INIT WDT FFC7EH 00000H
@@INIT i2c_mcu FFC7EH 00000H
@@INIT i2c_twl FFC7EH 00000H
@@INIT ini_VECT FFC7EH 00000H
@@INIT led FFC7EH 00002H
@@INIT rtc FFC80H 00000H
@@INIT vreg_ctr FFC80H 00000H
@@INIT vreg_twl FFC80H 00016H
@@INIT adc FFC96H 00002H
@@INIT renge FFC98H 00016H
@@INIT accero FFCAEH 00000H
@@INIT self_flash
FFCAEH 00000H
@@INIT reboot FFCAEH 00000H
@@INIT sw FFCAEH 00002H
@@INIT task_debug
FFCB0H 00002H
@@INIT task_misc
FFCB2H 00002H
@@INIT task_sys FFCB4H 00002H
@@INIT pedo_alg_thre_det2
FFCB6H 00008H
@@INIT @rom FFCBEH 00000H
@@INIS FFCBEH 00000H DSEG UNITP
@@INIS @cstart FFCBEH 00000H
@@INIS loader FFCBEH 00000H
@@INIS pm FFCBEH 00000H
@@INIS i2c_ctr FFCBEH 00000H
@@INIS main FFCBEH 00000H
@@INIS magic FFCBEH 00000H
@@INIS WDT FFCBEH 00000H
@@INIS i2c_mcu FFCBEH 00000H
@@INIS i2c_twl FFCBEH 00000H
@@INIS ini_VECT FFCBEH 00000H
@@INIS led FFCBEH 00000H
@@INIS rtc FFCBEH 00000H
@@INIS vreg_ctr FFCBEH 00000H
@@INIS vreg_twl FFCBEH 00000H
@@INIS adc FFCBEH 00000H
@@INIS renge FFCBEH 00000H
@@INIS accero FFCBEH 00000H
@@INIS self_flash
FFCBEH 00000H
@@INIS reboot FFCBEH 00000H
@@INIS sw FFCBEH 00000H
@@INIS task_debug
FFCBEH 00000H
@@INIS task_misc
FFCBEH 00000H
@@INIS task_sys FFCBEH 00000H
@@INIS pedo_alg_thre_det2
FFCBEH 00000H
@@INIS @rom FFCBEH 00000H
@@DATS FFCBEH 00000H DSEG UNITP
@@DATS @cstart FFCBEH 00000H
@@DATS loader FFCBEH 00000H
@@DATS pm FFCBEH 00000H
@@DATS i2c_ctr FFCBEH 00000H
@@DATS main FFCBEH 00000H
@@DATS magic FFCBEH 00000H
@@DATS WDT FFCBEH 00000H
@@DATS i2c_mcu FFCBEH 00000H
@@DATS i2c_twl FFCBEH 00000H
@@DATS ini_VECT FFCBEH 00000H
@@DATS led FFCBEH 00000H
@@DATS rtc FFCBEH 00000H
@@DATS vreg_ctr FFCBEH 00000H
@@DATS vreg_twl FFCBEH 00000H
@@DATS adc FFCBEH 00000H
@@DATS renge FFCBEH 00000H
@@DATS accero FFCBEH 00000H
@@DATS self_flash
FFCBEH 00000H
@@DATS reboot FFCBEH 00000H
@@DATS sw FFCBEH 00000H
@@DATS task_debug
FFCBEH 00000H
@@DATS task_misc
FFCBEH 00000H
@@DATS task_sys FFCBEH 00000H
@@DATS pedo_alg_thre_det2
FFCBEH 00000H
@@DATS @rom FFCBEH 00000H
FSL_DATA FFCBEH 00010H DSEG UNITP
FSL_DATA fsl_common
FFCBEH 00010H
@@INITL FFCCEH 00000H DSEG UNIT64KP
@@INITL loader FFCCEH 00000H
@@INITL pm FFCCEH 00000H
@@INITL i2c_ctr FFCCEH 00000H
@@INITL main FFCCEH 00000H
@@INITL magic FFCCEH 00000H
@@INITL WDT FFCCEH 00000H
@@INITL i2c_mcu FFCCEH 00000H
@@INITL i2c_twl FFCCEH 00000H
@@INITL ini_VECT FFCCEH 00000H
@@INITL led FFCCEH 00000H
@@INITL rtc FFCCEH 00000H
@@INITL vreg_ctr FFCCEH 00000H
@@INITL vreg_twl FFCCEH 00000H
@@INITL adc FFCCEH 00000H
@@INITL renge FFCCEH 00000H
@@INITL accero FFCCEH 00000H
@@INITL self_flash
FFCCEH 00000H
@@INITL reboot FFCCEH 00000H
@@INITL sw FFCCEH 00000H
@@INITL task_debug
FFCCEH 00000H
@@INITL task_misc
FFCCEH 00000H
@@INITL task_sys FFCCEH 00000H
@@INITL pedo_alg_thre_det2
FFCCEH 00000H
@@INITL @rom FFCCEH 00000H
@@DATAL FFCCEH 00000H DSEG UNIT64KP
@@DATAL loader FFCCEH 00000H
@@DATAL pm FFCCEH 00000H
@@DATAL i2c_ctr FFCCEH 00000H
@@DATAL main FFCCEH 00000H
@@DATAL magic FFCCEH 00000H
@@DATAL WDT FFCCEH 00000H
@@DATAL i2c_mcu FFCCEH 00000H
@@DATAL i2c_twl FFCCEH 00000H
@@DATAL ini_VECT FFCCEH 00000H
@@DATAL led FFCCEH 00000H
@@DATAL rtc FFCCEH 00000H
@@DATAL vreg_ctr FFCCEH 00000H
@@DATAL vreg_twl FFCCEH 00000H
@@DATAL adc FFCCEH 00000H
@@DATAL renge FFCCEH 00000H
@@DATAL accero FFCCEH 00000H
@@DATAL self_flash
FFCCEH 00000H
@@DATAL reboot FFCCEH 00000H
@@DATAL sw FFCCEH 00000H
@@DATAL task_debug
FFCCEH 00000H
@@DATAL task_misc
FFCCEH 00000H
@@DATAL task_sys FFCCEH 00000H
@@DATAL pedo_alg_thre_det2
FFCCEH 00000H
@@DATAL @rom FFCCEH 00000H
* gap * FFCCEH 00132H
MEMORY=RAM2
BASE ADDRESS=FFE20H SIZE=000C0H
OUTPUT INPUT INPUT BASE SIZE
SEGMENT SEGMENT MODULE ADDRESS
@@BITS FFE20H 00003H BSEG
@@BITS @cstart FFE20H.0 00000H.0
@@BITS loader FFE20H.0 00000H.0
@@BITS pm FFE20H.0 00000H.1
@@BITS i2c_ctr FFE20H.1 00000H.0
@@BITS main FFE20H.1 00000H.1
@@BITS magic FFE20H.2 00000H.0
@@BITS WDT FFE20H.2 00000H.0
@@BITS i2c_mcu FFE20H.2 00000H.3
@@BITS i2c_twl FFE20H.5 00000H.0
@@BITS ini_VECT FFE20H.5 00000H.0
@@BITS led FFE20H.5 00000H.0
@@BITS rtc FFE20H.5 00000H.3
@@BITS vreg_ctr FFE21H.0 00000H.1
@@BITS vreg_twl FFE21H.1 00000H.0
@@BITS adc FFE21H.1 00000H.1
@@BITS renge FFE21H.2 00000H.3
@@BITS accero FFE21H.5 00000H.0
@@BITS self_flash
FFE21H.5 00000H.0
@@BITS reboot FFE21H.5 00000H.0
@@BITS sw FFE21H.5 00000H.4
@@BITS task_debug
FFE22H.1 00000H.0
@@BITS task_misc
FFE22H.1 00000H.0
@@BITS task_sys FFE22H.1 00000H.0
@@BITS pedo_alg_thre_det2
FFE22H.1 00000H.1
* gap * FFE23H 000B1H
@@SEGREG FFED4H 00004H DSEG AT
@@SEGREG @SEGREG FFED4H 00004H
@@RTARG0 FFED8H 00008H DSEG AT
@@RTARG0 @RTARG0 FFED8H 00008H
Target chip : uPD79F0104
Device file : E1.00b


View File

@ -0,0 +1,52 @@
;;; 領域の定義
;32kB = 0x7FFF
MEMORY BCL0: (00000H, 01000H )
;MEMORY BCL1: (01000H, 01000H ) ; バックアップ領域
MEMORY ROM : (02000H, 03000H )
;MEMORY ROM_BKUP:(05000H, 03000H ) ; バックアップ領域
;MEMORY OCD :(0FC00H, 00400H ) ; OCDが使っているらしい
;;; セグメントの割当先設定
; ブートブロック0に割り当てる
MERGE LDR_CODE: =BCL0
MERGE LDR_CODL: =BCL0
;MERGE @@LCODE : AT( 0E00H ) =BCL0 ; スタートアップルーチン
MERGE @@LCODE : =BCL0 ; スタートアップルーチン
;MERGE LDR_RINT:=BCL0
;MERGE LDR_CNST:=BCL0
MERGE LDR_CNSL:=BCL0
; 通常領域にあてる物達
MERGE ROM_CODE:=ROM
;MERGE ROM_CNST:=ROM
; ちょっと、困るんですが、こうしないと初期値がセットされない
MERGE @@CNST: =ROM
MERGE @@R_INIT: =ROM
; 謹製フラッシュライブラリ
; MERGE FSL_CODE:=FSL
MERGE FSL_CODE:=BCL0
; マジックナンバー
;; magic.cの中で指定
;--- RAM領域 -------------------------------------------------------
;
; RAM1,RAM2領域はユーザープログラムで使用しても良いですが、セルフプログラム時は
; セルフプログラムのライブラリが使用するため、値は破壊されます。
;
memory RAM2 : (0FFE20H, 00C0H) ; セルフプログラム時、使用禁止領域
;memory SLF_RAM : (0FFE00H, 0020H) ; Slef Program予約領域[使用禁止]
memory RAM : (0FF900H, 0500H) ; ユーザーRAM領域
;memory SLF_RAM : (0FF900H, 0020H) ; Slef Program予約領域[使用禁止]

View File

@ -0,0 +1,56 @@
#ifndef __bsr_system__
#define __bsr_system__
// イベントループのステート
enum pwr_state_
{
OFF_TRIG = 0,
OFF,
ON_TRIG,
ON,
SLEEP_TRIG,
SLEEP,
// WAKE,
BT_CHARGE,
};
enum poweron_reason_
{
NONE = 0,
PWSW,
RTC_ALARM,
};
enum model_
{
MODEL_JIKKI = 0,
MODEL_TS_BOARD,
MODEL_SHIROBAKO,
MODEL_RESERVED1,
MODEL_RESERVED2,
MODEL_RESERVED3,
};
// タスクシステムの状態情報など
typedef struct
{
enum pwr_state_ pwr_state;
enum poweron_reason_ poweron_reason;
unsigned char dipsw0:1;
unsigned char dipsw1:1;
unsigned char dipsw2:1;
unsigned char reboot:1;
enum model_ model;
}
system_status_;
extern system_status_ system_status;
#endif

View File

@ -0,0 +1,76 @@
#ifndef __config__
#define __config__
#define _debug_
//#define _debug_led_
#define MCU_VER_MAJOR 0x00
#define MCU_VER_MINOR 0x10
#define _OVERCLOCK_
//#define PM_CCIC_TIM
// 古い(C)電源ボード
//#define _PM_BUG_
//#define _PARRADIUM_
//#define _MODEL_TEG2_
// ↑TEG2 CPU Type-T
//#define _MODEL_WM0_
//#define _MODEL_WM0_TEG2_CTRC_
//#define _MODEL_TS0_
// ↑TEG2 CPU Type-C
#define _MODEL_CTR_TS_
// ↑FINAL SoC Type-C
//#define _MODEL_CTR_JIKKI_
//#define _SW_HOME_ENABLE_
// ---------------------------------- //
#ifdef _MODEL_CTR_TS_
#ifdef _MODEL_CTR_JIKKI_
#endif
#endif
#ifdef _MODEL_CTR_TS_
#define _MODEL_CTR_
#endif
#ifdef _MODEL_CTR_JIKKI_
#define _MODEL_CTR_
#endif
// ---------------------------------- //
#ifdef _MODEL_TEG2_
#define _PMIC_TWL_
#define _MCU_KE3_
#endif
#ifdef _MODEL_WM0_
#define _PMIC_TWL_
#define _MCU_BSR_
#define _SW_HOME_ENABLE_
#endif
#ifdef _MODEL_TS0_
#define _PMIC_CTR_
#define _MCU_BSR_
#endif
#ifdef _MODEL_CTR_
#define _PMIC_CTR_
#define _MCU_BSR_
#define _SW_HOME_ENABLE_
#endif
#endif

362
branches/0.10(X3)/fsl.h Normal file
View File

@ -0,0 +1,362 @@
/*==============================================================================================*/
/* Project = Selfprogramming library for 78K0R/Ix3/Kx3-L Single Voltage SST (MF2) Flash */
/* Module = fsl.h */
/* Version = V1.01 */
/* Date = 28.03.2008 11:45:42 */
/*==============================================================================================*/
/* COPYRIGHT */
/*==============================================================================================*/
/* Copyright (c) 2007 by NEC Electronics (Europe) GmbH, */
/* a company of the NEC Electronics Corporation */
/*==============================================================================================*/
/* Purpose: */
/* constant, type and function prototype definitions used by the FSL */
/* */
/*==============================================================================================*/
/* */
/* Warranty Disclaimer */
/* */
/* Because the Product(s) is licensed free of charge, there is no warranty of any kind */
/* whatsoever and expressly disclaimed and excluded by NEC, either expressed or implied, */
/* including but not limited to those for non-infringement of intellectual property, */
/* merchantability and/or fitness for the particular purpose. NEC shall not have any obligation */
/* to maintain, service or provide bug fixes for the supplied Product(s) and/or the Application.*/
/* */
/* Each User is solely responsible for determining the appropriateness of using the Product(s) */
/* and assumes all risks associated with its exercise of rights under this Agreement, */
/* including, but not limited to the risks and costs of program errors, compliance with */
/* applicable laws, damage to or loss of data, programs or equipment, and unavailability or */
/* interruption of operations. */
/* */
/* Limitation of Liability */
/* */
/* In no event shall NEC be liable to the User for any incidental, consequential, indirect, */
/* or punitive damage (including but not limited to lost profits) regardless of whether */
/* such liability is based on breach of contract, tort, strict liability, breach of warranties, */
/* failure of essential purpose or otherwise and even if advised of the possibility of */
/* such damages. NEC shall not be liable for any services or products provided by third party */
/* vendors, developers or consultants identified or referred to the User by NEC in connection */
/* with the Product(s) and/or the Application. */
/* */
/*==============================================================================================*/
/* Environment: PM plus (V6.30) */
/* RA78K0(V1.20) */
/* CC78K0(V2.00) */
/*==============================================================================================*/
#ifndef __FSL_H_INCLUDED
#define __FSL_H_INCLUDED
/*==============================================================================================*/
/* FSL type definitions */
/*==============================================================================================*/
typedef unsigned char fsl_u08;
typedef unsigned int fsl_u16;
typedef unsigned long int fsl_u32;
/*==============================================================================================*/
/* constant definitions */
/*==============================================================================================*/
/*status code definitions returned by the FSL functions */
#define FSL_OK 0x00
#define FSL_ERR_FLMD0 0x01
#define FSL_ERR_PARAMETER 0x05
#define FSL_ERR_PROTECTION 0x10
#define FSL_ERR_ERASE 0x1A
#define FSL_ERR_BLANKCHECK 0x1B
#define FSL_ERR_IVERIFY 0x1B
#define FSL_ERR_WRITE 0x1C
#define FSL_ERR_EEP_IVERIFY 0x1D
#define FSL_ERR_EEP_BLANKCHECK 0x1E
#define FSL_ERR_INTERRUPTION 0x1F
/*==============================================================================================*/
/* global function prototypes */
/*==============================================================================================*/
/*----------------------------------------------------------------------------------------------*/
/* Block type: FSL command function */
/*----------------------------------------------------------------------------------------------*/
/* Purpose: initialization of selfprogramming environment */
/* After initialization: */
/* - the pointer to the data-buffer is stored */
/* - all timing data are re-calculated according to the used system clock */
/* */
/* CAUTION: */
/* The FSL_Init(&data_buffer) function is interruptible. Please use the */
/* FSL_Init_cont(&data_buffer) to recall it as long return status is 0x1F. */
/* */
/* Input: data_buffer_pu08 - pointer to a data buffer of N...256 bytes */
/* (used for data exchange between firmware and application) */
/* Output: - */
/* Returned: u08, status_code */
/* = 0x00(FSL_OK), normal and means initialization OK */
/* = 0x1F(FSL_ERR_INTERRUPTION), initialization interrupted by user interrupt*/
/*----------------------------------------------------------------------------------------------*/
extern fsl_u08 FSL_Init( fsl_u08 * data_buffer_pu08 );
extern fsl_u08 FSL_Init_cont( fsl_u08 * data_buffer_pu08 );
/*----------------------------------------------------------------------------------------------*/
/* Block type: FSL command function */
/*----------------------------------------------------------------------------------------------*/
/* Purpose: checks the voltage level (high or low) at FLMD0 pin */
/* Input: - */
/* Output: - */
/* Returned: fsl_u08, status_code */
/* = 0x00(FSL_OK), normal and means FLMD0=HIGH */
/* = 0x01(FSL_ERR_FLMD0), error, FLMD0=LOW */
/*----------------------------------------------------------------------------------------------*/
extern fsl_u08 FSL_ModeCheck( void );
/*----------------------------------------------------------------------------------------------*/
/* Block type: FSL command function */
/*----------------------------------------------------------------------------------------------*/
/* Purpose: checks if specified block is blank */
/* Input: block_u16 - block number has to be checked */
/* Output: - */
/* Returned: fsl_u08, status_code */
/* = 0x00(FSL_OK), normal and means "block is blank" */
/* = 0x05(FSL_ERR_PARAMETER), parameter error */
/* = 0x1B(FSL_ERR_BLANKCHECK), blank-check error, means "block not blank" */
/* = 0x1F(FSL_ERR_INTERRUPTION), blank-check interrupted by user interrupt */
/*----------------------------------------------------------------------------------------------*/
extern fsl_u08 FSL_BlankCheck( fsl_u16 block_u16 );
/*----------------------------------------------------------------------------------------------*/
/* Block type: FSL command function */
/*----------------------------------------------------------------------------------------------*/
/* Purpose: erase specified block */
/* Input: block_u16 - block number has to be erase */
/* Output: - */
/* Returned: fsl_u08, status_code */
/* = 0x00(FSL_OK), normal and means "block erased successfully" */
/* = 0x05(FSL_ERR_PARAMETER), parameter error */
/* = 0x10(FSL_ERR_PROTECTION), tried to erase protected area */
/* = 0x1A(FSL_ERR_ERASE), erase error, retry up to max. 255 times */
/* = 0x1F(FSL_ERR_INTERRUPTION), erasing interrupted by user interrupt */
/*----------------------------------------------------------------------------------------------*/
extern fsl_u08 FSL_Erase( fsl_u16 block_u16 );
/*----------------------------------------------------------------------------------------------*/
/* Block type: FSL command function */
/*----------------------------------------------------------------------------------------------*/
/* Purpose: performs internal verify on specified block */
/* Input: block_u16 - block number has to be verified */
/* Output: - */
/* Returned: fsl_u08, status_code */
/* = 0x00(FSL_OK), normal and means "block is verified" */
/* = 0x05(FSL_ERR_PARAMETER), parameter error */
/* = 0x1B(FSL_ERR_IVERIFY), internal verify error */
/* = 0x1F(FSL_ERR_INTERRUPTION), verify interrupted by user interrupt */
/*----------------------------------------------------------------------------------------------*/
extern fsl_u08 FSL_IVerify( fsl_u16 block_u16 );
/*----------------------------------------------------------------------------------------------*/
/* Block type: FSL command function */
/*----------------------------------------------------------------------------------------------*/
/* Purpose: writes N words from the data buffer into flash */
/* Input: s_address_u32 - starting flash address the data has to be written */
/* See Condition 2) please. */
/* my_wordcount_u08 - number of words (4 bytes) has to be written */
/* Output: - */
/* Condition: 1) (s_address_u32 MOD 4 == 0) */
/* 2) most significant byte (MSB) of s_address_u32 has to be 0x00. */
/* Means: 0x00abcdef 24 bit flash address allowed */
/* 3) (word_count_u08 <= sizeof(data buffer)) NOT CHECKED BY LIBRARY !!!!! */
/* Changed: - */
/* Returned: fsl_u08, status code */
/* = 0x00(FSL_OK), normal */
/* = 0x05(FSL_ERR_PARAMETER), parameter error */
/* = 0x10(FSL_ERR_PROTECTION), protection error */
/* = 0x1C(FSL_ERR_WRITE), write error */
/* = 0x1F(FSL_ERR_INTERRUPTION), write interrupted by user interrupt */
/*----------------------------------------------------------------------------------------------*/
extern fsl_u08 FSL_Write( fsl_u32 s_address_u32, fsl_u08 word_count_u08 );
/*----------------------------------------------------------------------------------------------*/
/* Block type: FSL command function */
/*----------------------------------------------------------------------------------------------*/
/* Purpose: writes N words from the data buffer into flash */
/* Before "writing" a N-word blankcheck is performed. */
/* After "writing" a N-Word internal verify is performed. */
/* Input: s_address_u32 - starting destination address has to be written */
/* my_wordcount_u08 - number of words (4 bytes) has to be written */
/* Output: - */
/* Condition: 1) (s_address_u32 MOD 4 == 0) */
/* 2) (word_count_u08 <= sizeof(data buffer)) NOT CHECKED BY FIRMWARE !!!!! */
/* Changed: - */
/* Returned: fsl_u08, status code */
/* = 0x00(FSL_OK), normal */
/* = 0x05(FSL_ERR_PARAMETER), parameter error */
/* = 0x10(FSL_ERR_PROTECTION), protection error */
/* = 0x1C(FSL_ERR_WRITE), write error */
/* = 0x1D(FSL_ERR_EEP_IVERIFY), verify error */
/* = 0x1E(FSL_ERR_EEP_BLANKCHECK), blankcheck error */
/* = 0x1F(FSL_ERR_INTERRUPTION), write interrupted by user interrupt */
/*----------------------------------------------------------------------------------------------*/
extern fsl_u08 FSL_EEPROMWrite( fsl_u32 s_address_u32,
fsl_u08 word_count_u08 );
/*----------------------------------------------------------------------------------------------*/
/* Block type: FSL command function */
/*----------------------------------------------------------------------------------------------*/
/* Purpose: reads the security information */
/* Input: destination_pu16 - destination address of the security info */
/* The format of the security info is: "unsigned short int" */
/* */
/* Format of the security info: */
/* bit_0 = 0 -> chip erase command disabled, otherwise enabled */
/* bit_1 = 0 -> block erase command disabled, otherwise enabled */
/* bit_2 = 0 -> write command disabled, otherwise enabled */
/* bit_4 = 0 -> boot-area re-programming disabled, otherwise enabled */
/* bit_8...bit_15 = 03H -> last block of the boot-area */
/* other bits = 1 */
/* Output: - */
/* Changed: content of the data_buffer */
/* Returned: fsl_u08, status code */
/* = 0x00(FSL_OK), normal */
/* = 0x05(FSL_ERR_PARAMETER), parameter error */
/*----------------------------------------------------------------------------------------------*/
extern fsl_u08 FSL_GetSecurityFlags( fsl_u16 * destination_pu16 );
/*----------------------------------------------------------------------------------------------*/
/* Block type: FSL command function */
/*----------------------------------------------------------------------------------------------*/
/* Purpose: read the boot flag i */
/* Input: destination_pu08 - destination address of the bootflag info */
/* The format of the boot-flag info is: "unsigned char" */
/* The value of the boot info is 0x00 for cluster 0 and 0x01 for cluster 1. */
/* Output: - */
/* Changed: content of the data_buffer */
/* Returned: fsl_u08, status code */
/* = 0x00(FSL_OK), normal */
/* = 0x05(FSL_ERR_PARAMETER), parameter error */
/*----------------------------------------------------------------------------------------------*/
extern fsl_u08 FSL_GetActiveBootCluster( fsl_u08 * destination_pu08 );
/*----------------------------------------------------------------------------------------------*/
/* Block type: FSL command function */
/*----------------------------------------------------------------------------------------------*/
/* Purpose: puts the last address of the specified block into *destination_pu32 */
/* Input: *destination_pu32 - destination where the last-block-address */
/* should be stored */
/* block_u16 - block number of the last address is needed */
/* Changed: - */
/* Returned: fsl_u08, status code */
/* = 0x00(FSL_OK), normal */
/* = 0x05(FSL_ERR_PARAMETER), parameter error */
/*----------------------------------------------------------------------------------------------*/
extern fsl_u08 FSL_GetBlockEndAddr( fsl_u32 * destination_pu32,
fsl_u16 block_u16 );
/*----------------------------------------------------------------------------------------------*/
/* Block type: FSL command function */
/*----------------------------------------------------------------------------------------------*/
/* Purpose: puts the information about the protected flash area into the function parameter */
/* Input: *start_block_pu16 - destination where the FSW start block should be stored */
/* *end_block_pu16 - destination where the FSW end block should be stored */
/* Changed: - */
/* Returned: fsl_u08, status code */
/* = 0x00(FSL_OK), normal */
/* = 0x05(FSL_ERR_PARAMETER), parameter error */
/*----------------------------------------------------------------------------------------------*/
extern fsl_u08 FSL_GetFlashShieldWindow( fsl_u16 * start_block_pu16,
fsl_u16 * end_block_pu16 );
/*----------------------------------------------------------------------------------------------*/
/* Block type: FSL command function */
/*----------------------------------------------------------------------------------------------*/
/* Purpose: defines a new Flash-Shield-Window area inside the flash memory */
/* Input: start_block_u16 - starting block of the Flash-Shield-Window (FSW) */
/* end_block_u16 - ending block of the flash-Shield-Window (FSW) */
/* Changed: - */
/* Returned: fsl_u08, status code */
/* = 0x00(FSL_OK), normal */
/* = 0x05(FSL_ERR_PARAMETER), parameter error */
/* = 0x10(FSL_ERR_PROTECTION), protection error */
/* = 0x1A(FSL_ERR_ERASE), erase error */
/* = 0x1B(FSL_ERR_IVERIFY), internal verify error */
/* = 0x1F(FSL_ERR_INTERRUPTION), write interrupted by user interrupt */
/*----------------------------------------------------------------------------------------------*/
extern fsl_u08 FSL_SetFlashShieldWindow( fsl_u16 start_block_u16,
fsl_u16 end_block_u16 );
/*----------------------------------------------------------------------------------------------*/
/* Block type: FSL command function */
/*----------------------------------------------------------------------------------------------*/
/* Purpose: Swapping of bootcluster 0 and 1 */
/* */
/* CAUTION !!!! */
/* After this function the boot cluster are immediately swapped */
/* Input: - */
/* Output: - */
/* Returned: fsl_u08, status code */
/* = 0x00(FSL_OK), normal */
/* = 0x05(FSL_ERR_PARAMETER), parameter error */
/* = 0x10(FSL_ERR_PROTECTION), protection error */
/* = 0x1A(FSL_ERR_ERASE), erase error */
/* = 0x1B(FSL_ERR_IVERIFY), internal verify error */
/* = 0x1F(FSL_ERR_INTERRUPTION), write interrupted by user interrupt */
/*----------------------------------------------------------------------------------------------*/
extern fsl_u08 FSL_SwapBootCluster( void );
/*----------------------------------------------------------------------------------------------*/
/* Block type: FSL command function */
/*----------------------------------------------------------------------------------------------*/
/* Purpose: sets specified security flag by dedicated command-function. */
/* */
/* There are following security levels: */
/* a) chip-erase protection (cannot be reset by programmer !!!) */
/* b) block-erase protection (can be reset by chip-erase on programmer) */
/* c) write protection (can be reset by chip-erase on programmer) */
/* d) boot-cluster protection (cannot be reset by programmer !!!) */
/* */
/* CAUTION !!!! */
/* Each security flag can be written by the application only once */
/* */
/* Input: - */
/* Output: - */
/* Returned: fsl_u08, status code */
/* = 0x00(FSL_OK), normal */
/* = 0x05(FSL_ERR_PARAMETER), parameter error */
/* = 0x10(FSL_ERR_PROTECTION), protection error */
/* = 0x1A(FSL_ERR_ERASE), erase error */
/* = 0x1B(FSL_ERR_IVERIFY), internal verify error */
/* = 0x1F(FSL_ERR_INTERRUPTION), write interrupted by user interrupt */
/*----------------------------------------------------------------------------------------------*/
extern fsl_u08 FSL_SetChipEraseProtectFlag( void );
extern fsl_u08 FSL_SetBlockEraseProtectFlag( void );
extern fsl_u08 FSL_SetWriteProtectFlag( void );
extern fsl_u08 FSL_SetBootClusterProtectFlag( void );
/*----------------------------------------------------------------------------------------------*/
/* Block type: FSL function */
/*----------------------------------------------------------------------------------------------*/
/* Purpose: defines the firmware operation method after interrupt service (ISR) execution. */
/* Input: mode_u08 = 0x00, after RETI the firmware is continuing the interrupted command.*/
/* = other, after RETI the firmware is interrupted with status 0x1F. */
/* Changed: - */
/* Returned: - */
/*----------------------------------------------------------------------------------------------*/
extern void FSL_SetInterruptMode( fsl_u08 mode_u08 );
#endif

View File

@ -0,0 +1,108 @@
/*==============================================================================================*/
/* Project = Selfprogramming library for 78K0R/Ix3/Kx3-L Single Voltage SST (MF2) Flash */
/* Module = fsl_user.h */
/* Version = V1.01 */
/* Date = 28.03.2008 11:45:55 */
/*==============================================================================================*/
/* COPYRIGHT */
/*==============================================================================================*/
/* Copyright (c) 2007 by NEC Electronics (Europe) GmbH, */
/* a company of the NEC Electronics Corporation */
/*==============================================================================================*/
/* Purpose: */
/* user configurable constant/macros of the selfprogramming library */
/* */
/*==============================================================================================*/
/* */
/* Warranty Disclaimer */
/* */
/* Because the Product(s) is licensed free of charge, there is no warranty of any kind */
/* whatsoever and expressly disclaimed and excluded by NEC, either expressed or implied, */
/* including but not limited to those for non-infringement of intellectual property, */
/* merchantability and/or fitness for the particular purpose. NEC shall not have any obligation */
/* to maintain, service or provide bug fixes for the supplied Product(s) and/or the Application.*/
/* */
/* Each User is solely responsible for determining the appropriateness of using the Product(s) */
/* and assumes all risks associated with its exercise of rights under this Agreement, */
/* including, but not limited to the risks and costs of program errors, compliance with */
/* applicable laws, damage to or loss of data, programs or equipment, and unavailability or */
/* interruption of operations. */
/* */
/* Limitation of Liability */
/* */
/* In no event shall NEC be liable to the User for any incidental, consequential, indirect, */
/* or punitive damage (including but not limited to lost profits) regardless of whether */
/* such liability is based on breach of contract, tort, strict liability, breach of warranties, */
/* failure of essential purpose or otherwise and even if advised of the possibility of */
/* such damages. NEC shall not be liable for any services or products provided by third party */
/* vendors, developers or consultants identified or referred to the User by NEC in connection */
/* with the Product(s) and/or the Application. */
/* */
/*==============================================================================================*/
/* Environment: PM plus (V6.30) */
/* RA78K0(V1.20) */
/* CC78K0(V2.00) */
/*==============================================================================================*/
#ifndef __FSL_USER_H_INCLUDED
#define __FSL_USER_H_INCLUDED
/*==============================================================================================*/
/* constant definitions */
/*==============================================================================================*/
/* specify the CPU frequency in [Hz], only 2MHz....20MHz allowed */
#define FSL_SYSTEM_FREQUENCY 4000000
/* define whether low-voltage mode is used or not */
/* #define FSL_LOW_VOLTAGE_MODE */
/* size of the common data buffer expressed in [bytes] */
/* the data buffer is used for data-exchange between the firmware and the selflib. */
//#define FSL_DATA_BUFFER_SIZE 256
#define FSL_DATA_BUFFER_SIZE 0
/* customizable interrupt controller configuration during selfprogramming period */
/* Bit --7-------6-------5-------4-------3-------2-------1-------0---------------------- */
/* MK0L: PMK5 PMK4 PMK3 PMK2 PMK1 PMK0 LVIMK WDTIMK */
/* MK0H: SREMK0 SRMK0* STMK0* DMAMK1 DMAMK0 SREMK3 SRMK3 STMK3 */
/* MK1L: TMMK03 TMMK02 TMMK01 TMMK00 IICMK0 SREMK1 SRMK1 STMK1* */
/* MK1H: TMMK04 SREMK2 SRMK2 STMK2* KRMK RTCIMK RTCMK ADMK */
/* MK2L: PMK10 PMK9 PMK8 PMK7 PMK6 TMMK07 TMMK06 TMMK05 */
/* MK2H: 1 1 1 1 1 1 1 PMK11 */
/*------------------------------------------------------------------------------------------ */
/* */
/* Examples: */
/* ========= */
/*#define FSL_MK0L_MASK 0xF7 -> allow INTP1 interrupt during selfprogramming */
/*#define FSL_MK0H_MASK 0xEF -> allow DMA1 interrupt during selfprogramming */
/*#define FSL_MK1L_MASK 0xBF -> allow TM02 interrupt during selfprogramming */
/*#define FSL_MK1H_MASK 0xFF -> all interrupts disabled during selfprogramming */
/*#define FSL_MK2L_MASK 0xF7 -> allow INTP6 interrupt during selfprogramming */
/*#define FSL_MK2H_MASK 0xFF -> all interrupts disabled during selfprogramming */
/*------------------------------------------------------------------------------------------ */
#define FSL_MK0L_MASK 0xFF /* all interrupts disabled during selfprogramming */
#define FSL_MK0H_MASK 0xFF /* all interrupts disabled during selfprogramming */
#define FSL_MK1L_MASK 0xFF /* all interrupts disabled during selfprogramming */
#define FSL_MK1H_MASK 0xFF /* all interrupts disabled during selfprogramming */
#define FSL_MK2L_MASK 0xFF /* all interrupts disabled during selfprogramming */
#define FSL_MK2H_MASK 0xFF /* all interrupts disabled during selfprogramming */
/* FLMD0 control bit */
#define FSL_FLMD0_HIGH {BECTL.7 = 1;}
#define FSL_FLMD0_LOW {BECTL.7 = 0;}
/*----------------------------------------------------------------------------------------------*/
/* switch interrupt backu functionality ON/OFF using #define/#undef */
/*----------------------------------------------------------------------------------------------*/
/* #define FSL_INT_BACKUP */
#undef FSL_INT_BACKUP
#endif

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,568 @@
:02000000000EF0
:02000200FFFFFE
:02000800E334DF
:04001000D932DB32D4
:02001C00EB33C4
:02002400FB33AC
:02002A000F3392
:08003400E534AC34A734CF32EF
:04004A00DD32A234CD
:0400C0006EFBFF854F
:0A00C400FFFFFFFFFFFFFFFFFFFF3C
:0A00CE00FFFFFFFFFFFFFFFFFFFF32
:1000D800C7F616A7F647DFFBFDF307FD5921EFF832
:1000E800C6D73142210261EDD7717BFACEA016CE78
:1000F800A180CEA409F5AAFFF5A9FFF400F401F444
:1001080002CD0306F404F405F406CD0740F40CF41C
:100118000EF408F40FF53000F53100F53300F5342E
:1001280000CF350003CF370019F53C00F53E00F548
:1001380020FFF521FFCE22E9E523FFCE240BCE25B3
:1001480003F526FFCE271FCE2C1FE52EFFCE2F0747
:10015800CE28FFF54300F54700CF530006F55700BA
:10016800F5E0FFF5E1FFF5E2FFF5E3FFF5D0FFCE9F
:10017800E4FFCEE5FFCEE6FFCEE7FFCED4FFCEE824
:10018800FFCEECFFCEE9FFCEEDFFCEEAFFCEEEFECE
:10019800CEEBFFCEEFFFCED8FFCEDCFFF538FFF574
:1001A80039FFF537FF7108F200F690BFB4017138D6
:1001B800F100F54002F54102F54302F5A5FFF5A669
:1001C800FF7158F000F530FF7128F0005087BF1814
:1001D80001BF1A01BF1C01BF1E017148F000F530B4
:1001E80002F5BCFFF5BDFFD7F7D7C7C1FBF8FF3154
:1001F800642002EFFA715220340020C5304000C15B
:10020800C1506CFDF622100617C1E6A1C1500EC1FF
:10021800506CFD3A22100617C1E6A1C1500EC1501C
:100228006CFD3A22100617C1E6A1C1A1A1C1506C0C
:10023800FD3A22100617C1E6A1C1500EC1506CFD4F
:10024800F6221006CC0100CC000017C1E6A1C1506F
:100258003EC1506CFDF6221006CF03F99EAFC0F9DF
:10026800BF04F9AFC2F9BF06F9C0C6D7FD2224F60C
:10027800C15003C15084FDB6221004F3D7C720062D
:10028800FBF8FFC71704030016F74940209BA3A7F4
:100298005102614ADFF4C6C717A116F74942209BED
:1002A800A3A75102614ADFF4C68C01318EC1E6A1D1
:1002B800C15006C1506CFDF622100617040300C198
:1002C800E6A1C1503EC1506CFDF6221006716201D4
:1002D800300900FD9C2D62316A9C05716301FDF2B5
:1002E80001717201300800FD9C2D629F02F9300BEC
:1002F80003FD232EF6C15084FDC521C0629C051064
:1003080006C6D7C751E0D902F9D651A36128319E54
:100318009F46F92FC4F9318EFD84201344040071DF
:10032800FEDE05D5C5F9DF508F46F97C804C95DC9B
:1003380015D946F9F1241400BDD8AF04F9FD6D0EA6
:1003480012F62316EF13D946F9F1241400BDD8AFDD
:1003580006F9FD6D0E12F62316D903F9F107C1E669
:10036800A1C1500CC1506CFDF6221006D2DF068FD9
:1003780046F99FC4F9A0C5F9F7C6D77163073005D8
:1003880000FD242F300500FD242F304A00C15022E3
:10039800C15084FDB6221004717031F9E7D7300AD4
:1003A80000FD242F716031F9E7D7716831F9F7D76B
:1003B800716207303300FD242FF6C1E6A1C15084D5
:1003C800FDB62210043431F9895C3F99F7D7F7D785
:1003D800FDD603F7D7FD8303F7D7FDA603F7D7FDAF
:1003E800B203F7D7FDB803F7D7C75A00FC8E205CD5
:1003F800FC9E2071030E71520730A000FD242F715E
:100408005307300400C1506CFDC521C056C8663181
:100418008EF7BDD813BDDAFD3A0FC9DCCCCC30F469
:1004280040FDA60EDE03E7EF2B669F38F9710A2020
:100438007100300071120071020E306400FD242F2B
:100448003102000F5A00FC8E205CFC9E2071030EC6
:10045800E7EF01F7C6D7303200FD242F310400182A
:1004680071520730FA00FD242F30FA00FD242F3096
:10047800FA00FD242F7153075A00FC8E205CFC9E65
:100488002071030EF7D7FDB803F7D73104070671BB
:100498003031F9EF04713831F93102050671503104
:1004A800F9EF04715831F931120506714031F9EF4D
:1004B80004714831F94046F957DC094046F9B861FA
:1004C800D8E5C6F94046F947DC094046F9BD61D888
:1004D800F5C6F940C6F901DF0C4046F947DC06408D
:1004E80046F9BDDC11D5C6F9DF114046F957DC0BDA
:1004F8004046F9B8DE05712204EF03712304311276
:1005080005058F3BF9EF01F1318EBE6A323200D713
:10051800F7D7CEABACD7C720FE200CFBF8FFF6BF51
:10052800BA015020BFBA01FD2708717BFA170408E9
:1005380000FDE208629C06FD6D08620E069C06300E
:100548000020BC02CC040F5112879C0897878C08A6
:10055800974C1C61C8ED0406FD1A05878C08973175
:100568008EFD2F08D2DD0E878C0897318EFD33085B
:10057800629C06EFE6CC07008C074C04DE66F18728
:100588009C0997AC02148C049EFD118972878C0912
:1005980097318E07040800146299AC02A1BC028747
:1005A8008C099781879C0997878C0997D1DFD4306C
:1005B8004000C1878C0897318E31AD128C07318E7F
:1005C800318D03BDD831FFBDDADADAADD8FD340B91
:1005D800C0629C06D1DD08FD2B0800E7ED1107611C
:1005E8005907EF94878C0897318EFD3708D2DFF4CE
:1005F800878C089781879C0897ED55055104879C3F
:100608000897878C08974C12DE17878C0897318ECD
:10061800FD3308629C06878C089781879C0897EFB2
:10062800E15104879C0897878C08974C1261C8EDA4
:10063800CE06CC07008C074C04DE6D31825169FD73
:100648001A0531B2E20631825102EFF6713BE287B8
:100658008C0997318E07040800148E509971503018
:1006680002878C099781879C0997878C0997D161A4
:10067800E8318451CD304000C1878C0897318E31E4
:10068800AD128C07318E318D03BDD831FFBDDADA5A
:10069800DAADD8FD340BC0629C06D1DD06FD2B080F
:1006A800E7EF66615907EF8D878C0897318EFD3724
:1006B80008D2DFF431845102EF0C878C08978187C8
:1006C8009C0897ED2F0671503002CC0000CC010039
:1006D8008C014C09DE218C01318E1249F61F728C77
:1006E80001318E04F64714896142DF03F1EF01E11D
:1006F8000D9B615901EFD98BD1DF08FDF209FD048B
:100708000BEF06FD2B08FD170710FE100CC6D7C708
:1007180020FE200AFBF8FFF6BFBA015080BFBA01DD
:10072800717BFAFD270817040600FDE208629C04A5
:10073800FD6D08620E049C04300048BBCC020F51CA
:1007480008879C0697878C06974C1261C8EDE907C5
:10075800FD1A05878C0697318EFD3308629C04CC00
:1007680005008C054C04DE61F1879C0797AB148C5F
:10077800029EFD118972878C0797318E0704060047
:10078800146299ABA1BB878C079781879C079787D1
:100798008C0797D1DFD7304000C1878C0697318E00
:1007A80031AD128C05318E318D03BDD831FFBDDAE4
:1007B800DADAADD8FD340BC0629C04D1DD06FD2B1E
:1007C80008E7EF21615905EF99878C0697318EFD6F
:1007D8003708D2DFF4878C069781879C0697ED4D02
:1007E80007FDF109F710FE100AC6D7717BFAC7207A
:1007F800FE2004FBF8FFFD270817040200FDE208AD
:10080800629C01FD6D08626E019C0130BEF9FDBC61
:1008180009626E019C01FD2B0810FE1004C6D771F9
:070828007ABED7717BBED739
:10082F005208EF065203EF025206FEE600FE1B00CF
:10083F00DC16089F03088F0408089F040862FE2433
:10084F0000089F0408EEBF00EEBA00C1C514410EA8
:10085F0011D9D0FF118FD1FF312E45C4C0D7F2313E
:10086F00A2C401E2D79DE261DD4C09DF12717BFA70
:10087F00C18F06089F0DFAC0CF060800EE27003182
:10088F00F2FA04CF0608004C00DF05D50008DD168C
:10089F0061DD717BFAD50608DD0ACDE31F61CD61FD
:1008AF00CDEE160061CDFED40061FFFE9A00FCF87C
:1008BF00FF0EFEB20061CDFED5004C09DF0EC18FD9
:1008CF0006086F0DFA9F0608C0EE0400CF06080059
:1008DF00F8E3D75200EF025202FE3700CF0CFA00B6
:1008EF00CF060800BF0408C716629F000841001119
:1008FF008F44209B4100118F45209F0108C6510056
:10090F00FE62FFEF025205CF060800C1510CFE0A2E
:10091F0000C0D7C1511DFE0200C0D761DD717BFA47
:10092F0070CEC0A59EC47CFF9EC4609EC461CDD70F
:10093F0061DD717BFAC18EC45C1BFED6FFCF06084A
:10094F0001FED7FFC061CDD731F2FA1AC1AEE4BFB5
:10095F00FEF9AEE6BF00FAAED4BF02FA30FFFFBE1B
:10096F00E4BEE6BED4C0D731F2FA11C1AFFEF9BE74
:10097F00E4AF00FABEE6AF02FABED4C0D7C1BF04DF
:10098F00FA13BF06FA15BF08FA17BF0AFAC0D7AF96
:10099F0004FADB06FAEB08FAFB0AFAD7534B30528C
:1009AF005430324E323030475631323000C5C1519B
:1009BF00045001EE0000FE5AFF9F03085109FEA4E8
:1009CF00FEC4D2DF0908C3618AF3FE0500C2C4EE7C
:1009DF0035FFC1C7FB040861C999A58392DFF8C62B
:1009EF00C0D7FFC150FEFEAB0061DD717BFACF06B1
:1009FF000800FE0A00FE6FFF61CDF8E3EECF00C7DF
:100A0F00FB0408BFFEF98FC0009C05C5C337040661
:100A1F0000BF00FA3536560A300000522BFE660032
:100A2F00C2C4C630040AB800300000B8022004AFB8
:100A3F0000FAB800300F00B802AFFEF961FF520A9A
:100A4F00FE05FFECF8FF0E717BFAC1C7FB04088CA3
:100A5F0005C65C80FE0200C0D761DD717BFA70CFE6
:100A6F00C0FFA59FC0007CFF9FC000609FC00061BA
:100A7F00CDD7618BFEE2FF717BBE410011FB000001
:100A8F0017CEFC0061CB089EFDF31161C999A583B8
:100A9F0092DFF7D7FE7CFED50CFADF23C1CF030818
:100AAF00035109FEBFFDC0D2DF37FE3800A2040894
:100ABF00CF0308075109FEACFDD2B20408DF22C7ED
:100ACF00FB0408318302C6D7C6510AFE97FD624C5C
:100ADF001FDF06CF0CFA01EF04CF0CFA00C0EE2691
:100AEF00FEC0EE20FEC7C1FB04088B31196C0161FB
:100AFF00589BC0C6D7717BFAFE18FEAF04080406D8
:100B0F0000C11436680A300000522DF3FE77FF8FB4
:100B1F00C000FEF6FD61CF5C807C8073C0041900BD
:100B2F00CEFC0F61CBC55404EF03C55417FEE3FD94
:100B3F00C7360008BB629C0288089C03D1DD334C8A
:100B4F0041DE2F70F1312DB161090033081C00080F
:100B5F0051FF612A410E118FD0FF613B118FD1FFE1
:100B6F006138DC0E8B5C03DF0964C6C4FEF6FCEE55
:070B7F0095FDC6C4EE8EFDDA
:100E000061CF5100718C7109FECBF800FEFCF1003E
:100E100000F6BF00F953C0F693935820FEDFF94166
:100E20000036462034C0F9EF05118B99A7A5174469
:100E30008420DFF53602F930C0F9EF04CC0000A7BA
:100E400047DFF9410036842034FEF9EF05118B9914
:100E5000A7A517448420DFF536FEF930FEF9EF042C
:100E6000CC0000A747DFF9FCD80000EFFE61DD7180
:100E70007BFABEF0ADD8BEF200AEF661CDD7DF1D75
:100E800006DC44807FDF167152DEEF32DF0F06D8BA
:100E900044807FDF083154DE3C3172DE3CC9DE0520
:100EA00004FDF10EEF46C514ADDEC1657BDB5C8051
:100EB0009DDEADDA71FB3571FB44807FDEC03544C9
:100EC000807FDEC86BD96BD86BDD6BDC0561C8DD5C
:100ED0001BADDA71FB3174DE077174DBF181EF0C4D
:100EE00045ADD861F846DC61E87177DBC0BDDEC492
:100EF000D78EFC708EFDC1C5C3ADDE315E04943566
:100F0000320000C3C1D8DEF1C1AEF8FC1B0F00C037
:100F1000C0C0C2C4C09EFD609EFCD71489728A0402
:100F20009EFDAA021411894C40DD0E624C04300271
:100F30000061C8300100BF00F9D7C5C3C1ADDADA1E
:100F4000D831750914F62312F661D8B125ED590F81
:100F5000C5C3C1ADDADAD8F4DB0361C8DD3B235584
:100F60009E31730A9501311C61D8A13175F6618AF1
:100F70004C80618ADC11DF0633718C33DE0983DF3C
:100F80000604010061D8857174DB3561FB9DDB656A
:0D0F900071F99DDA637064BDD8C0C2C4D78A
:0A0FF60030383A34353A3339000040
:10200000EA0102030405060708090A0B0C0D0E0F6E
:10201000101112131415161718191A1B1C1D1E1F48
:10202000202122232425262728292A2B2C2D2E2F38
:10203000303132333435363738393A3B3C3D3E3F28
:062040004A5740000801B0
:102046000B001F000000000000000000C830000068
:10205600892B0000F82C000093040000B724000030
:102066007F2600008D2B0000042C00000C2C0000A5
:0E207600472C0000482F000000000000000072
:08208400317503F7332312D775
:0A21000030383A34353A3339000024
:10210A007140F00071783002713AE6713BE2713B3E
:10211A00EA713BEE5A06FCCF34024AE552FF711AC5
:10212A0052710A5271483002713030027120300205
:10213A00CF320206CF330205713BE6717030028E50
:10214A00265CFC9E26D7717830027148F000D7FDD4
:10215A00AE2751205FA8FFD1DD0971502FF9FD226A
:10216A0024EF03FD7402FD0027FD622AFDA221FD72
:10217A00CC2D8F2FF95C20D1DD06CF0EF902EF03AB
:10218A00F50EF9714221717AFAFD1A05FDCF2DFD7E
:10219A00F62EFDEA00EFF2D731020403F1EF01E176
:1021AA003410F9718C8971899931120403F1EF01A4
:1021BA00E13410F9718C89719999D7C7C1C1FBF8BB
:1021CA00FFFD22243164200300EFF9716220F51B20
:1021DA00F98C02318EFD7323D2DD0ACF1BF902710D
:1021EA006320F7EF478C0A318EFD8923FDD3238CB8
:1021FA00026C01318EFD8923300400BF240130179F
:10220A0040BF1C01300400BF2201F6BF2A01710B36
:10221A00E2CE44FF3182E202EFFA8E449C01FDFED7
:10222A0023710BE27163208C01318E121004C6D720
:10223A00C7C1FBF8FF31722003FD22243164200359
:10224A0000EFF97162208B318EFD7323D2DD0671A6
:10225A006320E7EF548C08318EFD8923FDD3238B4D
:10226A006C01318EFD8923300400BF2401301740F0
:10227A00BF1C01300400BF22018C0A91DF04F6BFA3
:10228A002A01710BE2CE44FF3182E202EFFAAC0C72
:10229A00148E449961790C61690A8C0AD1DFDAFDDE
:1022AA00FE23710BE2716320F7C0C6D7C7C1FBF8E2
:1022BA00FF31722003FD22243164200300EFF971FB
:1022CA006220710AE68B318EFD7323D2DD067163BB
:1022DA0020E7EF158C08318EFD89238C0A318EFD9B
:1022EA008923FDFE23716320F7C0C6D7C7C1FBF857
:1022FA00FF31722003FD22243164200300EFF971BB
:10230A006220710AE68B318EFD7323D2DD0671637A
:10231A0020E7EF5231522039C73414F9AC0C165267
:10232A00048B99A5A792DFF9C63184BD02EFFA7131
:10233A007ABDCEB144CBB414F98C0A318EBEB8CE74
:10234A00BB48714BE1714BE5710ABD8C089E44EFA5
:10235A0014710BE28C089E44710BE68C0A9F1AF9E1
:10236A00AC0CBF18F9F7C0C6D7C716FDAA2317F1D8
:10237A00FD8923D2DD06FDFE23E7EF01F7C6D7C7A5
:10238A0016710BE2669E443182E20300EFF9F642CF
:10239A000401DD09AF0401BF0C01E7EF01F7C6D75D
:1023AA00AF2801085CFB08BF280100000000AF2825
:1023BA00015CFBBF2801300400BF2A01301780BF2F
:1023CA001C01300400BF2201D7AF2401086C0408A5
:1023DA00BF2401AF28016C0F086C0B08BF2801004D
:1023EA00000000AF2A01085CFB08BF2A01000000B8
:1023FA0000EDAA23300400BF2401F6BF2A01300BE6
:10240A000BBF280100000000510FBF280100000087
:10241A0000500FBF2801D7D77132057120F0000094
:10242A00000000F6BF26015014BF1401CB44000A75
:10243A00300F0FBF2801716320715320717220D7AA
:10244A0031642002EFFAFDD3237133057128F000BD
:10245A00717320D7D7D77100F200301100BFB601CF
:10246A00300188BF9001300984BF9E01BF9C01BF23
:10247A009A01BF9801BF9601BF9401BF9201F53C32
:10248A00FF30FE00BFBE015006BFBC01F6BFB80157
:10249A0050EEBFBA01A1BFB201C918FE03D730EF8F
:1024AA0000BFB401F6BFBA017108F200D78F3CF938
:1024BA00D1DD0B91DD4B91DD4391DD20EF438F0E92
:1024CA00F92C03DC13D1DD0B91DD0D91DF05FDCA7B
:1024DA0025F3D7FD1025F3D732FA00D7F6426CFF61
:1024EA0061E8E1318F12AE6C23BE6CF6426EFF6179
:1024FA00E8E1318F12AE6E23BE6EF7D7FDCA25F31F
:10250A00D7FD1025F3D7C756008F38F9318EF7BD9E
:10251A00D813BDDAFD3A0FC9DC0000304C41FDA6E4
:10252A000EDE1DD51DF9DF0AF6BE6CBE6EE51DF97D
:10253A00EF09D93BF9F1BE6EF51DF932FA00EF7ECB
:10254A008F38F9318EF7BDD813BDDAFD3A0FC9DCE1
:10255A000000304C42FDA60EDE2EF6426CFFDD0571
:10256A00B26CFF5601D93BF9F1426EFFDD465601C6
:10257A00D93BF912AE6E43DE03E1EF0251FF318F10
:10258A0012AE6E03BE6EEF2CD93BF9F1426CFFDD41
:10259A00185601D93BF912AE6C43DE03E1EF025142
:1025AA00FF318F12AE6C03BE6CF6426EFFDD05B2D0
:1025BA006EFF560166D1DF0532FA00EF01F7C6D782
:1025CA00C75600AE6C4220F9DD1486AF20F9426C82
:1025DA00FFDE05B26CFFEF06AE6CA1A1BE6CAE6E5B
:1025EA004222F9DD155601AF22F9426EFFDE05B22D
:1025FA006EFFEF06AE6EA1A1BE6E66D1DF498F1ED9
:10260A00F9D1DD082C02DD042C02DF318F38F931D3
:10261A008EF7BDD813BDDAFD3A0FC9DC0000304C85
:10262A0042FDA60EDE0C307F00BF22F9F6BF20F96C
:10263A00EF12F6BF22F9507FBF20F9EF07F6BF224B
:10264A00F9BF20F9A01EF9320500C6D78F3EF95C02
:10265A0001D1DD08D93BF9F1BE64EF03F6BE648F00
:10266A003EF95C02D1DD078E386C809E38D78E38F1
:10267A005C7F9E38D78F3DF95C01D1DF0432FA00C6
:10268A00D7D51CF9DD18F51CF98F3DF95C02D1DDAF
:10269A0006CF24F902EF03F524F932FA00D7D5243C
:1026AA00F9DD2A8F25F991DD082C02DD042C02DFE1
:1026BA0005F6BE66EF06D93BF9F1BE66A025F940DC
:1026CA0025F920DF2DF525F9B024F9EF258F3DF9FD
:1026DA005C01D1DF0BF6BE668ED46C109ED4EF126D
:1026EA00D93BF9F1BE668E386C809E388ED45CEF89
:1026FA009ED4321C00D77170F000CE9D08CE9EC0C9
:10270A00CE9F80F592FFF593FFF594FFCE960EE5E6
:10271A0095FFCE9709CE9809CE9C7F711AE7712B47
:10272A00E7717A9DE541F9710321711321D7C73108
:10273A0002211E710221710A9E31929E02EFFA3421
:10274A0048F93692FF52078B99A5A792DFF9710BC8
:10275A009EC6D7C788061631122115711221C734B1
:10276A0026F93092FF1652078B99A5A792DFF9C670
:10277A006673671826F9C6D7C73104210371032186
:10278A003114211E711321710A9E31929E02EFFAB1
:10279A003492FF3626F952078B99A5A792DFF97171
:1027AA000B9EC6D7CF3BF9FFF53FF9CF40F903D7C8
:1027BA00C788061666320003F02C052361D8ED5F40
:1027CA00282361F8ED68289161F8ED7A289161F87B
:1027DA00ED0F299161F8ED1B299161F8ED242991FA
:1027EA0061F8ED52292361F8ED5E29912C0261D836
:1027FA00ED00292C042C0761D8ED76299161F8EDBA
:10280A00C8299161F8EDD229912361D8EDDC29D14B
:10281A0061F8ED6B29912C0261D8ED8629D161F816
:10282A00ED94292C0261F8EDA2299161F8EDAA290B
:10283A002C072361D8EDB8299161F8EDC029912CB4
:10284A000461D8EDDC292361D8EDE429D161F8EDE2
:10285A00EC29ED052A667367182EF9ED052A6673C9
:10286A0067182EF9D1DD06306D2CFD232EED052AD1
:10287A00667367182EF9D1DD7A8F3AF95C01D1DDDA
:10288A0005308000EF01F6609F80F98F3AF95C020B
:10289A00D1DD03E1EF01F1723480F989616A998F20
:1028AA003AF95C04D1DD045102EF01F1723480F986
:1028BA0089616A998F3AF95C08D1DD045120EF01E8
:1028CA00F1723480F989616A998F3AF95C10D1DD25
:1028DA00045110EF01F1723480F989616A998F3AD3
:1028EA00F95C20D1DD045140EF01F1723480F9899D
:1028FA00616A99ED052A30D803FD232E667367189D
:10290A002EF9ED052A667367182EF9FD5626ED0590
:10291A002A667367182EF9ED052A667367182EF969
:10292A008F3DF95C01D1DF0BF6BE668ED46C109E2A
:10293A00D4EF12D93BF9F1BE668E386C809E388E80
:10294A00D45CEF9ED4ED052A667367182EF9FD56FE
:10295A0026ED052A675CBF72667362182EF9ED05CB
:10296A002A667367182EF99E99ED052A67318EC17A
:10297A00662C1A318EFD5D27C0ED052A667367182D
:10298A002EF9307332FD232EEF71667367182EF914
:10299A00302C32FD232EEF63667367182EF9EF5B36
:1029AA00667367182EF9304F32FD232EEF4D66738A
:1029BA0067182EF9EF45667367182EF9EF3D6673AF
:1029CA0067182EF99E9AEF33667367182EF99E9B45
:1029DA00EF29667367182EF9EF21667367182EF9C7
:1029EA00EF19667367182EF9406CF96ADF0D406DAE
:1029FA00F968DF074C6C61F8FD1E05C6D7C7166675
:102A0A004C1ADC074C2161D8FD38276673092EF968
:102A1A00318E12C6D7C71666D1DD0891DD0A91DD5F
:102A2A000CEF0EF52EF9EF09F52FF9EF04CF30F977
:102A3A000266D1DD0891DD05664C02DF19710A23B1
:102A4A00D52EF9DF0BD52FF9DF064030F902DD0666
:102A5A00710303710B23C6D7CF70F935CF76F90FFF
:102A6A00CF77F907CF7BF903E57CF9E57FF9CF80CA
:102A7A00F960D7C7880616662C042C02DC0B912C49
:102A8A0005DC062C062C08DE066673671870F966E4
:102A9A002C04DF0A67D1DD0630752BFD232EC6D73D
:102AAA00C71666730970F9318E12C6D7C7C1C1FB42
:102ABA00F8FF8C025CF09C018C025C0F9B8C014C31
:102ACA0081DC05F792ED712B8C014C50DF05F792F2
:102ADA00ED712B8C014C31DE468C014C11DE1E8CC3
:102AEA00014C10DF0D8B4C03DE3351030D318E1276
:102AFA00EF758B4C03DE268B318E12EF6A8C014CFC
:102B0A0020DF0D8B4C02DE1551060D318E12EF5768
:102B1A008B4C02DE5051080D318E12EF4AEF468C73
:102B2A00014C61DE208C014C60DF0D8B4C04DE35DC
:102B3A00510E0D318E12EF2F8B4C02DE28510A0DE9
:102B4A00318E12EF228C014C70DF0D8B4C08DE1592
:102B5A0051120D318E12EF0F8B4C02DE08511A0DF5
:102B6A00318E12EF02F7921004C6D7716030F98FD6
:102B7A0035F95C40D1DF06710303710B23F7D732B5
:102B8A000A00D771320331240C06712031F9EF049F
:102B9A00712831F931140706711031F9EF047118EF
:102BAA0031F97133038F31F97F8CF9D1DD4271002C
:102BBA002FF98F0EF92C02DC37D1DD3491DD079124
:102BCA002C02DC12EF2A8F34F95C01D1DF22710367
:102BDA0003710B23EF1A8F8CF95C02D1DD123112CB
:102BEA00070E8F34F95C01D1DF06710303710B23E1
:102BFA008F31F99F8CF9326400D7C7D5CAF9F79299
:102C0A00C6D7C72004FBF8FF400EF903DD06400EC5
:102C1A00F905DF228F2EF99C038F2FF99C028F3141
:102C2A00F99C018F5FF99B17C1300400C1F6C150AE
:102C3A0044FDF62210063203001004C6D78F56F957
:102C4A005C01D1DF088F57F95C0391DF12400EF95E
:102C5A0003DF0A31240F0630E831FD232EF7D7327D
:102C6A00F800D78F39F95C01D1DD05F50EF9EF3996
:102C7A008F39F95C02D1DD0C5A00FC8E205CFC9E77
:102C8A002071030E8F39F95C04D161E87113008F4A
:102C9A0039F95C08D161E871030E300500FD242F73
:102CAA00710A2071120071020E8F39F95C20D1DD90
:102CBA000830E203FD232EEF0E8F39F95C10D1DDC7
:102CCA000630E703FD232E8F39F95C80D1DD083009
:102CDA00DD03FD232EEF0E8F39F95C40D1DD06307E
:102CEA00EC03FD232EF539F9F7D700EFFDD7400E97
:102CFA00F903DD06400EF905DF453124211F8F3720
:102D0A00F94F90F9DD148F37F99F90F9D990F9F1BD
:102D1A00C1F6C15050FDB62210047123217150F042
:102D2A0000CE301BCF170006CE3106717A30710BF8
:102D3A00E3710BE7D936F9F1312DBD1A320800D704
:102D4A00C7C1C1FBF8FFAC021489728A016142DE75
:102D5A0011899C01AC02148A017299AC02148C018B
:102D6A009A01AC021489728A01614ADC0689318EA1
:102D7A0012EF1BAC02148A01728A02614ADE078AC8
:102D8A0001318E12EF08AC02148A02318E1210043D
:102D9A00C6D7C716710AE7710BE37150F000717B51
:102DAA0030CE3023CF170006669E31717A30710B10
:102DBA00E73182E302EFFA8D1F7158F000318E126B
:102DCA00C6D7ED222EC73134212B71332130CCF9ED
:102DDA00161744F8F9DD1E148A02D1DF0BA9CEFCBE
:102DEA000061CA629C02EF0717148A02919A02A72D
:102DFA00A7A7A7EFDC3144211C71432130CCF91677
:102E0A001744F8F9DD0FABCEFC0061CA629C02A739
:102E1A00A7A7A7EFEBF7C6D7D7717BFAC7C1C1FB44
:102E2A00F8FFD5F9F9DD0300EFFDE5F9F940F8F906
:102E3A000FDC0300EFFDCC01008C014FF8F9DE1D19
:102E4A008C01F0317E12799CF9614902DF0A00F5A2
:102E5A00F9F9717AFAE7EF60615901EFDCCC010008
:102E6A008C014C0FDE188C01F0317E049CF914A9F8
:102E7A006168DF05AC02B9EF05615901EFE2A0F81C
:102E8A00F9CC0000CC01008C014C0EDE168C01F04E
:102E9A00317E049CF914A9616861E861590061599D
:102EAA0001EFE48B4FF8F9DD0300EFFDF5F9F97155
:102EBA007AFAF7EF0300EFFD1004C6D7C716667754
:102ECA0067F0317E049CF914A96168DD1A674C0F1A
:102EDA00DE1581F0317E049CF914A91267F0317E67
:102EEA0033789CF987EFD9B0F8F9C6D7C756006688
:102EFA004C0FDE23F0317E049CF914A96168DD14BD
:102F0A00A9CEFC0061CAD2DF0B717BFA17F1FDC6AC
:102F1A002E717AFA86EFD8F7C6D7C7C1C1FBF8FF78
:102F2A00FD1A058C02D1DD1261690230AE01BBF6D1
:102F3A00614900DDEE618900EFF51004C6D78F0EF6
:102F4A00F9D161F8ED693091DD1B9161F8ED1B3023
:102F5A009161F8ED4E309161F8ED55309161F8EDDF
:102F6A005E30EDC330712BE7713AE78F0FF991DDCF
:102F7A002ED5BAF9DF05D5BDF9DD05F5FAF9EF0366
:102F8A00A0FAF98FFAF901DE08F50EF9714221F774
:102F9A00D740BAF903DE0840BDF903DE02F7D7715C
:102FAA005221717221710222F5BAF9F5BCF9F5BD07
:102FBA00F9FD2224FD8502FDF001D2DD09714221CD
:102FCA00F50EF900EFFDFDF103D2DD0B714221FD93
:102FDA004A24E50EF9F7D7FDD603D50FF9DF25F513
:102FEA003CF9FD8303D2DF0B714221FD4A24E50E31
:102FFA00F9F7D7FDA603D2DF0F714221FD4A24E576
:10300A000EF9F7D7CF3CF903CF0EF902714221F737
:10301A00D7FD6024CF37001DFD0A21FD5F24714AC8
:10302A009DCE3831CE3971CBE43BEFCBE6F6F0CE0C
:10303A00D4FFCF0EF903F556F9307332FD232EF57E
:10304A000FF9EF783102000100EF71CF0EF905FD9B
:10305A00B203EF68CF0EF9023102006000EF5DFDA6
:10306A00A824FD5021FD5E24F52EF9F52FF9F5303F
:10307A00F9717301717BFAFD5E04FD4A24CF3500B4
:10308A0003CF370019CE3708F538FFCE3910CBE415
:10309A00BFFFCBE6FFF5CED4FFF6BEE0BEE2BED060
:1030AA00F5FAF9E50EF961FD717AFACED47F8E3818
:1030BA006C809E38714221EF0300EFFDE7D7400E86
:1030CA00F903DD06400EF901DF6331340708715355
:1030DA0021F5BAF9EF1531542105F5BAF9EF0CA02B
:1030EA00BAF9D5BAF961F8CFBAF9FF3144070871CC
:1030FA000322F5BDF9EF1531042205F5BDF9EF0CF0
:10310A00A0BDF9D5BDF961F8CFBDF9FF31040208B8
:10311A00717321F5BCF9EF1531742105F5BCF9EF8E
:10312A000CA0BCF9D5BCF961F8CFBCF9FF8F0EF938
:10313A00D1DD0B2C03DD162C02DD12EDE431F5BADC
:10314A00F9F5BDF9F5BCF9F5FBF9EDE43140BAF949
:10315A0006DF1471202EF98F33F95C04D1DF207158
:10316A000303710B23EF1840BAF942DF1271302EB4
:10317A00F98F33F95C08D1DF06710303710B238FD2
:10318A002EF95C08D1DD20A0FBF940FBF90DDC1A11
:10319A00CF3CF903F6426CFFDF10426EFFDF0BF5FE
:1031AA000EF9714221EF03F5FBF940BDF90ADF126E
:1031BA0071402EF98F33F95C10D1DF067103037168
:1031CA000B2340BCF90ADF1271502EF98F33F95CD8
:1031DA0020D1DF06710303710B23320800D7C740E1
:1031EA000EF903DF2C365CF9C7300600C150A8C1BE
:1031FA005030FD3A2210068F57F95C0391DF1271A5
:10320A00402FF98F34F95C10D1DF06710303710B7B
:10321A00238F56F95C01D1DD068F57F95C0391F7CC
:10322A00C6D7D958F9F1C15030FDC521C0629F5B9C
:10323A00F971302FF98F34F95C08D1DF0671030375
:10324A00710B23F7D7D95BF9F1C1D95AF9C15030BB
:10325A00FDB622100471302FF98F34F95C08D1DFE2
:10326A0006710303710B23F7D7C72004FBF8FF305D
:10327A000F00C15030FDC521C0401BF902DF03F722
:10328A00EF3FCC0100CC0202CC03808F56F95C01DF
:10329A00D1DF0D8F57F95C03D1DF05CC0007EF10A2
:1032AA008F57F95C0391DF05CC002FEF03CC00C7E1
:1032BA0017C1300400C150A0C15030FDF6221006DB
:0532CA00F71004C6D757
:1032CF00400EF90161FC61FC61FC61FC61FCC1C352
:1032DF00C5C7520C929269D4FEC1DFF88EFD708E75
:1032EF00FCC1301805FD232EC09EFC609EFD34D41A
:1032FF00FE5206C0B9A5A592DFF9C6C4C2C061FCD3
:10330F00C1C3C5C7520C929269D4FEC1DFF88EFDBE
:10331F00708EFCC13184510DF5C8F971483002FD32
:10332F008227EDD33331A2510A71603002F5C8F90B
:10333F00EDD3338FC8F9D1DD0891DD1291DD29EF7F
:10334F00467150300271403002E5C8F9EF768E5069
:10335F009F08F971503002D908F9F1FD072A629FD1
:10336F000AF9CFC8F902EF5C31B4511731C45106D5
:10337F00CFC8F903EF1171503002F5C8F971483019
:10338F0002EF41CFC8F90440C8F903DF0E8F0AF9E5
:10339F009E50D908F9F1FD1F2AEF158E509F0AF99B
:1033AF0071503002D90AF9F1C1D908F9FDBA27C015
:1033BF00A008F940C8F903DF0BD908F9F1FD072A76
:1033CF00629F0AF9C09EFC609EFD34D4FE5206C077
:1033DF00B9A5A592DFF9C6C4C2C061FCC1714AE5A7
:1033EF00717BBD710BE6AF0401C061FCC1C5717A81
:1033FF00FA31542013D51AF9DD0EEB18F9899E44D2
:10340F00A218F9B01AF9EF2B710AE6300400BF24A5
:10341F0001F6BF2A01300B0BBF280100000000513D
:10342F000FBF280100000000500FBF28017153206B
:10343F00716320C4C061FCEFFE61FCEFFE61FCEF25
:10344F00FE61FCEFFE61FCEFFE61FCEFFE61FCEF45
:10345F00FE61FCEFFE61FCEFFE61FCEFFE61FCEF35
:10346F00FE61FCEFFE61FCEFFE61FCEFFE61FCEF25
:10347F00FE61FCEFFE61FCEFFE61FCEFFE61FCEF15
:10348F00FE61FCEFFE61FCEFFE61FCEFFE61FCEF05
:10349F00FE61FCE51CF961FC71322161FCC18F52A8
:1034AF00F94F96FFDF2B8F53F94F97FFDF238F5481
:1034BF00F94F98FFDF1B71202FF98F34F95C04D17E
:1034CF00DF0F710303710B23400EF90161F8E50F54
:1034DF00F9C061FC61FCC1C3C5C7520C929269D49B
:1034EF00FEC1DFF88EFD708EFCC1717AFA8E312C21
:1034FF0006DD0991DD1D91DD3691EF4ED99AF9F177
:10350F000491F9148D1F993091F9FD4A2D629F3660
:10351F00F9EF378D1F764CC961C856C8E99AF9661D
:10352F001894F93094F9FD4A2D629F37F9EF1BD9A2
:10353F009AF9F10497F9148D1F993091F9FD4A2DDD
:10354F00629F02F9300B03FD232E4031FF08DD058A
:10355F00A031FFEF177158F000712221409AF90244
:10356F00DF03F1EF048F9AF9819F9AF9C09EFC60F7
:10357F009EFD34D4FE5206C0B9A5A592DFF9C6C48C
:04358F00C2C061FC59
:103594004040666D756C00004040666469760000CA
:1035A40040406661646400004040667375620000D8
:1035B400404066636D70000061636F73000000003B
:1035C4006173696E000000006174616E00000000A8
:1035D4006174616E32000000636F730000000000CC
:1035E40073696E000000000074616E00000000004A
:1035F400636F73680000000073696E680000000068
:1036040074616E68000000006578700000000000BE
:1036140066726578700000006C6465787000000064
:103624006C6F6700000000006C6F673130000000B1
:103634006D6F646600000000706F7700000000008A
:1036440073717274000000006365696C000000000F
:0E365400666C6F6F72000000666D6F640000A0
:0A47F60030383A34353A3339000008
:00000001FF


File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,649 @@
:02000000820577
:02000200FFFFFE
:020008005C0D8D
:04001000D40AD60A2E
:02001C002B0CAB
:02002400770C57
:02002A000A0BBF
:080034005E0D250D200DCA0A26
:04004A00D80A1B0DA8
:0400C0007EFBFF853F
:0A00C400FFFFFFFFFFFFFFFFFFFF3C
:0A00CE00FFFFFFFFFFFFFFFFFFFF32
:1000D800C7FD5D02C736F00071F4C6DE0671301048
:1000E800F9EF10360000868767D1DFFB66D1DFF6AF
:1000F800FD7C01360000674C09DE22318E12490072
:10010800217267318E04F60FC1317B9EFDC41189BF
:100118006142DF03F1EF01E1610687EFD940002179
:10012800FFDF03E1EF01F161065700674C09DE1CB0
:10013800318E124900217267318E04F647148961A5
:1001480042DF03F1EF01E1610687EFDF66D161E885
:10015800FD5E04FD3D05FD6824EDD900C6D761EDBF
:10016800D7717BFACEA016CEA180CEA409F5AAFF3E
:10017800F5A9FFD7F400F401F402CD0306F404F462
:1001880005F406CD0740F40CF40EF408F40FF5302E
:1001980000F53100F53300F53400CF350003CF37D3
:1001A8000019F53C00F53E00F520FFF521FFCE22B1
:1001B800E9E523FFCE240BCE2503F526FFCE271F26
:1001C800CE2C1FE52EFFCE2F07CE28FFF54300F5D6
:1001D8004700CF530006F55700F6BEE0BEE2F5D063
:1001E800FFCBE4FFFFCBE6FFFFCED4FFCEE8FFCE88
:1001F800ECFFCEE9FFCEEDFFCEEAFFCEEEFECEEB72
:10020800FFCEEF49CED8FFCEDCFFCE38B1CE397164
:10021800F537FF7108F20090BFB4017138F100F5AD
:100228004002F54102F54302F5A5FFF5A6FF715816
:10023800F000F530FF7128F0005087BF1801BF1A91
:1002480001BF1C01BF1E017148F000F53002F5BC6A
:10025800FFF5BDFFD7CEABACD7C720FE200CFBF80F
:10026800FFF6BFBA015020BFBA01FD7105717BFAD4
:1002780017040800FD2608629C06FDB107620E06F9
:100288009C06300020BC02CC04005112879C0897C1
:10029800878C08974C1C61C8ED4703FD5D02878C6D
:1002A8000897318EFD7307D2DD0E878C0897318E43
:1002B800FD7707629C06EFE6CC07008C074C04DE4E
:1002C80066F1879C0997AC02148C049EFD11897213
:1002D800878C0997318E07040800146299AC02A133
:1002E800BC02878C099781879C0997878C0997D1CD
:1002F800DFD4304000C1878C0897318E31AD128C25
:1003080007318E318D03BDD831FFBDDADADAADD8C9
:10031800FD780AC0629C06D1DD08FD7E0500E7ED88
:100328005804615907EF94878C0897318EFD7B0735
:10033800D2DFF4878C089781879C0897ED98025143
:1003480004879C0897878C08974C12DE17878C08BF
:1003580097318EFD7707629C06878C089781879C6A
:100368000897EFE1715030025104879C0897878CF9
:1003780008974C1261C8ED1504CC07008C074C0493
:10038800DE6D31825169FD5D0231B2E20631825182
:1003980002EFF6713BE2878C0997318E070408005B
:1003A800148E509971503002878C099781879C0967
:1003B80097878C0997D161E8318451CD304000C1CD
:1003C800878C0897318E31AD128C07318E318D03B1
:1003D800BDD831FFBDDADADAADD8FD780AC0629C43
:1003E80006D1DD06FD7E05E7EF66615907EF8D87CB
:1003F8008C0897318EFD7B07D2DFF431845102EFF0
:100408000C878C089781879C0897ED76037160307C
:1004180002CC0000CC01008C014C09DE218C01319A
:100428008E1249F61F728C01318E04F647148961C9
:1004380042DF03F1EF01E10D9B615901EFD98BD147
:10044800DF08FD3609FD480AEF06FD7E05FD5E045E
:1004580010FE100CC6D7C720FE200AFBF8FF717BE0
:100468009DF6BFBA015080BFBA01717BFAFD7105D4
:1004780017040600FD2608629C04FDB107620E04FD
:100488009C04300048BBCC02005108879C06978723
:100498008C06974C1261C8ED3305FD5D02878C060A
:1004A80097318EFD7707629C04CC05008C054C04BF
:1004B800DE61F1879C0797AB148C029EFD1189724F
:1004C800878C0797318E07040600146299ABA1BB8D
:1004D800878C079781879C0797878C0797D1DFD7E9
:1004E800304000C1878C0697318E31AD128C0531B2
:1004F8008E318D03BDD831FFBDDADADAADD8FD789B
:100508000AC0629C04D1DD06FD7E05E7EF21615932
:1005180005EF99878C0697318EFD7B07D2DFF4872C
:100528008C069781879C0697ED9704FD3509F7108F
:10053800FE100AC6D7717BFAC720FE2004FBF8FF1D
:10054800FD710517040200FD2608629C01FDB10734
:10055800626E019C013058FAFD0009626E019C012F
:10056800FD7E0510FE1004C6D73184BD02EFFA7176
:0A0578007BBD717ABED7717BBED740
:1005820061CF5100718C7109FECBF800FEFC69014C
:1005920000F6BF00F953C0F693935820FEDFF941ED
:1005A20000365E20345AFAEF05118B99A7A517443D
:1005B2007420DFF53602F9305AFAEF04CC0000A7B6
:1005C20047DFF941003674203470FAEF05118B9938
:1005D200A7A517447420DFF53670FA3070FAEF04DD
:1005E200CC0000A747DFF9FCD80000EFFE61DD7107
:1005F2007BFABEF0ADD8BEF200AEF661CDD706DA18
:10060200BDDAADDC06D8BDD861D8A6DAD7C312AD43
:10061200D826DCBDD861317006DA23BDDAC2D7D163
:10062200DD1BC1C3DADA9DDAADD8311E33311E3398
:1006320071F9B4DADFF4BDD813BDDAC2C0D75BDB1F
:100642009DDB605BDA9DDAADDC5BD9085BD808BD67
:10065200D8D7DF1D06DC44807FDF167152DEEF3211
:10066200DF0F06D844807FDF083154DE3C3172DE72
:100672003CC9DE0504FDC706EF46C514ADDEC16503
:100682007BDB5C809DDEADDA71FB3571FB44807FE4
:10069200DEC03544807FDEC86BD96BD86BDD6BDC86
:1006A2000561C8DD1BADDA71FB3174DE077174DBE5
:1006B200F181EF0C45ADD861F846DC61E87177DB7A
:1006C200C0BDDEC4D78EFC708EFDC1C5C3ADDE31A8
:1006D2005E048639320000C3C1D8DEF1C1AEF8FC37
:1006E200F10600C0C0C0C2C4C09EFD609EFCD7140B
:1006F20089728A049EFDAA021411894C40DD0E62A1
:100702004C0430020061C8300100BF00F9D7C5C3F4
:10071200C1ADDADAD831750914F62312F661D8B10F
:1007220025ED2F07C5C3C1ADDADAD8F4DB0361C802
:10073200DD3B23559E31730A9501311C61D8A131ED
:1007420075F6618A4C80618ADC11DF0633718C3365
:10075200DE0983DF0604010061D8857174DB35612F
:10076200FB9DDB6571F99DDA637064BDD8C0C2C4BC
:01077200D7AF
:100773005208EF065203EF025206FEE600FE1B008C
:10078300DC16089F03088F0408089F040862FE24F0
:1007930000089F0408EEBF00EEBA00C1C514410E65
:1007A30011D9D0FF118FD1FF312E45C4C0D7F231FB
:1007B300A2C401E2D79DE261DD4C09DF12717BFA2D
:1007C300C18F06089F7FFAC0CF060800EE270031CD
:1007D300F2FA04CF0608004C00DF05D50008DD1649
:1007E30061DD717BFAD50608DD0ACDE31F61CD61BA
:1007F300CDEE160061CDFED40061FFFE9A00FCF839
:10080300FF0EFEB20061CDFED5004C09DF0EC18F95
:1008130006086F7FFA9F0608C0EE0400CF060800A3
:10082300F8E3D75200EF025202FE3700CF7EFA0000
:10083300CF060800BF0408C716629F0008410011D5
:100843008F5C209B4100118F5D209F0108C65100E2
:10085300FE62FFEF025205CF060800C1510CFE0AEB
:1008630000C0D7C1511DFE0200C0D761DD717BFA04
:1008730070CEC0A59EC47CFF9EC4609EC461CDD7CC
:1008830061DD717BFAC18EC45C1BFED6FFCF060807
:1008930001FED7FFC061CDD731F2FA1AC1AEE4BF72
:1008A30070FAAEE6BF72FAAED4BF74FA30FFFFBE81
:1008B300E4BEE6BED4C0D731F2FA11C1AF70FABEBE
:1008C300E4AF72FABEE6AF74FABED4C0D7C1BF7646
:1008D300FA13BF78FA15BF7AFA17BF7CFAC0D7AFFD
:1008E30076FADB78FAEB7AFAFB7CFAD7534B305281
:1008F3005430324E323030475631323000C5C15158
:10090300045001EE0000FE5AFF9F03085109FEA4A4
:10091300FEC4D2DF0908C3618AF3FE0500C2C4EE38
:1009230035FFC1C7FB040861C999A58392DFF8C6E7
:10093300C0D7FFC150FEFEAB0061DD717BFACF066D
:100943000800FE0A00FE6FFF61CDF8E3EECF00C79B
:10095300FB0408BF70FA8FC0009C05C5C3370406AB
:1009630000BF72FA35369A09300000522BFE66003A
:10097300C2C4C6304809B800300000B8022004AF32
:1009830072FAB800300F00B802AF70FA61FF520A72
:10099300FE05FFECF8FF0E717BFAC1C7FB04088C60
:1009A30005C65C80FE0200C0D761DD717BFA70CFA3
:1009B300C0FFA59FC0007CFF9FC000609FC0006177
:1009C300CDD7618BFEE2FF717BBE410011FB0000BE
:1009D30017CEFC0061CB089EFDF31161C999A58375
:1009E30092DFF7D7FE7CFED57EFADF23C1CF030863
:1009F300035109FEBFFDC0D2DF37FE3800A2040851
:100A0300CF0308075109FEACFDD2B20408DF22C7A9
:100A1300FB0408318302C6D7C6510AFE97FD624C18
:100A23001FDF06CF7EFA01EF04CF7EFA00C0EE2669
:100A3300FEC0EE20FEC7C1FB04088B31196C0161B7
:100A4300589BC0C6D7717BFAFE18FEAF0408040694
:100A530000C11436AC09300000522DF3FE77FF8F2E
:100A6300C000FEF6FD61CF5C807C8073C00419007A
:100A7300CEFC0F61CBC55404EF03C55417FEE3FD51
:100A8300C7360008BB629C0288089C03D1DD334C47
:100A930041DE2F70F1312DB161090033081C0008CC
:100AA30051FF612A410E118FD0FF613B118FD1FF9E
:100AB3006138DC0E8B5C03DF0964C6C4FEF6FCEE12
:070AC30095FDC6C4EE8EFD97
:100ACA00400EF90161FC61FC61FC61FC61FCC1C37F
:100ADA00C5C7520C929269D4FEC1DFF88EFD708EA2
:100AEA00FCC1301324FDA533C09EFC609EFD34D4A6
:100AFA00FE5206C0B9A5A592DFF9C6C4C2C061FC00
:100B0A00C1C3C5C7520C929269D4FEC1DFF88EFDEB
:100B1A00708EFCC13184510DF562FA71483002FDC4
:100B2A00EC2BED130C31A25139F562FA71483002FF
:100B3A0071603002FDEC2BD542F9DF0FD543F9DFA6
:100B4A000AD544F9DF05D545F9DD11710A233102C9
:100B5A000302EFFA710303710B23EF03710A23ED0A
:100B6A00130C319451124062FA03DD064062FA0412
:100B7A00DF06F562FAFDEC2B8F62FAD1DD0891DD12
:100B8A001291DD29EF467140300271503002E56260
:100B9A00FAEF768E509F08F971503002D908F9F1B0
:100BAA00FD792E629F0AF9CF62FA02EF5C31945105
:100BBA001731C45106CF62FA03EF11F562FA714890
:100BCA00300271603002EF41CF62FA044062FA03E8
:100BDA00DF0E8F0AF99E50D908F9F1FD912EEF1513
:100BEA008E509F0AF9D90AF9F1C1D908F9FD372CB3
:100BFA00C071503002A008F94062FA03DF0BD9082D
:100C0A00F9F1FD792E629F0AF9C09EFC609EFD34BF
:100C1A00D4FE5206C0B9A5A592DFF9C6C4C2C06106
:100C2A00FCC1C7F616710BE2714AE5717BBD710A08
:100C3A00E651405F0401D1DD05A7F647DFF3710AEB
:100C4A00E6300400BF2401F6BF2A01300B0BBF288F
:100C5A000100000000510FBF280100000000500FE2
:100C6A00BF2801715320716320C6C061FCC1C53120
:100C7A00542016D51AF9DD0EEB18F9899E44A218EC
:100C8A00F9B01AF9EF2B715320710AE6300400BF4C
:100C9A002401F6BF2A01300B0BBF28010000000017
:100CAA00510FBF280100000000500FBF28017163D7
:100CBA0020C4C061FCEFFE61FCEFFE61FCEFFE6147
:100CCA00FCEFFE61FCEFFE61FCEFFE61FCEFFE61F2
:100CDA00FCEFFE61FCEFFE61FCEFFE61FCEFFE61E2
:100CEA00FCEFFE61FCEFFE61FCEFFE61FCEFFE61D2
:100CFA00FCEFFE61FCEFFE61FCEFFE61FCEFFE61C2
:100D0A00FCEFFE61FCEFFE61FCEFFE61FCEFFE61B1
:100D1A00FCE51CF961FC71422161FCC18F6CF94F41
:100D2A0096FFDF2B8F6DF94F97FFDF238F6EF94FF9
:100D3A0098FFDF1B8F4BF95C04D1DF13712043F955
:100D4A00710303710B23400EF90161F8E50FF9C035
:100D5A0061FC61FCC1C3C5C7520C929269D4FEC141
:100D6A00DFF88EFD708EFCC1717AFA8E312C06DDA9
:100D7A000991DD1D91DD3191EF49D9AEF9F104A553
:100D8A00F9148D1F9930A5F9FDE932629F3AF9EFFE
:100D9A0032D9AEF9F104A8F9148D1F9930A8F9FDDA
:100DAA00E932629F3BF9EF1BD9AEF9F104ABF914B2
:100DBA008D1F9930A5F9FDE932629F02F93012229E
:100DCA00FDA5334031FF08DD05A031FFEF1771584B
:100DDA00F00071322140AEF902DF03F1EF048FAE69
:100DEA00F9819FAEF9C09EFC609EFD34D4FE520686
:100DFA00C0B9A5A592DFF9C6C4C2C061FCC1C3C50A
:100E0A00C7520C929269D4FEC1DFF88EFD708EFC37
:100E1A00C18F72F95C03D1DD16400EF903DD06407D
:100E2A000EF905DF0A31240F0630B737FDA533C0A6
:100E3A009EFC609EFD34D4FE5206C0B9A5A592DF81
:070E4A00F9C6C4C2C061FC3F
:0A0FF60030383A34353A3339000040
:10200000EA0102030405060708090A0B0C0D0E0F6E
:10201000101112131415161718191A1B1C1D1E1F48
:10202000202122232425262728292A2B2C2D2E2F38
:10203000303132333435363738393A3B3C3D3E3F28
:102040004A574000F6DA6E9472362B329223D2272A
:0E2050008F29EB2AC52F653168311035080144
:10205E000B001F0000000000000000000000000048
:06206E000000000000006C
:08207400317503F7332312D785
:0A21000030383A34353A3339000024
:10210A00F7D7C7C1FBF8FF31642002EFFA715220FA
:10211A00340020C5304000C1C1506CFD05261006B0
:10212A0017C1E6A1C1500EC1506CFD492510061712
:10213A00C1E6A1C1500EC1506CFD4925100617C158
:10214A00E6A1C1A1A1C1506CFD4925100617C1E63F
:10215A00A1C1500EC1506CFD05261006CC0100CC61
:10216A00000017C1E6A1C1503EC1506CFD05261002
:10217A0006CF03F99EAF5AFABF04F9AF5CFABF065D
:10218A00F9C0C6D7C72006FBF8FFC7170403001615
:10219A00F74940209BA3A75102614ADFF4C6C7173B
:1021AA00A116F74942209BA3A75102614ADFF4C650
:1021BA0017A1C1E6A1C15006C1506CFD0526100643
:1021CA0017040300C1E6A1C1503EC1506CFD0526AB
:1021DA001006716201300900FD3B3362316A9C05C9
:1021EA00716301FD0C21717201300800FD3B3362FD
:1021FA009F02F9301222FDA533F6C15084FDD02486
:10220A00C0629C051006C6D7C7C1FBF8FF51E0D9CA
:10221A0002F9D651A36128319E9F3DF92F5EFA310A
:10222A008EFD74201344040071FEDE05D55FFADFCB
:10223A00548F3DF97C804C95DC15D93DF9F1241475
:10224A0000BDD8AF04F9FDEF0512F623BBEF13D991
:10225A003DF9F1241400BDD8AF06F9FDEF0512F6D9
:10226A0023BBD903F9F1610900BB17C1E6A1C1502B
:10227A000CC1506CFD05261006D2DF068F3DF99F72
:10228A005EFAA05FFAF7C0C6D7300500FDEC34301D
:10229A000500FDEC34717041F9E7D7303300FDECED
:1022AA0034F6C1E6A1C15084FDC5251004717841F8
:1022BA00F9F7D7300A00FDEC34716041F9E7D771BC
:1022CA006841F9F7D7F7D7FDCF22F7D7FD9322F761
:1022DA00D7FDBD22F7D7FDC922F7D7FDA522F7D72B
:1022EA00C75A00FC8E205CFC9E2071030E715207B7
:1022FA0030A000FDEC34715307300400C1506CFD6E
:10230A00D024C056C866318EF7BDD813BDDAFD1089
:10231A0007C9DCCCCC30F440FD7C06DE03E7EF2BAA
:10232A00669F3CF9710A2071003000711200710237
:10233A000E306400FDEC343102000F5A00FC8E208E
:10234A005CFC9E2071030EE7EF01F7C6D73104004B
:10235A00245A00FC8E205CFC9E2071030E715207E9
:10236A0030FA00FDEC3430FA00FDEC3430FA00FDAE
:10237A00EC347153075A00FC8E205CFC9E207103DA
:10238A000EF7D7FDA522F7D7D560FADD04B060FABB
:10239A00D7CF60FA3331040706713041F9EF04717F
:1023AA003841F931120506714041F9EF047148418B
:1023BA00F9403DF957DC09403DF9B861D8E561FAC1
:1023CA00403DF947DC09403DF9BD61D8F561FA4065
:1023DA0061FA01DF0C403DF947DC06403DF9BDDCFE
:1023EA0011D561FADF11403DF957DC0B403DF9B8D0
:1023FA00DE05712204EF03712304311205058F5A99
:10240A00F9EF01F1318EBE6AD7F7D77140F000714A
:10241A00783002713AE6713BE2713BEA713BEE5A5F
:10242A0006FCCF34024AE552FF711A52710A527100
:10243A004830027130300271203002CF330208CFA7
:10244A0032020A71303102713BE6717030028E2617
:10245A005CFC9E26D7717830027148F000D7FD6186
:10246A002BFD65278F10F9313305F50EF9EF04CFEF
:10247A000EF903FD2B2CFDA62EFD3727FDAD24FDFD
:10248A006B33715221717AFAFD5D02FD6E3331545C
:10249A002108715321FD6E33EFF4FD7834FD660196
:1024AA00EFE6D731020403F1EF01E13410F9718C40
:1024BA008971899931120403F1EF01E13410F9713C
:1024CA008C89719999D7C7C1C1FBF8FF3172200372
:1024DA00FD37273164200300EFF9716220F51BF9FB
:1024EA008C02318EFD8826D2DD0ACF1BF902716378
:1024FA0020F7EF478C0A318EFD9E26FDE8268C02D6
:10250A006C01318EFD9E26300400BF240130174035
:10251A00BF1C01300400BF2201F6BF2A01710BE281
:10252A00CE44FF3182E202EFFA8E449C01FD13276A
:10253A00710BE27163208C01318E121004C6D7C769
:10254A00C1FBF8FF31722003FD37273164200300F5
:10255A00EFF97162208B318EFD8826D2DD06716318
:10256A0020E7EF548C08318EFD9E26FDE8268B6C01
:10257A0001318EFD9E26300400BF2401301740BF72
:10258A001C01300400BF22018C0A91DF04F6BF2A25
:10259A0001710BE2CE44FF3182E202EFFAAC0C1475
:1025AA008E449961790C61690A8C0AD1DFDAFD13CC
:1025BA0027710BE2716320F7C0C6D7C7C1FBF8FFCA
:1025CA0031722003FD37273164200300EFF971626D
:1025DA0020710AE68B318EFD8826D2DD06716320D2
:1025EA00E7EF158C08318EFD9E268C0A318EFD9EF2
:1025FA0026FD1327716320F7C0C6D7C7C1FBF8FFB2
:10260A0031722003FD37273164200300EFF971622C
:10261A0020710AE6710BE28B318EFD8826D2DD0924
:10262A00716320717AFAE7EF52710BE23152203965
:10263A00C73414F9AC0C1652048B99A5A792DFF98A
:10264A00C63184BD02EFFA717ABDCEB144CBB4145F
:10265A00F98C0A318EBEB8CEBB48714BE1714BE59D
:10266A00710ABD8C089E44EF118C089E44710BE6DA
:10267A008C0A9F1AF9AC0CBF18F9F7C0C6D7C7164F
:10268A00FDBF2617F1FD9E26D2DD06FD1327E7EFD3
:10269A0001F7C6D7C716710BE2669E443182E20380
:1026AA0000EFF9F6420401DD09AF0401BF0C01E7AE
:1026BA00EF01F7C6D7AF2801085CFB08BF28010065
:1026CA00000000AF28015CFBBF2801300400BF2ACC
:1026DA0001301780BF1C01300400BF2201D7AF248C
:1026EA0001086C0408BF2401AF28016C0F086C0BA9
:1026FA0008BF280100000000AF2A01085CFB08BFE0
:10270A002A0100000000EDBF26300400BF2401F6B4
:10271A00BF2A01300B0BBF280100000000510FBF78
:10272A00280100000000500FBF2801D7D7710BBD48
:10273A00717BBD7132057120F00000000000F6BF08
:10274A0026015014BF1401CB44000A300F0FBF28D2
:10275A0001716320715320717220D731642002EF16
:10276A00FAFDE8267133057128F000717320D7D776
:10277A00D77100F200301100BFB601300188BF9056
:10278A0001300984BF9E01BF9C01BF9A01BF980115
:10279A00BF9601BF9401BF9201F53CFF30FE00BF16
:1027AA00BE015004BFBC01F6BFB80150EEBFBA016A
:1027BA00A1BFB201C918FE00D730EF00BFB401F6BD
:1027CA00BFBA017108F200D78F5BF9D1DD1191DD33
:1027DA004991DD4291DD2091DD4491DD49EF3B8F46
:1027EA000EF92C03DC47D1DD0A91DD4191DF04FDAE
:1027FA00D528D7FD3828D7F6426CFF61E8E1318F3A
:10280A0012AE6C23BE6CF6426EFF61E8E1318F12A4
:10281A00AE6E23BE6ED7FDD528D7FD3828D7F6BEB3
:10282A006CCB6EFF00D7CB6CFF00F6BE6ED78F3C29
:10283A00F9318EF7BDD813BDDAFD1007C9DC0000E7
:10284A00304C41FD7C06DE17A01DF9401DF97FDEE4
:10285A0007F6BE6CBE6EEF06D95AF9F1BE6ED78F77
:10286A003CF9318EF7BDD813BDDAFD1007C9DC007B
:10287A0000304C42FD7C06DE29F6426CFF61E8B26C
:10288A006CFFD95AF9F1426EFFDD3FD95AF912AEFF
:10289A006E43DE03E1EF0251FF318F12AE6E03BECB
:1028AA006ED7D95AF9F1426CFFDD16D95AF912AE30
:1028BA006C43DE03E1EF0251FF318F12AE6C03BEAF
:1028CA006CF6426EFF61E8B26EFFD7D51EF9DD04E1
:1028DA00B01EF9D7CF1EF903AE6E4222F9DD13AF4F
:1028EA0022F9426EFFDE05B26EFFEF06AE6EA1A1BF
:1028FA00BE6EAE6C4220F9DD13AF20F9426CFFDEEA
:10290A0005B26CFFEF06AE6CA1A1BE6C8F1FF9D1A8
:10291A00DD082C02DD042C02DF338F3CF9318EF7FF
:10292A00BDD813BDDAFD1007C9DC0000304C42FDEA
:10293A007C06DE0CF6BF20F9D95AF9BF22F9EF332B
:10294A00D95AF9F1BF20F9F6BF22F9EF268F3CF9DF
:10295A00318EF7BDD813BDDAFD1007C9DC0000308F
:10296A004C42FD7C06DE07E6A1BF22F9EF05E6A18F
:10297A00BF20F9AE6C4220F9DF0AAE6E4222F9613D
:10298A00F8A01FF9D7C7D524F9DD06B024F9EDE977
:10299A002A8F5CF9D1DD1491DD2391DD359161F83F
:1029AA00ED322A9161F8ED612AEF12F6BE66F51C46
:1029BA00F9F526F9F525F9714302EDE92AD95AF90B
:1029CA00F1BE66F51CF9F526F9F525F9714202ED15
:1029DA00E92AD51CF9DD07F51CF9CF25F902D52519
:1029EA00F9DD358F26F991DD082C02DD042C02DF92
:1029FA0008F6BE66714302EF09D95AF9F1BE66714B
:102A0A004202A026F94026F920DF06F526F9B0256C
:102A1A00F9CF24F916EDE92AD95AF9F1BE667142BD
:102A2A0002CF24F9C8EDE92A7142028F26F991DD15
:102A3A00082C02DD042C02DF08D95AF9F1BE66EF30
:102A4A0003F6BE66A026F94026F91061F8F526F9C4
:102A5A00CF24F932EDE92A714202D525F9DD0CF6C7
:102A6A00BE66F525F9CF24F93CEF748F26F95C038D
:102A7A003119728F26F931AE0444201489D2DD054A
:102A8A00311992DFFB318FF1085CC076D1DF03F197
:102A9A00EF048F26F9819F26F966D1DD0E2C40DDE1
:102AAA00162C40DD1E2C40DD29EF0CF6BE66F525FE
:102ABA00F9CF24F9B4EF28F6BE66E525F9CF24F953
:102ACA003CEF1CD95AF9F1BE66E525F9CF24F93C49
:102ADA00EF0DD95AF9F1BE66E525F9CF24F9B4C646
:102AEA00D7D527F9DD04B027F9D78F5DF9D1DD0FE6
:102AFA0091DD1D91DD1091DD1791DD2F91DD43F6FA
:102B0A00BE64F564FAD7D95AF9F1BE64F564FAD706
:102B1A00D564FADF0BD95AF9F1BE64E564FAEF0617
:102B2A00F6BE64F564FACF27F9FAD7D564FADF0E50
:102B3A00D95AF9F1BE64E564FACF27F9FAD7F55DF7
:102B4A00F9D7D564FADF0BF6BE64E564FACF27F944
:102B5A00FAD7CF5DF902D7C736F00071F4DC1371EA
:102B6A0070F000CE9D08CE9EC0CE9F80CE9C7FE5A1
:102B7A0034F9711BE3712BE3711AE7712BE7717A50
:102B8A009D710A9E31929E02EFFA710B9E7103218A
:102B9A00711321712321C6D7C73102211E71022167
:102BAA00710A9E31929E02EFFA3462F93692FF520E
:102BBA00078B99A5A792DFF9710B9EC6D7C788061E
:102BCA001631122115711221C7342AF93092FF16D3
:102BDA0052078B99A5A792DFF9C6667367182AF977
:102BEA00C6D7C77103213114211E711321710A9EA0
:102BFA0031929E02EFFA3492FF362AF952078B99E4
:102C0A00A5A792DFF9710B9E31242113717B9E8F48
:102C1A006AF99E9A8F6BF99E9B711321717A9EC6EF
:102C2A00D7CF5AF9FFF532F9CF33F905D7C7880656
:102C3A001666320002F02361F8EDE52C912361D883
:102C4A00EDF22C2361D8ED012DD161F8ED0A2D2C7E
:102C5A00032361D8ED622E2C0C2C0461D8ED262DAD
:102C6A002C0461F8ED2F2D9161F8ED412D2361F8C7
:102C7A00ED6A2E912C0461D8EDC72DD161F8EDD003
:102C8A002D9161F8EDD92D9161F8EDE22D9161F860
:102C9A00EDEB2D9161F8EDF42D2C042C0761D8EDA4
:102CAA00FC2DD161F8ED0B2E912361D8ED152E2C58
:102CBA000361D8ED202E2C0361F8ED282E9161F8DE
:102CCA00ED362E2361F8ED442E9161F8ED4C2E2C51
:102CDA00072C0361D8ED5A2EED772E675CBF72661A
:102CEA0073621832F9ED772E30D122FDA53366735F
:102CFA00671832F9ED772E6673671832F9ED772E79
:102D0A006673671832F94037F96ADF0D4038F96897
:102D1A00DF074C6C61F8FD6102ED772E6673671868
:102D2A0032F9ED772E6673671832F9D1DD0630A0D5
:102D3A0031FDA533ED772E6673671832F9D1DD7A46
:102D4A008F53F95C01D1DD05308000EF01F6609FF9
:102D5A0092F98F53F95C02D1DD03E1EF01F172348C
:102D6A0092F989616A998F53F95C04D1DD045102A1
:102D7A00EF01F1723492F989616A998F53F95C080B
:102D8A00D1DD045120EF01F1723492F989616A9917
:102D9A008F53F95C10D1DD045110EF01F1723492B6
:102DAA00F989616A998F53F95C20D1DD045140EFAA
:102DBA0001F1723492F989616A99ED772E66736727
:102DCA001832F9ED772E6673671832F9ED772E66A9
:102DDA0073671832F9ED772E6673671832F9ED7753
:102DEA002E6673671832F9ED772E6673671832F913
:102DFA00EF7B67318EC1662C30318EFDC72BC0EF59
:102E0A006C6673671832F99E99EF626673671832B7
:102E1A00F9712221EF576673671832F9EF4F66731B
:102E2A00671832F9303139FDA533EF4166736718F7
:102E3A0032F930EA38FDA533EF336673671832F991
:102E4A00EF2B6673671832F9300D39FDA533EF1D84
:102E5A006673671832F9EF156673671832F9EF0D62
:102E6A006673671832F92C7261F8CEABAAC6D7C757
:102E7A0016664C30DC074C3761D8FDA22B66730905
:102E8A0032F9318E12C6D7C716664C13DF0CF545D8
:102E9A00F9F544F9F543F9F542F9C6D7CF82F93580
:102EAA00CF88F90FCF89F907CF8DF903E58EF9E5B8
:102EBA0091F9CF92F960D7C7880616662C042C02BE
:102ECA00DC0B912C05DC062C062C08DE06667367E3
:102EDA001882F9662C04DF1667D1DD128F4DF95C72
:102EEA0010D1DF0A714045F9710303710B23C6D76C
:102EFA00C71666730982F9318E12C6D7C7C1C1FBDC
:102F0A00F8FF8C025CF09C018C025C0F9B8C014CDC
:102F1A0081DC05F792EDC12F8C014C50DF05F79249
:102F2A00EDC12F8C014C31DE468C014C11DE1E8C1A
:102F3A00014C10DF0D8B4C03DE3351030D318E1221
:102F4A00EF758B4C03DE268B318E12EF6A8C014CA7
:102F5A0020DF0D8B4C02DE1551060D318E12EF5714
:102F6A008B4C02DE5051080D318E12EF4AEF468C1F
:102F7A00014C61DE208C014C60DF0D8B4C04DE3588
:102F8A00510E0D318E12EF2F8B4C02DE28510A0D95
:102F9A00318E12EF228C014C70DF0D8B4C08DE153E
:102FAA0051120D318E12EF0F8B4C02DE08511A0DA1
:102FBA00318E12EF02F7921004C6D7C7D566FADD32
:102FCA0006B066FAED6331CF66FA02713203312434
:102FDA000C06712041F9EF04712841F931140706F2
:102FEA00711041F9EF04711841F9713303400EF978
:102FFA0003DD09400EF90561E8ED63318F41F97F80
:10300A009EF976D161F8ED51318F41F99F9EF966AB
:10301A005C80D1DD2E8F41F95C80D1DD148F4DF9B2
:10302A005C08D1DF1E713045F9710303710B23EF80
:10303A00128F4DF95C04D1DF0A712045F97103033F
:10304A00710B23665C40D1DD2E8F41F95C40D1DDE6
:10305A00148F4DF95C02D1DF1E711045F97103031B
:10306A00710B23EF128F4DF95C01D1DF0A71004514
:10307A00F9710303710B23665C10D1DD2E8F41F9C0
:10308A005C10D1DD148F4CF95C80D1DF1E71704465
:10309A00F9710303710B23EF128F4CF95C40D1DFF6
:1030AA000A716044F9710303710B23665C08D1DD70
:1030BA002E8F41F95C08D1DD148F4CF95C20D1DFE9
:1030CA001E715044F9710303710B23EF128F4CF9EF
:1030DA005C10D1DF0A714044F9710303710B236656
:1030EA005C04D1DD2E8F41F95C04D1DD148F4CF9DB
:1030FA005C04D1DF1E712044F9710303710B23EFC5
:10310A00128F4CF95C08D1DF0A713044F97103035C
:10311A00710B23665C02D1DD2E8F41F95C02D1DD91
:10312A00148F4CF95C02D1DF1E711044F97103034C
:10313A00710B23EF128F4CF95C01D1DF0A71004445
:10314A00F9710303710B238F72F95C03D1DD0A3124
:10315A00240F0630B737FDA533C6D7C7C6D7C72051
:10316A0004FBF8FF400EF903DD06400EF905DF22E5
:10317A008F42F99C038F43F99C028F44F99C018F7B
:10318A0041F99B17C1300400C1F6C15044FD052620
:10319A0010061004C6D78F52F95C01D1DD05F50E71
:1031AA00F9EF398F52F95C02D1DD0C5A00FC8E20FE
:1031BA005CFC9E2071030E8F52F95C04D161E871A8
:1031CA0013008F52F95C08D161E871030E300500D3
:1031DA00FDEC34710A2071120071020E8F52F95CF3
:1031EA0020D1DD0830DB22FDA533EF0E8F52F95CCA
:1031FA0010D1DD0630E022FDA5338F52F95C80D173
:10320A00DD0830D622FDA533EF0E8F52F95C40D18E
:10321A00DD0630E522FDA533F552F9F7D700EFFDBB
:10322A00D7C7400EF903DD09400EF90561E8EDE75D
:10323A003231342170D568FADD06B068FAEDE7322A
:10324A00CF68FA088FA3F92F3BF9318EFD7420134A
:10325A0044040071FEDC258F3BF99FA3F98F3BF9EB
:10326A00315A4FA4F9DD159FA4F98F4AF95C40D170
:10327A00DF0A716042F9710303710B238F3BF94F27
:10328A00A1F9DD1E8F3BF9311A738F3BF9312A619F
:10329A000B9FA1F9D9A1F9F1C1F6C15050FDC5257D
:1032AA0010047133217150F000CE301BCF17000685
:1032BA00CE3106717A30710BE3710BE78F5EF991AB
:1032CA00DD0591DD0AEF13D95AF9F1BD1AEF0E5156
:1032DA00FF2F3AF9318EBD1AEF03F6BD1AC6D7C7CA
:1032EA00C1C1FBF8FFAC021489728A016142DE1186
:1032FA00899C01AC02148A017299AC02148C019A5D
:10330A0001AC021489728A01614ADC0689318E1283
:10331A00EF1BAC02148A01728A02614ADE078A0133
:10332A00318E12EF08AC02148A02318E121004C6D2
:10333A00D7C716710AE7710BE37150F000717B3041
:10334A00CE3023CF170006669E31717A30710BE7B3
:10335A003182E302EFFA8D1F7158F000318E12C6E6
:10336A00D7ED8D33C73144211771432130482016D8
:10337A0017445C20DD0AABCEFC0061CAA7A7EFF0B8
:10338A00F7C6D7C75600664C0FDE0BF0317E12F631
:10339A0078B0F986EFF0F56AFAC6D7717BFAC7C139
:1033AA00C1FBF8FFD56BFADD0300EFFDE56BFA40D0
:1033BA006AFA0FDC0300EFFDCC01008C014F6AFAB8
:1033CA00DE1D8C01F0317E1279B0F9614902DF0A03
:1033DA0000F56BFA717AFAE7EF60615901EFDCCC1C
:1033EA0001008C014C0FDE188C01F0317E04B0F91B
:1033FA0014A96168DF05AC02B9EF05615901EFE272
:10340A00A06AFACC0000CC01008C014C0EDE168CAE
:10341A0001F0317E04B0F914A9616861E8615900CC
:10342A00615901EFE48B4F6AFADD0300EFFDF56B9A
:10343A00FA717AFAF7EF0300EFFD1004C6D7C71640
:10344A00667767F0317E04B0F914A96168DD1A67FE
:10345A004C0FDE1581F0317E04B0F914A91267F021
:10346A00317E3378B0F987EFD9B06AFAC6D7C72068
:10347A0004FBF8FFCC0200CC03008C034C0FDE39AE
:10348A008C03F0317E04B0F914A96168DD26A9CE57
:10349A00FC0061CAD2DF1DD50EF9DF0BCC01008C0E
:1034AA0001D1DF0300EFF8717BFA8C03318EFD48FE
:1034BA0034717AFA615903EFC1CC03008C034C0FC3
:1034CA00DE168C03F0317E04B0F914A9616861E854
:1034DA00615902615903EFE48C02D1DF97F71004B6
:1034EA00C6D7C7C1C1FBF8FFFD5D028C02D1DD1250
:1034FA0061690230AE01BBF6614900DDEE61890007
:10350A00EFF51004C6D7C7712BE78F0EF9D161F812
:10351A00ED103691DD1B9161F8EDC2359161F8ED40
:10352A00F5359161F8EDFC359161F8ED0536ED6DF3
:10353A00368F0FF991DD30D5CEF9DF05D5D1F9DD1A
:10354A0005F56CFAEF03A06CFA8F6CFA01DE09F547
:10355A000EF9715221ED703640CEF903DE0940D1E1
:10356A00F90361D8ED7036F56CFA716221710222A5
:10357A00711222FD3727FD8E21FD0A21D2DD097144
:10358A005221F50EF900EFFDFDEA22D2DD0C71524F
:10359A0021FD6527E50EF9ED7036FDCF227163072F
:1035AA00D50FF9DF05F55BF9EF04CF5BF903CF0E11
:1035BA00F902715221ED7036FD7B27CF37001DCB02
:1035CA00E43BEFCBE6F6F0CED4EFFD1524FD7A27E7
:1035DA00714A9DCF0EF903308000C15008C1505086
:1035EA00FDC525100400F50FF9EF7B31020001003B
:1035FA00EF74CF0EF905FDC922EF6BCF0EF9023138
:10360A0002006300EF60FDC327FD5F24FD7927F503
:10361A0042F9F543F9F544F9F545F9717301717BFE
:10362A00FA716207FD5723CF350003CF370019CE51
:10363A003708CBE4BFFFCBE6FFF5CED4FFF6BEE0FA
:10364A00BEE2BED0F56CFAE50EF931949E02EFFAAD
:10365A00FD652761FD713AE7712BE7717AFA7152BC
:10366A0021EF0300EFFDC6D7D56FFADD04B06FFA7C
:10367A00D7CF6FFA08400EF903DD06400EF901DFD5
:10368A006331340708716321F5CEF9EF15316421EE
:10369A0005F5CEF9EF0CA0CEF9D5CEF961F8CFCE6B
:1036AA00F9FF31440708711322F5D1F9EF153114E6
:1036BA002205F5D1F9EF0CA0D1F9D5D1F961F8CFEE
:1036CA00D1F9FF31040208710322F5D0F9EF15315F
:1036DA00042205F5D0F9EF0CA0D0F9D5D0F961F89C
:1036EA00CFD0F9FF8F0EF9D1DD092C03DD122C02A0
:1036FA00DD0ED7F5CEF9F5D1F9F5D0F9F56DFAD792
:10370A00D5CEF9DF20406EFA04DC40406EFA32DE94
:10371A003A8F4AF95C04D1DF32712042F97103030E
:10372A00710B23EF2640CEF932DF148F4AF95C0879
:10373A00D1DF18713042F9710303710B23EF0C408A
:10374A00CEF9C8DF06F50EF97152218FCEF99F6EB8
:10375A00FA8F42F95C08D1DD20A06DFA406DFA0DAE
:10376A00DC1ACF5BF903F6426CFFDF10426EFFDF13
:10377A000BF50EF9715221EF03F56DFA40D1F90AF2
:10378A00DF128F4AF95C10D1DF0A714042F97103E6
:10379A0003710B2340D0F90ADF128F4AF95C20D15A
:1037AA00DF0A715042F9710303710B23D7C7400E28
:1037BA00F90361E8EDD9383477F9C5300600C1500C
:1037CA00A8C15030FD492510068F78F9F0F977F92C
:1037DA00F303FD7420131431FF31EE05312FC18F2D
:1037EA007AF9F0F979F9F303FD7420C01413C514BA
:1037FA0031FF31EE05312FC405C18F7CF9F0F97B19
:10380A00F9F303FD7420C01413C51431FF31EE051A
:10381A00312FC40516F1609F77F917709F78F98FD9
:10382A0056FA5C1FF0317E04D2F914A9BDDCF6BD4C
:10383A00DEAF52FABDD8AF54FABDDAADDEFD0F06DF
:10384A00ADDABF54FAADD8BF52FA8F56FA5C1FF000
:10385A00317E121778D2F9BDDCF6BDDEAF52FABD61
:10386A00D8AF54FABDDAADDEFD0006ADDABF54FAC0
:10387A00ADD8BF52FAA056FAAF52FABDD8AF54FA31
:10388A00BDDA5106FD2106C9DCFF00F6FD40068DB2
:10389A00D89F79F9AF52FABDD8AF54FABDDA5106BA
:1038AA00FD21065108FD2106C9DCFF00F6FD400690
:1038BA008DD89F7AF98F72F95C03D1DD128F4BF99B
:1038CA005C10D1DF0A714043F9710303710B238F36
:1038DA0072F95C02D1DD068F72F95C01D1F7C6D7A5
:1038EA00D973F9F1C15030FDD024C0629F76F971C5
:1038FA003043F98F4BF95C08D1DF06710303710B72
:10390A0023F7D7D976F9F1C1D975F9C15030FDC578
:10391A00251004713043F98F4BF95C08D1DF067129
:10392A000303710B23F7D7C72004FBF8FF300F00FE
:10393A00C15030FDD024C0401BF902DF03F7EF3736
:10394A00CC0100CC0202CC03808F72F95C03D1DF78
:10395A0005CC0007EF108F72F95C01D1DD05CC00B0
:10396A002FEF03CC002F17C1300400C150A0C15063
:0B397A0030FD05261006F71004C6D72C
:103986004040666D756C00004040666469760000D4
:1039960040406661646400004040667375620000E2
:1039A600404066636D70000061636F730000000045
:1039B6006173696E000000006174616E00000000B2
:1039C6006174616E32000000636F730000000000D6
:1039D60073696E000000000074616E000000000054
:1039E600636F73680000000073696E680000000072
:1039F60074616E68000000006578700000000000C9
:103A060066726578700000006C646578700000006E
:103A16006C6F6700000000006C6F673130000000BB
:103A26006D6F646600000000706F77000000000094
:103A360073717274000000006365696C0000000019
:0E3A4600666C6F6F72000000666D6F640000AA
:0A47F60030383A34353A3339000008
:00000001FF


File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
branches/0.10(X3)/hoge.bin Normal file

Binary file not shown.

261
branches/0.10(X3)/i2c_ctr.c Normal file
View File

@ -0,0 +1,261 @@
/* ========================================================
SoC I2C通信
.nintendo
'09 Apr
======================================================== */
#include "incs.h"
#include "accero.h"
#ifdef _MCU_BSR_
// #ifdef _MODEL_TS0_ || _MODEL_WM0_
// ワーキングモデルはI2Cが逆
// TEGは回路図でテレコ
#define ACKD ACKD1
#define ACKE ACKE1
#define COI COI1
#define IICAEN IICA1EN
#define IICRSV IICRSV1
#define IICA IICA1
#define IICAIF IICAIF1
#define IICAMK IICAMK1
#define IICAPR0 IICAPR11
#define IICAPR1 IICAPR01
#define IICCTL0 IICCTL10
#define IICE IICE1
#define IICF IICF1
#define IICS IICS1
#define IICWH IICWH1
#define IICWL IICWL1
#define LREL LREL1
#define SPD SPD1
#define SPIE SPIE1
#define STCEN STCEN1
#define STD STD1
#define SVA SVA1
#define WREL WREL1
#define WTIM WTIM1
#define TRC TRC1
#define SMC SMC1
#define DFC DFC1
#endif
// ==============================================
extern bit irq_readed; // いずれかのIRQレジスタが読まれた
u8 iic_burst_state;
/* ========================================================
======================================================== */
enum
{
IIC_IDLE = 0,
IIC_RCV_REG_ADRS,
IIC_TX_OR_RX,
IIC_TX,
IIC_RX
};
// 1バイト送受の度に割り込みが発生するバージョン
__interrupt void int_iic_ctr( )
{
static u8 state = IIC_IDLE;
static u8 reg_adrs;
static u8 reg_adrs_internal;
static u8 tx_buf;
u8 rx_buf;
EI();
// 読み出し終了
if( !ACKD ) // 割り込み要因はNAKデータ送信の最後
{
state = IIC_IDLE;
SPIE = 0;
LREL = 1;
// レジスタリードで、割り込みピンをネゲート
// まだ読まれてない割り込みがあれば、再度アサート
if( irq_readed )
{
IRQ0_neg;
irq_readed = 0;
if( !( ( vreg_ctr[VREG_C_IRQ0] == 0 )
&& ( vreg_ctr[VREG_C_IRQ1] == 0 )
&& ( vreg_ctr[VREG_C_IRQ2] == 0 )
&& ( vreg_ctr[VREG_C_IRQ3] == 0 ) ) )
{
while( !IRQ0 ){;} // 時間稼ぎ不要かも
IRQ0_ast;
}
}
// 歩数計読み出し終了
hosu_read_end( );
rtc_unlock( );
iic_burst_state = 0;
return;
}
if( SPD ) // 割り込み要因はストップコンディション
// 通信の最後。↑の !ACKD に来たときは割り込み来ない (SPIE = 0 のため )
{
state = IIC_IDLE;
SPIE = 0;
// I2C終了時に何かする物 //
rtc_unlock( );
return;
}
if( STD ) // 割り込み要因:スタートコンディション
{
if( ( state == IIC_TX ) || ( state == IIC_RX )
|| ( state == IIC_RCV_REG_ADRS )
)
{
state = IIC_IDLE;
// no break //
}
}
switch ( state )
{
case ( IIC_IDLE ):
// 自局呼び出しに応答。
// 初期化など
SPIE = 1;
state = IIC_RCV_REG_ADRS;
WREL = 1; // ウェイト解除
break;
case ( IIC_RCV_REG_ADRS ): // 2バイト目(レジスタアドレス)受信後に来る
// レジスタアドレス受信
reg_adrs = IICA;
tx_buf = vreg_ctr_read( reg_adrs ); // データの準備をしておく
if( reg_adrs != VREG_C_INFO )
{
state = IIC_TX_OR_RX;
}
else
{
state = IIC_IDLE;
}
WREL = 1;
break;
case ( IIC_TX_OR_RX ): // ↑の次に来る割り込み。STなら送信準備、データが来たら書き込まれ
// if( TRC ){ // 送信方向フラグ で区別するのは、割り込み遅延時に不具合が起こりえる
if( STD )
{ // スタートコンディション検出フラグ
// リードされる
if( COI )
{ // アドレス一致フラグ
state = IIC_TX;
// no break, no return //
}
else
{
// リスタートで違うデバイスが呼ばれた!
state = IIC_IDLE; // 終了処理
SPIE = 0;
LREL = 1; // ウェイト解除?
return;
}
}
else
{
state = IIC_RX; // データ1バイト受信の割り込みだった
// no break, no return //
}
default: // バースト R/W でここが何回も呼ばれることになる
if( state == IIC_TX )
{ // 送信
IICA = tx_buf;
vreg_ctr_after_read( reg_adrs ); // 読んだらクリアなどの処理
}
else
{ // 受信
rx_buf = IICA;
vreg_ctr_write( reg_adrs, rx_buf );
WREL = 1;
}
//
if( ( reg_adrs != VREG_C_ACC_HOSU_HIST )
&& ( reg_adrs != VREG_C_INFO ) )
{ // この二つのレジスタは特殊なアクセス方法をする。アクセスポインタを進めない。
reg_adrs += 1;
}
if( state == IIC_TX )
{ // さらにつぎに送るデータの準備だけシテオク。SPが来て使われないかもしれない
tx_buf = vreg_ctr_read( reg_adrs );
}
break;
}
}
// ========================================================
void IIC_ctr_Init( void )
{
IICAEN = 1;
IICE = 0; /* IICA disable */
IICAMK = 1; /* INTIICA disable */
IICAIF = 0; /* clear INTIICA interrupt flag */
IICAPR0 = 1; /* set INTIICA high priority */
IICAPR1 = 0; /* set INTIICA high priority */
#ifdef _MODEL_TEG2_
P6 &= ~0x3;
#else
P20 &= ~0x3;
#endif
SVA = IIC_C_SLAVEADDRESS;
IICF = 0x01;
STCEN = 1; // リスタートの許可
IICRSV = 1; // 通信予約をさせない:スレーブに徹する
SPIE = 0; // ストップコンディションでの割り込みを禁止
WTIM = 1; // 自動でACKを返した後clkをLに固定する
ACKE = 1; // ダメCPUは無視して次の通信をはじめるかもしれないんで早くclkを開放しないといけない
IICWH = 5;
IICWL = 10; // L期間の長さ
SMC = 1; // 高速モード
DFC = 1; // デジタルフィルタon (@fast mode)
IICAMK = 0; // 割り込みを許可
IICE = 1;
#ifdef _MODEL_TEG2_
PM6 &= ~0x3; /* set clock pin for IICA */
#else
PM20 &= ~0x3; /* set clock pin for IICA */
#endif
}
// ========================================================
void IIC_ctr_Stop( void )
{
IICE = 0; /* IICA disable */
IICAEN = 0;
}

210
branches/0.10(X3)/i2c_ctr.h Normal file
View File

@ -0,0 +1,210 @@
#ifndef _MDSERIAL_A_
#define _MDSERIAL_A_
/* IIC operation enable (IICE0) */
#define IIC0_OPERATION 0x80
#define IIC0_OPERATION_DISABLE 0x00 /* stop operation */
#define IIC0_OPERATION_ENABLE 0x80 /* enable operation */
/* Exit from communications (LREL0) */
#define IIC0_COMMUNICATION 0x40
#define IIC0_COMMUNICATION_NORMAL 0x00 /* normal operation */
#define IIC0_COMMUNICATION_EXIT 0x40 /* exit from current communication */
/* Wait cancellation (WREL0) */
#define IIC0_WAITCANCEL 0x20
#define IIC0_WAIT_NOTCANCEL 0x00 /* do not cancel wait */
#define IIC0_WAIT_CANCEL 0x20 /* cancel wait */
/* Generation of interrupt when stop condition (SPIE0) */
#define IIC0_STOPINT 0x10
#define IIC0_STOPINT_DISABLE 0x00 /* disable */
#define IIC0_STOPINT_ENABLE 0x10 /* enable */
/* Wait and interrupt generation (WTIM0) */
#define IIC0_WAITINT 0x08
#define IIC0_WAITINT_CLK8FALLING 0x00 /* generate at the eighth clocks falling edge */
#define IIC0_WAITINT_CLK9FALLING 0x08 /* generated at the ninth clocks falling edge */
/* Acknowledgement control (ACKE0) */
#define IIC0_ACK 0x04
#define IIC0_ACK_DISABLE 0x00 /* enable acknowledgement */
#define IIC0_ACK_ENABLE 0x04 /* disable acknowledgement */
/* Start condition trigger (STT0) */
#define IIC0_STARTCONDITION 0x02
#define IIC0_START_NOTGENERATE 0x00 /* do not generate start condition */
#define IIC0_START_GENERATE 0x02 /* generate start condition */
/* Stop condition trigger (SPT0) */
#define IIC0_STOPCONDITION 0x01
#define IIC0_STOP_NOTGENERATE 0x00 /* do not generate stop condition */
#define IIC0_STOP_GENERATE 0x01 /* generate stop condition */
/*
IIC Status Register 0 (IICS0)
*/
/* Master device status (MSTS0) */
#define IIC0_MASTERSTATUS 0x80
#define IIC0_STATUS_NOTMASTER 0x00 /* slave device status or communication standby status */
#define IIC0_STATUS_MASTER 0x80 /* master device communication status */
/* Detection of arbitration loss (ALD0) */
#define IIC0_ARBITRATION 0x40
#define IIC0_ARBITRATION_NO 0x00 /* arbitration win or no arbitration */
#define IIC0_ARBITRATION_LOSS 0x40 /* arbitration loss */
/* Detection of extension code reception (EXC0) */
#define IIC0_EXTENSIONCODE 0x20
#define IIC0_EXTCODE_NOT 0x00 /* extension code not received */
#define IIC0_EXTCODE_RECEIVED 0x20 /* extension code received */
/* Detection of matching addresses (COI0) */
#define IIC0_ADDRESSMATCH 0x10
#define IIC0_ADDRESS_NOTMATCH 0x00 /* addresses do not match */
#define IIC0_ADDRESS_MATCH 0x10 /* addresses match */
/* Detection of transmit/receive status (TRC0) */
#define IIC0_STATUS 0x08
#define IIC0_STATUS_RECEIVE 0x00 /* receive status */
#define IIC0_STATUS_TRANSMIT 0x08 /* transmit status */
/* Detection of acknowledge signal (ACKD0) */
#define IIC0_ACKDETECTION 0x04
#define IIC0_ACK_NOTDETECTED 0x00 /* ACK signal was not detected */
#define IIC0_ACK_DETECTED 0x04 /* ACK signal was detected */
/* Detection of start condition (STD0) */
#define IIC0_STARTDETECTION 0x02
#define IIC0_START_NOTDETECTED 0x00 /* start condition not detected */
#define IIC0_START_DETECTED 0x02 /* start condition detected */
/* Detection of stop condition (SPD0) */
#define IIC0_STOPDETECTION 0x01
#define IIC0_STOP_NOTDETECTED 0x00 /* stop condition not detected */
#define IIC0_STOP_DETECTED 0x01 /* stop condition detected */
/*
IIC Flag Register 0 (IICF0)
*/
/* STT0 clear flag (STCF) */
#define IIC0_STARTFLAG 0x80
#define IIC0_STARTFLAG_GENERATE 0x00 /* generate start condition */
#define IIC0_STARTFLAG_UNSUCCESSFUL 0x80 /* start condition generation unsuccessful */
/* IIC bus status flag (IICBSY) */
#define IIC0_BUSSTATUS 0x40
#define IIC0_BUS_RELEASE 0x00 /* bus release status */
#define IIC0_BUS_COMMUNICATION 0x40 /* bus communication status */
/* Initial start enable trigger (STCEN) */
#define IIC0_STARTWITHSTOP 0x02
#define IIC0_START_WITHSTOP 0x00 /* generation of a start condition without detecting a stop condition */
#define IIC0_START_WITHOUTSTOP 0x02 /* generation of a start condition upon detection of a stop condition */
/* Communication reservation function disable bit (IICRSV) */
#define IIC0_RESERVATION 0x01
#define IIC0_RESERVATION_ENABLE 0x00 /* enable communication reservation */
#define IIC0_RESERVATION_DISABLE 0x01 /* disable communication reservation */
/*
IIC clock selection register 0 (IICCL0)
*/
#define IICCL0_INITIALVALUE 0x00
/* Detection of SCL0 pin level (CLD0) */
#define IIC0_SCLLEVEL 0x20
#define IIC0_SCL_LOW 0x00 /* clock line at low level */
#define IIC0_SCL_HIGH 0x20 /* clock line at high level */
/* Detection of SDA0 pin level (DAD0) */
#define IIC0_SDALEVEL 0x10
#define IIC0_SDA_LOW 0x00 /* data line at low level */
#define IIC0_SDA_HIGH 0x10 /* data line at high level */
/* Operation mode switching (SMC0) */
#define IIC0_OPERATIONMODE 0x08
#define IIC0_MODE_STANDARD 0x00 /* operates in standard mode */
#define IIC0_MODE_HIGHSPEED 0x08 /* operates in high-speed mode */
/* Digital filter operation control (DFC0) */
#define IIC0_DIGITALFILTER 0x04
#define IIC0_FILTER_OFF 0x00 /* digital filter off */
#define IIC0_FILTER_ON 0x04 /* digital filter on */
/* Operation mode switching (CL01, CL00) */
#define IIC0_CLOCKSELECTION 0x03
/* Combine of (SMC0, CL01, CL00)*/
#define IIC0_CLOCK0 0x00
#define IIC0_CLOCK1 0x01
#define IIC0_CLOCK2 0x02
#define IIC0_CLOCK3 0x03
#define IIC0_CLOCK4 0x08
#define IIC0_CLOCK5 0x09
#define IIC0_CLOCK6 0x0a
#define IIC0_CLOCK7 0x0b
/*
IIC function expansion register 0 (IICX0)
*/
/* IIC clock expension (CLX0) */
#define IIC0_CLOCKEXPENSION 0x01
#define IIC0_EXPENSION0 0x00
#define IIC0_EXPENSION1 0x01
/* Operation clock (CLX0, SMC0, CL01, CL00)
| IIC0_EXPENSION0 | IIC0_EXPENSION1 |
------------|-------------------|-------------------|----------------------
IIC0_CLOCK0 | fprs/2 | prohibited | selection clock(fw)
| fprs/88 | | transfer clock
| normal | | mode
------------|-------------------|-------------------|----------------------
IIC0_CLOCK1 | fprs/2 | prohibited | selection clock(fw)
| fprs/172 | | transfer clock
| normal | | mode
------------|-------------------|-------------------|----------------------
IIC0_CLOCK2 | fprs/2 | prohibited | selection clock(fw)
| fprs/344 | | transfer clock
| normal | | mode
------------|-------------------|-------------------|----------------------
IIC0_CLOCK3 |prohibited/fexscl0 | prohibited | selection clock(fw)
| fw/66 | | transfer clock
| normal | | mode
------------|-------------------|-------------------|----------------------
IIC0_CLOCK4 | fprs/2 | fprs/2 | selection clock(fw)
| fprs/48 | fprs/24 | transfer clock
| high speed | high speed | mode
------------|-------------------|-------------------|----------------------
IIC0_CLOCK5 | fprs/2 | fprs/2 | selection clock(fw)
| fprs/48 | fprs/24 | transfer clock
| high speed | high speed | mode
------------|-------------------|-------------------|----------------------
IIC0_CLOCK6 | fprs/4 | fprs/4 | selection clock(fw)
| fprs/96 | fprs/48 | transfer clock
| high speed | high speed | mode
------------|-------------------|-------------------|----------------------
IIC0_CLOCK7 |prohibited/fexscl0 | prohibited | selection clock(fw)
| fw/18 | | transfer clock
| high speed | | mode
------------|-------------------|-------------------|----------------------
*/
#define ADDRESS_COMPLETE 0x80
#define IIC_MASTER_FLAG_CLEAR 0x00
/******************************************************************************
* Macro define
******************************************************************************/
/******************************************************************************
* Function define
******************************************************************************/
void IIC_ctr_Init( void );
void IIC_ctr_Stop( void );
#endif

View File

@ -0,0 +1,963 @@
78K0R Assembler W1.31 Date:13 Jun 2010 Page: 1
Command: -c9F0104 -yC:\Program Files\NEC Electronics Tools\DEV -_msgoff inter_asm\i2c_ctr.asm
Para-file:
In-file: inter_asm\i2c_ctr.asm
Obj-file: i2c_ctr.rel
Prn-file: i2c_ctr.prn
Assemble list
ALNO STNO ADRS OBJECT M I SOURCE STATEMENT
1 1 ; 78K0R C Compiler V2.10 Assembler Source Date:13 Jun 2010 Time:19:31:23
2 2
3 3 ; Command : -c9F0104 -yC:\Program Files\NEC Electronics Tools\DEV -_msgoff -i
4 4 ; renge -iC:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\
5 5 ; V1.20\inc78k0r -ms -qvjl3wt -sainter_asm -zp -no i2c_ctr.c
6 6 ; In-file : i2c_ctr.c
7 7 ; Asm-file : inter_asm\i2c_ctr.asm
8 8 ; Para-file :
9 9
10 10 $PROCESSOR(9F0104)
11 11 $DEBUG
12 12 $NODEBUGA
13 13 $KANJICODE SJIS
14 14 $TOL_INF 03FH, 0210H, 00H, 00H, 00H, 00H, 00H
15 15
16 16 $DGS FIL_NAM, .file, 07CH, 0FFFEH, 03FH, 067H, 01H, 00H
17 17 $DGS AUX_FIL, i2c_ctr.c
18 18 $DGS MOD_NAM, i2c_ctr, 00H, 0FFFEH, 00H, 077H, 00H, 00H
19 19 $DGS SEC_NAM, @@BITS, U, U, 00H, 078H, 00H, 00H
20 20 $DGS SEC_NAM, @@CNST, U, U, 00H, 078H, 00H, 00H
21 21 $DGS SEC_NAM, @@R_INIT, U, U, 00H, 078H, 00H, 00H
22 22 $DGS SEC_NAM, @@INIT, U, U, 00H, 078H, 00H, 00H
23 23 $DGS SEC_NAM, @@DATA, U, U, 00H, 078H, 00H, 00H
24 24 $DGS SEC_NAM, @@R_INIS, U, U, 00H, 078H, 00H, 00H
25 25 $DGS SEC_NAM, @@INIS, U, U, 00H, 078H, 00H, 00H
26 26 $DGS SEC_NAM, @@DATS, U, U, 00H, 078H, 00H, 00H
27 27 $DGS SEC_NAM, @@CNSTL, U, U, 00H, 078H, 00H, 00H
28 28 $DGS SEC_NAM, @@RLINIT, U, U, 00H, 078H, 00H, 00H
29 29 $DGS SEC_NAM, @@INITL, U, U, 00H, 078H, 00H, 00H
30 30 $DGS SEC_NAM, @@DATAL, U, U, 00H, 078H, 00H, 00H
31 31 $DGS SEC_NAM, @@CALT, U, U, 00H, 078H, 00H, 00H
32 32 $DGS SEC_NAM, ROM_CODE, U, U, 00H, 078H, 00H, 00H
33 33 $DGS SEC_NAM, @@CODEL, U, U, 00H, 078H, 00H, 00H
34 34 $DGS SEC_NAM, @@BASE, U, U, 00H, 078H, 00H, 00H
35 35 $DGS STA_SYM, _lpf_coeff, U, U, 05002H, 03H, 01H, 03H
36 36 $DGS AUX_STR, 00H, 00H, 02FH, 02FH, 00H, 00H, 00H, 00H
37 37 $DGS GLV_SYM, _int_iic_ctr, U, U, 0E001H, 026H, 01H, 02H
38 38 $DGS AUX_FUN, 00H, U, U, 070H, 00H, 00H
39 39 $DGS BEG_FUN, ??bf_int_iic_ctr, U, U, 00H, 065H, 01H, 00H
40 40 $DGS AUX_BEG, 041H, 016H, 01EH
41 41 $DGS STA_SYM, _state, ?L0003, U, 0CH, 03H, 00H, 00H
42 42 $DGS STA_SYM, _reg_adrs, ?L0004, U, 0CH, 03H, 00H, 00H
43 43 $DGS STA_SYM, _reg_adrs_internal, ?L0005, U, 0CH, 03H, 00H, 00H
44 44 $DGS STA_SYM, _tx_buf, ?L0006, U, 0CH, 03H, 00H, 00H
45 45 $DGS REG_VAR, _rx_buf, 06H, 0FFFFH, 010CH, 04H, 00H, 00H
46 46 $DGS BEG_BLK, ??bb00_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
47 47 $DGS AUX_BEG, 0CH, 00H, 020H
48 48 $DGS BEG_BLK, ??bb01_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
49 49 $DGS AUX_BEG, 014H, 00H, 022H
50 50 $DGS BEG_BLK, ??bb02_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
51 51 $DGS AUX_BEG, 015H, 00H, 026H
52 52 $DGS END_BLK, ??eb02_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
53 53 $DGS AUX_END, 015H
54 54 $DGS BEG_BLK, ??bb03_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
55 55 $DGS AUX_BEG, 01BH, 00H, 028H
56 56 $DGS BEG_BLK, ??bb04_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
57 57 $DGS AUX_BEG, 01CH, 00H, 02CH
58 58 $DGS END_BLK, ??eb04_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
59 59 $DGS AUX_END, 01CH
60 60 $DGS BEG_BLK, ??bb05_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
61 61 $DGS AUX_BEG, 01DH, 00H, 036H
62 62 $DGS END_BLK, ??eb05_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
63 63 $DGS AUX_END, 01DH
64 64 $DGS END_BLK, ??eb03_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
65 65 $DGS AUX_END, 01EH
66 66 $DGS END_BLK, ??eb01_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
67 67 $DGS AUX_END, 01FH
68 68 $DGS END_BLK, ??eb00_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
69 69 $DGS AUX_END, 026H
70 70 $DGS BEG_BLK, ??bb06_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
71 71 $DGS AUX_BEG, 02AH, 00H, 03AH
72 72 $DGS END_BLK, ??eb06_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
73 73 $DGS AUX_END, 030H
74 74 $DGS BEG_BLK, ??bb07_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
75 75 $DGS AUX_BEG, 033H, 00H, 03CH
76 76 $DGS BEG_BLK, ??bb08_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
77 77 $DGS AUX_BEG, 037H, 00H, 042H
78 78 $DGS END_BLK, ??eb08_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
79 79 $DGS AUX_END, 03AH
80 80 $DGS END_BLK, ??eb07_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
81 81 $DGS AUX_END, 03BH
82 82 $DGS BEG_BLK, ??bb09_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
83 83 $DGS AUX_BEG, 03EH, 00H, 044H
84 84 $DGS BEG_BLK, ??bb0A_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
85 85 $DGS AUX_BEG, 04CH, 00H, 048H
86 86 $DGS END_BLK, ??eb0A_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
87 87 $DGS AUX_END, 04EH
88 88 $DGS BEG_BLK, ??bb0B_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
89 89 $DGS AUX_BEG, 050H, 00H, 04CH
90 90 $DGS END_BLK, ??eb0B_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
91 91 $DGS AUX_END, 052H
92 92 $DGS BEG_BLK, ??bb0C_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
93 93 $DGS AUX_BEG, 059H, 00H, 04EH
94 94 $DGS BEG_BLK, ??bb0D_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
95 95 $DGS AUX_BEG, 05CH, 00H, 052H
96 96 $DGS END_BLK, ??eb0D_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
97 97 $DGS AUX_END, 05FH
98 98 $DGS BEG_BLK, ??bb0E_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
99 99 $DGS AUX_BEG, 061H, 00H, 058H
100 100 $DGS END_BLK, ??eb0E_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
101 101 $DGS AUX_END, 067H
102 102 $DGS END_BLK, ??eb0C_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
103 103 $DGS AUX_END, 068H
104 104 $DGS BEG_BLK, ??bb0F_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
105 105 $DGS AUX_BEG, 06AH, 00H, 05CH
106 106 $DGS END_BLK, ??eb0F_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
107 107 $DGS AUX_END, 06DH
108 108 $DGS BEG_BLK, ??bb10_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
109 109 $DGS AUX_BEG, 071H, 00H, 060H
110 110 $DGS END_BLK, ??eb10_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
111 111 $DGS AUX_END, 074H
112 112 $DGS BEG_BLK, ??bb11_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
113 113 $DGS AUX_BEG, 076H, 00H, 064H
114 114 $DGS END_BLK, ??eb11_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
115 115 $DGS AUX_END, 07AH
116 116 $DGS BEG_BLK, ??bb12_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
117 117 $DGS AUX_BEG, 07EH, 00H, 068H
118 118 $DGS END_BLK, ??eb12_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
119 119 $DGS AUX_END, 080H
120 120 $DGS BEG_BLK, ??bb13_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
121 121 $DGS AUX_BEG, 083H, 00H, 00H
122 122 $DGS END_BLK, ??eb13_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
123 123 $DGS AUX_END, 085H
124 124 $DGS END_BLK, ??eb09_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
125 125 $DGS AUX_END, 087H
126 126 $DGS END_FUN, ??ef_int_iic_ctr, U, U, 00H, 065H, 01H, 00H
127 127 $DGS AUX_END, 088H
128 128 $DGS GLV_SYM, _IIC_ctr_Init, U, U, 01H, 026H, 01H, 02H
129 129 $DGS AUX_FUN, 00H, U, U, 076H, 00H, 00H
130 130 $DGS BEG_FUN, ??bf_IIC_ctr_Init, U, U, 00H, 065H, 01H, 00H
131 131 $DGS AUX_BEG, 0CEH, 00H, 076H
132 132 $DGS END_FUN, ??ef_IIC_ctr_Init, U, U, 00H, 065H, 01H, 00H
133 133 $DGS AUX_END, 02CH
134 134 $DGS GLV_SYM, _IIC_ctr_Stop, U, U, 01H, 026H, 01H, 02H
135 135 $DGS AUX_FUN, 00H, U, U, 07CH, 00H, 00H
136 136 $DGS BEG_FUN, ??bf_IIC_ctr_Stop, U, U, 00H, 065H, 01H, 00H
137 137 $DGS AUX_BEG, 0FFH, 00H, 07CH
138 138 $DGS END_FUN, ??ef_IIC_ctr_Stop, U, U, 00H, 065H, 01H, 00H
139 139 $DGS AUX_END, 04H
140 140 $DGS GLV_SYM, _iic_burst_state, U, U, 0CH, 026H, 00H, 00H
141 141 $DGS GLV_SYM, _@SEGAX, U, U, 00H, 02H, 00H, 00H
142 142 $DGS GLV_SYM, _irq_readed, U, U, 034CH, 02H, 00H, 00H
143 143 $DGS GLV_SYM, _vreg_ctr, U, U, 0CH, 02H, 01H, 03H
144 144 $DGS AUX_STR, 00H, 00H, 01H, 01H, 00H, 00H, 00H, 00H
145 145 $DGS GLV_SYM, _hosu_read_end, U, U, 01H, 02H, 01H, 02H
146 146 $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
147 147 $DGS GLV_SYM, _rtc_unlock, U, U, 01H, 02H, 01H, 02H
148 148 $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
149 149 $DGS GLV_SYM, _vreg_ctr_read, U, U, 0CH, 02H, 01H, 02H
150 150 $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
151 151 $DGS GLV_SYM, _vreg_ctr_after_read, U, U, 01H, 02H, 01H, 02H
152 152 $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
153 153 $DGS GLV_SYM, _vreg_ctr_write, U, U, 01H, 02H, 01H, 02H
154 154 $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
155 155 $DGS GLV_SYM, _@SEGDE, U, U, 00H, 02H, 00H, 00H
156 156 $DGS GLV_SYM, _@RTARG0, U, U, 00H, 02H, 00H, 00H
157 157
158 158 EXTRN _@SEGAX
159 159 EXTRN _@SEGDE
160 160 EXTRN _@RTARG0
161 161 EXTRN _vreg_ctr
162 162 EXTRN _hosu_read_end
163 163 EXTRN _rtc_unlock
164 164 EXTRN _vreg_ctr_read
165 165 EXTRN _vreg_ctr_after_read
166 166 EXTRN _vreg_ctr_write
167 167 EXTBIT _irq_readed
168 168 PUBLIC _iic_burst_state
169 169 PUBLIC _int_iic_ctr
170 170 PUBLIC _IIC_ctr_Init
171 171 PUBLIC _IIC_ctr_Stop
172 172
173 173 ----- @@BITS BSEG
174 174
175 175 ----- @@CNST CSEG MIRRORP
176 176 00000 01 _lpf_coeff: DB 01H ; 1
177 177 00001 02 DB 02H ; 2
178 178 00002 02 DB 02H ; 2
179 179 00003 03 DB 03H ; 3
180 180 00004 03 DB 03H ; 3
181 181 00005 02 DB 02H ; 2
182 182 00006 00 DB 00H ; 0
183 183 00007 FE DB 0FEH ; 254
184 184 00008 FB DB 0FBH ; 251
185 185 00009 F7 DB 0F7H ; 247
186 186 0000A F3 DB 0F3H ; 243
187 187 0000B F0 DB 0F0H ; 240
188 188 0000C F0 DB 0F0H ; 240
189 189 0000D F3 DB 0F3H ; 243
190 190 0000E FA DB 0FAH ; 250
191 191 0000F 04 DB 04H ; 4
192 192 00010 12 DB 012H ; 18
193 193 00011 25 DB 025H ; 37
194 194 00012 38 DB 038H ; 56
195 195 00013 4D DB 04DH ; 77
196 196 00014 5F DB 05FH ; 95
197 197 00015 6E DB 06EH ; 110
198 198 00016 77 DB 077H ; 119
199 199 00017 7A DB 07AH ; 122
200 200 00018 77 DB 077H ; 119
201 201 00019 6E DB 06EH ; 110
202 202 0001A 5F DB 05FH ; 95
203 203 0001B 4D DB 04DH ; 77
204 204 0001C 38 DB 038H ; 56
205 205 0001D 25 DB 025H ; 37
206 206 0001E 12 DB 012H ; 18
207 207 0001F 04 DB 04H ; 4
208 208 00020 FA DB 0FAH ; 250
209 209 00021 F3 DB 0F3H ; 243
210 210 00022 F0 DB 0F0H ; 240
211 211 00023 F0 DB 0F0H ; 240
212 212 00024 F3 DB 0F3H ; 243
213 213 00025 F7 DB 0F7H ; 247
214 214 00026 FB DB 0FBH ; 251
215 215 00027 FE DB 0FEH ; 254
216 216 00028 00 DB 00H ; 0
217 217 00029 02 DB 02H ; 2
218 218 0002A 03 DB 03H ; 3
219 219 0002B 03 DB 03H ; 3
220 220 0002C 02 DB 02H ; 2
221 221 0002D 02 DB 02H ; 2
222 222 0002E 01 DB 01H ; 1
223 223 0002F 00 DB (1)
224 224
225 225 ----- @@R_INIT CSEG UNIT64KP
226 226 00000 00 DB 00H ; 0
227 227 00001 00 DB (1)
228 228
229 229 ----- @@INIT DSEG BASEP
230 230 00000 ?L0003: DS (1)
231 231 00001 DS (1)
232 232
233 233 ----- @@DATA DSEG BASEP
234 234 00000 _iic_burst_state: DS (1)
235 235 00001 ?L0004: DS (1)
236 236 00002 ?L0005: DS (1)
237 237 00003 ?L0006: DS (1)
238 238
239 239 ----- @@R_INIS CSEG UNIT64KP
240 240
241 241 ----- @@INIS DSEG SADDRP
242 242
243 243 ----- @@DATS DSEG SADDRP
244 244
245 245 ----- @@CNSTL CSEG PAGE64KP
246 246
247 247 ----- @@RLINIT CSEG UNIT64KP
248 248
249 249 ----- @@INITL DSEG UNIT64KP
250 250
251 251 ----- @@DATAL DSEG UNIT64KP
252 252
253 253 ----- @@CALT CSEG CALLT0
254 254
255 255 ; line 1 : /* ========================================================
256 256 ; line 2 : 対SoC 新規チャンネル I2C通信
257 257 ; line 3 : 藤田@開技.nintendo
258 258 ; line 4 : '09 Apr
259 259 ; line 5 : ======================================================== */
260 260 ; line 6 : #include "incs.h"
261 261 ; line 7 : #include "accero.h"
262 262 ; line 8 :
263 263 ; line 9 : #ifdef _MCU_BSR_
264 264 ; line 10 : // #ifdef _MODEL_TS0_ || _MODEL_WM0_
265 265 ; line 11 :
266 266 ; line 12 : // ワーキングモデルはI2Cが逆
267 267 ; line 13 : // TEGは回路図でテレコ
268 268 ; line 14 : #define ACKD ACKD1
269 269 ; line 15 : #define ACKE ACKE1
270 270 ; line 16 : #define COI COI1
271 271 ; line 17 : #define IICAEN IICA1EN
272 272 ; line 18 : #define IICRSV IICRSV1
273 273 ; line 19 : #define IICA IICA1
274 274 ; line 20 : #define IICAIF IICAIF1
275 275 ; line 21 : #define IICAMK IICAMK1
276 276 ; line 22 : #define IICAPR0 IICAPR11
277 277 ; line 23 : #define IICAPR1 IICAPR01
278 278 ; line 24 : #define IICCTL0 IICCTL10
279 279 ; line 25 : #define IICE IICE1
280 280 ; line 26 : #define IICF IICF1
281 281 ; line 27 : #define IICS IICS1
282 282 ; line 28 : #define IICWH IICWH1
283 283 ; line 29 : #define IICWL IICWL1
284 284 ; line 30 : #define LREL LREL1
285 285 ; line 31 : #define SPD SPD1
286 286 ; line 32 : #define SPIE SPIE1
287 287 ; line 33 : #define STCEN STCEN1
288 288 ; line 34 : #define STD STD1
289 289 ; line 35 : #define SVA SVA1
290 290 ; line 36 : #define WREL WREL1
291 291 ; line 37 : #define WTIM WTIM1
292 292 ; line 38 : #define TRC TRC1
293 293 ; line 39 : #define SMC SMC1
294 294 ; line 40 : #define DFC DFC1
295 295 ; line 41 :
296 296 ; line 42 :
297 297 ; line 43 : #endif
298 298 ; line 44 :
299 299 ; line 45 : // ==============================================
300 300 ; line 46 : extern bit irq_readed; // いずれかのIRQレジスタが
301 301 ; 読まれた
302 302 ; line 47 :
303 303 ; line 48 : u8 iic_burst_state;
304 304 ; line 49 :
305 305 ; line 50 :
306 306 ; line 51 : /* ========================================================
307 307 ; line 52 : ======================================================== */
308 308 ; line 53 : enum
309 309 ; line 54 : {
310 310 ; line 55 : IIC_IDLE = 0,
311 311 ; line 56 : IIC_RCV_REG_ADRS,
312 312 ; line 57 : IIC_TX_OR_RX,
313 313 ; line 58 : IIC_TX,
314 314 ; line 59 : IIC_RX
315 315 ; line 60 : };
316 316 ; line 61 :
317 317 ; line 62 :
318 318 ; line 63 : // 1バイト送受の度に割り込みが発生するバージョン
319 319 ; line 64 : __interrupt void int_iic_ctr( )
320 320 ; line 65 : {
321 321
322 322 ----- @@BASE CSEG BASE
323 323 00000 _int_iic_ctr:
324 324 $DGL 1,21
325 325 00000 C1 push ax ;[INF] 1, 1
326 326 00001 C3 push bc ;[INF] 1, 1
327 327 00002 C5 push de ;[INF] 1, 1
328 328 00003 C7 push hl ;[INF] 1, 1
329 329 00004 520C mov c,#0CH ;[INF] 2, 1
330 330 00006 92 dec c ;[INF] 1, 1
331 331 00007 92 dec c ;[INF] 1, 1
332 332 00008 R690000 movw ax,_@SEGAX[c] ;[INF] 3, 1
333 333 0000B C1 push ax ;[INF] 1, 1
334 334 0000C DFF8 bnz $$-6 ;[INF] 2, 4
335 335 0000E 8EFD mov a,ES ;[INF] 2, 1
336 336 00010 70 mov x,a ;[INF] 1, 1
337 337 00011 8EFC mov a,CS ;[INF] 2, 1
338 338 00013 C1 push ax ;[INF] 1, 1
339 339 00014 ??bf_int_iic_ctr:
340 340 ; line 66 : static u8 state = IIC_IDLE;
341 341 ; line 67 : static u8 reg_adrs;
342 342 ; line 68 : static u8 reg_adrs_internal;
343 343 ; line 69 : static u8 tx_buf;
344 344 ; line 70 : u8 rx_buf;
345 345 ; line 71 :
346 346 ; line 72 : EI();
347 347 $DGL 0,8
348 348 00014 717AFA ei ;[INF] 3, 4
349 349 ; line 73 :
350 350 ; line 74 : // 読み出し終了
351 351 ; line 75 : if( !ACKD ) // 割り込み要因はNAKデータ送信
352 352 ; の最後)
353 353 $DGL 0,11
354 354 00017 C7 push hl ;[INF] 1, 1
355 355 00018 364105 movw hl,#0541H ; 1345 ;[INF] 3, 1
356 356 0001B 71A4 mov1 CY,[hl].2 ;[INF] 2, 1
357 357 0001D C6 pop hl ;[INF] 1, 1
358 358 0001E DC41 bc $?L0007 ;[INF] 2, 4
359 359 ; line 76 : {
360 360 00020 ??bb00_int_iic_ctr:
361 361 ; line 77 : state = IIC_IDLE;
362 362 $DGL 0,13
363 363 00020 RF50000 clrb !?L0003 ; state ;[INF] 3, 1
364 364 ; line 78 : SPIE = 0;
365 365 $DGL 0,14
366 366 00023 71485005 clr1 !IICCTL01.4 ;[INF] 4, 2
367 367 ; line 79 : LREL = 1;
368 368 $DGL 0,15
369 369 00027 71605005 set1 !IICCTL01.6 ;[INF] 4, 2
370 370 ; line 80 :
371 371 ; line 81 : // レジスタリードで、割り込みピンをネゲート
372 372 ; line 82 : // まだ読まれてない割り込みがあれば、再度アサート
373 373 ; line 83 : if( irq_readed )
374 374 $DGL 0,19
375 375 0002B R31040026 bf _irq_readed,$?L0011 ;[INF] 4, 5
376 376 ; line 84 : {
377 377 0002F ??bb01_int_iic_ctr:
378 378 ; line 85 : IRQ0_neg;
379 379 $DGL 0,21
380 380 0002F ??bb02_int_iic_ctr:
381 381 0002F 716A27 set1 PM7.6 ;[INF] 3, 2
382 382 00032 ??eb02_int_iic_ctr:
383 383 ; line 86 : irq_readed = 0;
384 384 $DGL 0,22
385 385 00032 R710300 clr1 _irq_readed ;[INF] 3, 2
386 386 ; line 87 : if( !( ( vreg_ctr[VREG_C_IRQ0] == 0 )
387 387 ; line 88 : && ( vreg_ctr[VREG_C_IRQ1] == 0 )
388 388 ; line 89 : && ( vreg_ctr[VREG_C_IRQ2] == 0 )
389 389 ; line 90 : && ( vreg_ctr[VREG_C_IRQ3] == 0 ) ) )
390 390 $DGL 0,26
391 391 00035 RD51000 cmp0 !_vreg_ctr+16 ;[INF] 3, 1
392 392 00038 DF0F bnz $?L0013 ;[INF] 2, 4
393 393 0003A RD51100 cmp0 !_vreg_ctr+17 ;[INF] 3, 1
394 394 0003D DF0A bnz $?L0013 ;[INF] 2, 4
395 395 0003F RD51200 cmp0 !_vreg_ctr+18 ;[INF] 3, 1
396 396 00042 DF05 bnz $?L0013 ;[INF] 2, 4
397 397 00044 RD51300 cmp0 !_vreg_ctr+19 ;[INF] 3, 1
398 398 00047 DD0C bz $?L0011 ;[INF] 2, 4
399 399 00049 ?L0013:
400 400 ; line 91 : {
401 401 00049 ??bb03_int_iic_ctr:
402 402 ; line 92 : while( !IRQ0 ){;} // 時間稼ぎ不要かも
403 403 $DGL 0,28
404 404 00049 31620702 bt P7.6,$?L0015 ;[INF] 4, 5
405 405 0004D ??bb04_int_iic_ctr:
406 406 0004D ??eb04_int_iic_ctr:
407 407 0004D EFFA br $?L0013 ;[INF] 2, 3
408 408 0004F ?L0015:
409 409 ; line 93 : IRQ0_ast;
410 410 $DGL 0,29
411 411 0004F ??bb05_int_iic_ctr:
412 412 0004F 716307 clr1 P7.6 ;[INF] 3, 2
413 413 00052 716B27 clr1 PM7.6 ;[INF] 3, 2
414 414 00055 ??eb05_int_iic_ctr:
415 415 00055 ??eb03_int_iic_ctr:
416 416 ; line 94 : }
417 417 00055 ?L0011:
418 418 00055 ??eb01_int_iic_ctr:
419 419 ; line 95 : }
420 420 ; line 96 :
421 421 ; line 97 : // 歩数計読み出し終了
422 422 ; line 98 : hosu_read_end( );
423 423 $DGL 0,34
424 424 00055 RFD0000 call !_hosu_read_end ;[INF] 3, 3
425 425 ; line 99 : rtc_unlock( );
426 426 $DGL 0,35
427 427 00058 RFD0000 call !_rtc_unlock ;[INF] 3, 3
428 428 ; line 100 : iic_burst_state = 0;
429 429 $DGL 0,36
430 430 0005B RF50000 clrb !_iic_burst_state ;[INF] 3, 1
431 431 ; line 101 : return;
432 432 $DGL 0,37
433 433 0005E RED4B01 br !?L0023 ;[INF] 3, 3
434 434 00061 ??eb00_int_iic_ctr:
435 435 ; line 102 : }
436 436 00061 ?L0007:
437 437 ; line 103 :
438 438 ; line 104 : if( SPD ) // 割り込み要因はストップコンディ
439 439 ; ション
440 440 $DGL 0,40
441 441 00061 C7 push hl ;[INF] 1, 1
442 442 00062 364105 movw hl,#0541H ; 1345 ;[INF] 3, 1
443 443 00065 7184 mov1 CY,[hl].0 ;[INF] 2, 1
444 444 00067 C6 pop hl ;[INF] 1, 1
445 445 00068 DE0D bnc $?L0016 ;[INF] 2, 4
446 446 ; line 105 : // 通信の最後。↑の !ACKD に来た
447 447 ; ときは割り込み来ない (SPIE = 0 のため )
448 448 ; line 106 : {
449 449 0006A ??bb06_int_iic_ctr:
450 450 ; line 107 : state = IIC_IDLE;
451 451 $DGL 0,43
452 452 0006A RF50000 clrb !?L0003 ; state ;[INF] 3, 1
453 453 ; line 108 : SPIE = 0;
454 454 $DGL 0,44
455 455 0006D 71485005 clr1 !IICCTL01.4 ;[INF] 4, 2
456 456 ; line 109 : // I2C終了時に何かする物 //
457 457 ; line 110 : rtc_unlock( );
458 458 $DGL 0,46
459 459 00071 RFD0000 call !_rtc_unlock ;[INF] 3, 3
460 460 ; line 111 : return;
461 461 $DGL 0,47
462 462 00074 RED4B01 br !?L0023 ;[INF] 3, 3
463 463 00077 ??eb06_int_iic_ctr:
464 464 ; line 112 : }
465 465 00077 ?L0016:
466 466 ; line 113 :
467 467 ; line 114 : if( STD ) // 割り込み要因:スタートコンディ
468 468 ; ション
469 469 $DGL 0,50
470 470 00077 C7 push hl ;[INF] 1, 1
471 471 00078 364105 movw hl,#0541H ; 1345 ;[INF] 3, 1
472 472 0007B 7194 mov1 CY,[hl].1 ;[INF] 2, 1
473 473 0007D C6 pop hl ;[INF] 1, 1
474 474 0007E DE15 bnc $?L0020 ;[INF] 2, 4
475 475 ; line 115 : {
476 476 00080 ??bb07_int_iic_ctr:
477 477 ; line 116 : if( ( state == IIC_TX ) || ( state == IIC_RX )
478 478 ; line 117 : || ( state == IIC_RCV_REG_ADRS )
479 479 $DGL 0,53
480 480 00080 R40000003 cmp !?L0003,#03H ; state,3 ;[INF] 4, 1
481 481 00084 DD0C bz $?L0022 ;[INF] 2, 4
482 482 00086 R40000004 cmp !?L0003,#04H ; state,4 ;[INF] 4, 1
483 483 0008A DD06 bz $?L0022 ;[INF] 2, 4
484 484 0008C R40000001 cmp !?L0003,#01H ; state,1 ;[INF] 4, 1
485 485 00090 61F8 sknz ;[INF] 2, 1
486 486 00092 ?L0022:
487 487 ; line 118 : )
488 488 ; line 119 : {
489 489 00092 ??bb08_int_iic_ctr:
490 490 ; line 120 : state = IIC_IDLE;
491 491 $DGL 0,56
492 492 00092 RF50000 clrb !?L0003 ; state ;[INF] 3, 1
493 493 00095 ??eb08_int_iic_ctr:
494 494 ; line 121 : // no break //
495 495 ; line 122 : }
496 496 00095 ?L0020:
497 497 00095 ??eb07_int_iic_ctr:
498 498 ; line 123 : }
499 499 ; line 124 :
500 500 ; line 125 : switch ( state )
501 501 $DGL 0,61
502 502 00095 RD90000 mov x,!?L0003 ; state ;[INF] 3, 1
503 503 00098 F1 clrb a ;[INF] 1, 1
504 504 00099 E7 onew bc ;[INF] 1, 1
505 505 0009A 240000 subw ax,#00H ; 0 ;[INF] 3, 1
506 506 0009D DD08 bz $?L0024 ;[INF] 2, 4
507 507 0009F 23 subw ax,bc ;[INF] 1, 1
508 508 000A0 DD13 bz $?L0025 ;[INF] 2, 4
509 509 000A2 23 subw ax,bc ;[INF] 1, 1
510 510 000A3 DD36 bz $?L0026 ;[INF] 2, 4
511 511 000A5 EF5D br $?L0033 ;[INF] 2, 3
512 512 ; line 126 : {
513 513 000A7 ??bb09_int_iic_ctr:
514 514 ; line 127 : case ( IIC_IDLE ):
515 515 000A7 ?L0024:
516 516 ; line 128 : // 自局呼び出しに応答。
517 517 ; line 129 : // 初期化など
518 518 ; line 130 : SPIE = 1;
519 519 $DGL 0,66
520 520 000A7 71405005 set1 !IICCTL01.4 ;[INF] 4, 2
521 521 ; line 131 : state = IIC_RCV_REG_ADRS;
522 522 $DGL 0,67
523 523 000AB RE50000 oneb !?L0003 ; state ;[INF] 3, 1
524 524 ; line 132 : WREL = 1; // ウェイト解除
525 525 $DGL 0,68
526 526 000AE 71505005 set1 !IICCTL01.5 ;[INF] 4, 2
527 527 ; line 133 : break;
528 528 $DGL 0,69
529 529 000B2 RED4B01 br !?L0023 ;[INF] 3, 3
530 530 ; line 134 :
531 531 ; line 135 : case ( IIC_RCV_REG_ADRS ): // 2バイト目(レジスタアドレス)
532 532 ; 受信後に来る
533 533 000B5 ?L0025:
534 534 ; line 136 : // レジスタアドレス受信
535 535 ; line 137 : reg_adrs = IICA;
536 536 $DGL 0,73
537 537 000B5 8F4005 mov a,!IICA1 ;[INF] 3, 1
538 538 000B8 R9F0100 mov !?L0004,a ; reg_adrs ;[INF] 3, 1
539 539 ; line 138 : tx_buf = vreg_ctr_read( reg_adrs ); // データの準備を
540 540 ; しておく
541 541 $DGL 0,74
542 542 000BB RD90100 mov x,!?L0004 ; reg_adrs ;[INF] 3, 1
543 543 000BE F1 clrb a ;[INF] 1, 1
544 544 000BF RFD0000 call !_vreg_ctr_read ;[INF] 3, 3
545 545 000C2 62 mov a,c ;[INF] 1, 1
546 546 000C3 R9F0300 mov !?L0006,a ; tx_buf ;[INF] 3, 1
547 547 ; line 139 : if( reg_adrs != VREG_C_INFO )
548 548 $DGL 0,75
549 549 000C6 R4001007F cmp !?L0004,#07FH ; reg_adrs,127 ;[INF] 4, 1
550 550 000CA DD06 bz $?L0030 ;[INF] 2, 4
551 551 ; line 140 : {
552 552 000CC ??bb0A_int_iic_ctr:
553 553 ; line 141 : state = IIC_TX_OR_RX;
554 554 $DGL 0,77
555 555 000CC RCF000002 mov !?L0003,#02H ; state,2 ;[INF] 4, 1
556 556 000D0 ??eb0A_int_iic_ctr:
557 557 ; line 142 : }
558 558 $DGL 0,78
559 559 000D0 EF03 br $?L0031 ;[INF] 2, 3
560 560 000D2 ?L0030:
561 561 ; line 143 : else
562 562 ; line 144 : {
563 563 000D2 ??bb0B_int_iic_ctr:
564 564 ; line 145 : state = IIC_IDLE;
565 565 $DGL 0,81
566 566 000D2 RF50000 clrb !?L0003 ; state ;[INF] 3, 1
567 567 000D5 ??eb0B_int_iic_ctr:
568 568 ; line 146 : }
569 569 000D5 ?L0031:
570 570 ; line 147 : WREL = 1;
571 571 $DGL 0,83
572 572 000D5 71505005 set1 !IICCTL01.5 ;[INF] 4, 2
573 573 ; line 148 : break;
574 574 $DGL 0,84
575 575 000D9 EF70 br $?L0023 ;[INF] 2, 3
576 576 ; line 149 :
577 577 ; line 150 : case ( IIC_TX_OR_RX ): // ↑の次に来る割り込み。STなら送
578 578 ; 信準備、データが来たら書き込まれ
579 579 000DB ?L0026:
580 580 ; line 151 : // if( TRC ){ // 送信方向フラグ で区別するのは、割り
581 581 ; 込み遅延時に不具合が起こりえる
582 582 ; line 152 : if( STD )
583 583 $DGL 0,88
584 584 000DB C7 push hl ;[INF] 1, 1
585 585 000DC 364105 movw hl,#0541H ; 1345 ;[INF] 3, 1
586 586 000DF 7194 mov1 CY,[hl].1 ;[INF] 2, 1
587 587 000E1 C6 pop hl ;[INF] 1, 1
588 588 000E2 DE1C bnc $?L0032 ;[INF] 2, 4
589 589 ; line 153 : { // スタートコンディション検出フラ
590 590 ; グ
591 591 000E4 ??bb0C_int_iic_ctr:
592 592 ; line 154 : // リードされる
593 593 ; line 155 : if( COI )
594 594 $DGL 0,91
595 595 000E4 C7 push hl ;[INF] 1, 1
596 596 000E5 364105 movw hl,#0541H ; 1345 ;[INF] 3, 1
597 597 000E8 71C4 mov1 CY,[hl].4 ;[INF] 2, 1
598 598 000EA C6 pop hl ;[INF] 1, 1
599 599 000EB DE06 bnc $?L0034 ;[INF] 2, 4
600 600 ; line 156 : { // アドレス一致フラグ
601 601 000ED ??bb0D_int_iic_ctr:
602 602 ; line 157 : state = IIC_TX;
603 603 $DGL 0,93
604 604 000ED RCF000003 mov !?L0003,#03H ; state,3 ;[INF] 4, 1
605 605 000F1 ??eb0D_int_iic_ctr:
606 606 ; line 158 : // no break, no return //
607 607 ; line 159 : }
608 608 $DGL 0,95
609 609 000F1 EF11 br $?L0033 ;[INF] 2, 3
610 610 000F3 ?L0034:
611 611 ; line 160 : else
612 612 ; line 161 : {
613 613 000F3 ??bb0E_int_iic_ctr:
614 614 ; line 162 : // リスタートで違うデバイスが呼ばれた!
615 615 ; line 163 : state = IIC_IDLE; // 終了処理
616 616 $DGL 0,99
617 617 000F3 RF50000 clrb !?L0003 ; state ;[INF] 3, 1
618 618 ; line 164 : SPIE = 0;
619 619 $DGL 0,100
620 620 000F6 71485005 clr1 !IICCTL01.4 ;[INF] 4, 2
621 621 ; line 165 : LREL = 1; // ウェイト解除?
622 622 $DGL 0,101
623 623 000FA 71605005 set1 !IICCTL01.6 ;[INF] 4, 2
624 624 ; line 166 : return;
625 625 $DGL 0,102
626 626 000FE EF4B br $?L0023 ;[INF] 2, 3
627 627 00100 ??eb0E_int_iic_ctr:
628 628 ; line 167 : }
629 629 ; line 168 : }
630 630 00100 ??eb0C_int_iic_ctr:
631 631 00100 ?L0032:
632 632 ; line 169 : else
633 633 ; line 170 : {
634 634 00100 ??bb0F_int_iic_ctr:
635 635 ; line 171 : state = IIC_RX; // データ1バイト受信の割り込みだ
636 636 ; った
637 637 $DGL 0,107
638 638 00100 RCF000004 mov !?L0003,#04H ; state,4 ;[INF] 4, 1
639 639 00104 ??eb0F_int_iic_ctr:
640 640 ; line 172 : // no break, no return //
641 641 ; line 173 : }
642 642 00104 ?L0033:
643 643 ; line 174 :
644 644 ; line 175 : default: // バースト R/W でここが何回も呼
645 645 ; ばれることになる
646 646 ; line 176 : if( state == IIC_TX )
647 647 $DGL 0,112
648 648 00104 R40000003 cmp !?L0003,#03H ; state,3 ;[INF] 4, 1
649 649 00108 DF0F bnz $?L0036 ;[INF] 2, 4
650 650 ; line 177 : { // 送信
651 651 0010A ??bb10_int_iic_ctr:
652 652 ; line 178 : IICA = tx_buf;
653 653 $DGL 0,114
654 654 0010A R8F0300 mov a,!?L0006 ; tx_buf ;[INF] 3, 1
655 655 0010D 9F4005 mov !IICA1,a ;[INF] 3, 1
656 656 ; line 179 : vreg_ctr_after_read( reg_adrs ); // 読んだらクリア
657 657 ; などの処理
658 658 $DGL 0,115
659 659 00110 RD90100 mov x,!?L0004 ; reg_adrs ;[INF] 3, 1
660 660 00113 F1 clrb a ;[INF] 1, 1
661 661 00114 RFD0000 call !_vreg_ctr_after_read ;[INF] 3, 3
662 662 00117 ??eb10_int_iic_ctr:
663 663 ; line 180 : }
664 664 $DGL 0,116
665 665 00117 EF12 br $?L0037 ;[INF] 2, 3
666 666 00119 ?L0036:
667 667 ; line 181 : else
668 668 ; line 182 : { // 受信
669 669 00119 ??bb11_int_iic_ctr:
670 670 ; line 183 : rx_buf = IICA;
671 671 $DGL 0,119
672 672 00119 8F4005 mov a,!IICA1 ;[INF] 3, 1
673 673 0011C 76 mov l,a ;[INF] 1, 1
674 674 ; line 184 : vreg_ctr_write( reg_adrs, rx_buf );
675 675 $DGL 0,120
676 676 0011D 17 movw ax,hl ;[INF] 1, 1
677 677 0011E F1 clrb a ;[INF] 1, 1
678 678 0011F C1 push ax ;[INF] 1, 1
679 679 00120 RD90100 mov x,!?L0004 ; reg_adrs ;[INF] 3, 1
680 680 00123 RFD0000 call !_vreg_ctr_write ;[INF] 3, 3
681 681 00126 C0 pop ax ;[INF] 1, 1
682 682 ; line 185 : WREL = 1;
683 683 $DGL 0,121
684 684 00127 71505005 set1 !IICCTL01.5 ;[INF] 4, 2
685 685 0012B ??eb11_int_iic_ctr:
686 686 ; line 186 : }
687 687 0012B ?L0037:
688 688 ; line 187 : //
689 689 ; line 188 : if( ( reg_adrs != VREG_C_ACC_HOSU_HIST )
690 690 ; line 189 : && ( reg_adrs != VREG_C_INFO ) )
691 691 $DGL 0,125
692 692 0012B R4001004F cmp !?L0004,#04FH ; reg_adrs,79 ;[INF] 4, 1
693 693 0012F DD09 bz $?L0038 ;[INF] 2, 4
694 694 00131 R4001007F cmp !?L0004,#07FH ; reg_adrs,127 ;[INF] 4, 1
695 695 00135 61E8 skz ;[INF] 2, 1
696 696 ; line 190 : { // この二つのレジスタは特殊なアクセス方法をする。アク
697 697 ; セスポインタを進めない。
698 698 00137 ??bb12_int_iic_ctr:
699 699 ; line 191 : reg_adrs += 1;
700 700 $DGL 0,127
701 701 00137 RA00100 inc !?L0004 ; reg_adrs ;[INF] 3, 2
702 702 0013A ??eb12_int_iic_ctr:
703 703 ; line 192 : }
704 704 0013A ?L0038:
705 705 ; line 193 :
706 706 ; line 194 : if( state == IIC_TX )
707 707 $DGL 0,130
708 708 0013A R40000003 cmp !?L0003,#03H ; state,3 ;[INF] 4, 1
709 709 0013E DF0B bnz $?L0023 ;[INF] 2, 4
710 710 ; line 195 : { // さらにつぎに送るデータの準備だ
711 711 ; けシテオク。SPが来て使われないかもしれない
712 712 00140 ??bb13_int_iic_ctr:
713 713 ; line 196 : tx_buf = vreg_ctr_read( reg_adrs );
714 714 $DGL 0,132
715 715 00140 RD90100 mov x,!?L0004 ; reg_adrs ;[INF] 3, 1
716 716 00143 F1 clrb a ;[INF] 1, 1
717 717 00144 RFD0000 call !_vreg_ctr_read ;[INF] 3, 3
718 718 00147 62 mov a,c ;[INF] 1, 1
719 719 00148 R9F0300 mov !?L0006,a ; tx_buf ;[INF] 3, 1
720 720 0014B ??eb13_int_iic_ctr:
721 721 ; line 197 : }
722 722 ; line 198 : break;
723 723 0014B ??eb09_int_iic_ctr:
724 724 ; line 199 : }
725 725 0014B ?L0023:
726 726 ; line 200 : }
727 727 $DGL 0,136
728 728 0014B ??ef_int_iic_ctr:
729 729 0014B C0 pop ax ;[INF] 1, 1
730 730 0014C 9EFC mov CS,a ;[INF] 2, 1
731 731 0014E 60 mov a,x ;[INF] 1, 1
732 732 0014F 9EFD mov ES,a ;[INF] 2, 1
733 733 00151 R340000 movw de,#_@SEGAX ;[INF] 3, 1
734 734 00154 5206 mov c,#06H ;[INF] 2, 1
735 735 00156 C0 pop ax ;[INF] 1, 1
736 736 00157 B9 movw [de],ax ;[INF] 1, 1
737 737 00158 A5 incw de ;[INF] 1, 1
738 738 00159 A5 incw de ;[INF] 1, 1
739 739 0015A 92 dec c ;[INF] 1, 1
740 740 0015B DFF9 bnz $$-5 ;[INF] 2, 4
741 741 0015D C6 pop hl ;[INF] 1, 1
742 742 0015E C4 pop de ;[INF] 1, 1
743 743 0015F C2 pop bc ;[INF] 1, 1
744 744 00160 C0 pop ax ;[INF] 1, 1
745 745 00161 61FC reti ;[INF] 2, 6
746 746 00163 ??ee_int_iic_ctr:
747 747 ; line 201 :
748 748 ; line 202 :
749 749 ; line 203 :
750 750 ; line 204 : // ========================================================
751 751 ; line 205 : void IIC_ctr_Init( void )
752 752 ; line 206 : {
753 753
754 754 ----- ROM_CODE CSEG BASE
755 755 00000 _IIC_ctr_Init:
756 756 $DGL 1,112
757 757 00000 ??bf_IIC_ctr_Init:
758 758 ; line 207 :
759 759 ; line 208 : IICAEN = 1;
760 760 $DGL 0,3
761 761 00000 71000105 set1 !PER3.0 ;[INF] 4, 2
762 762 ; line 209 :
763 763 ; line 210 : IICE = 0; /* IICA disable */
764 764 $DGL 0,5
765 765 00004 71785005 clr1 !IICCTL01.7 ;[INF] 4, 2
766 766 ; line 211 :
767 767 ; line 212 : IICAMK = 1; /* INTIICA disable */
768 768 $DGL 0,7
769 769 00008 713AD5 set1 MK2H.3 ;[INF] 3, 2
770 770 ; line 213 : IICAIF = 0; /* clear INTIICA interrupt flag
771 771 ; */
772 772 $DGL 0,8
773 773 0000B 713BD1 clr1 IF2H.3 ;[INF] 3, 2
774 774 ; line 214 :
775 775 ; line 215 : IICAPR0 = 1; /* set INTIICA high priority */
776 776 $DGL 0,10
777 777 0000E 713ADD set1 PR12H.3 ;[INF] 3, 2
778 778 ; line 216 : IICAPR1 = 0; /* set INTIICA high priority */
779 779 $DGL 0,11
780 780 00011 713BD9 clr1 PR02H.3 ;[INF] 3, 2
781 781 ; line 217 :
782 782 ; line 218 : #ifdef _MODEL_TEG2_
783 783 ; line 219 : P6 &= ~0x3;
784 784 ; line 220 : #else
785 785 ; line 221 : P20 &= ~0x3;
786 786 $DGL 0,16
787 787 00014 8F1005 mov a,!P20 ;[INF] 3, 1
788 788 00017 5CFC and a,#0FCH ; 252 ;[INF] 2, 1
789 789 00019 9F1005 mov !P20,a ;[INF] 3, 1
790 790 ; line 222 : #endif
791 791 ; line 223 :
792 792 ; line 224 : SVA = IIC_C_SLAVEADDRESS;
793 793 $DGL 0,19
794 794 0001C CF54054A mov !SVA1,#04AH ; 74 ;[INF] 4, 1
795 795 ; line 225 : IICF = 0x01;
796 796 $DGL 0,20
797 797 00020 E54205 oneb !IICF1 ;[INF] 3, 1
798 798 ; line 226 :
799 799 ; line 227 : STCEN = 1; // リスタートの許可
800 800 $DGL 0,22
801 801 00023 71104205 set1 !IICF1.1 ;[INF] 4, 2
802 802 ; line 228 : IICRSV = 1; // 通信予約をさせない:スレーブに
803 803 ; 徹する
804 804 $DGL 0,23
805 805 00027 71004205 set1 !IICF1.0 ;[INF] 4, 2
806 806 ; line 229 :
807 807 ; line 230 : SPIE = 0; // ストップコンディションでの割り
808 808 ; 込みを禁止
809 809 $DGL 0,25
810 810 0002B 71485005 clr1 !IICCTL01.4 ;[INF] 4, 2
811 811 ; line 231 : WTIM = 1; // 自動でACKを返した後clkをLに固
812 812 ; 定する
813 813 $DGL 0,26
814 814 0002F 71305005 set1 !IICCTL01.3 ;[INF] 4, 2
815 815 ; line 232 : ACKE = 1; // ダメCPUは無視して次の通信をは
816 816 ; じめるかもしれないんで早くclkを開放しないといけない
817 817 $DGL 0,27
818 818 00033 71205005 set1 !IICCTL01.2 ;[INF] 4, 2
819 819 ; line 233 :
820 820 ; line 234 : IICWH = 5;
821 821 $DGL 0,29
822 822 00037 CF530505 mov !IICWH1,#05H ; 5 ;[INF] 4, 1
823 823 ; line 235 : IICWL = 10; // L期間の長さ
824 824 $DGL 0,30
825 825 0003B CF52050A mov !IICWL1,#0AH ; 10 ;[INF] 4, 1
826 826 ; line 236 :
827 827 ; line 237 : SMC = 1; // 高速モード
828 828 $DGL 0,32
829 829 0003F 71305105 set1 !IICCTL11.3 ;[INF] 4, 2
830 830 ; line 238 : DFC = 1; // デジタルフィルタon (@fast mod
831 831 ; e)
832 832 $DGL 0,33
833 833 00043 71205105 set1 !IICCTL11.2 ;[INF] 4, 2
834 834 ; line 239 :
835 835 ; line 240 : IICAMK = 0; // 割り込みを許可
836 836 $DGL 0,35
837 837 00047 713BD5 clr1 MK2H.3 ;[INF] 3, 2
838 838 ; line 241 :
839 839 ; line 242 : IICE = 1;
840 840 $DGL 0,37
841 841 0004A 71705005 set1 !IICCTL01.7 ;[INF] 4, 2
842 842 ; line 243 :
843 843 ; line 244 : #ifdef _MODEL_TEG2_
844 844 ; line 245 : PM6 &= ~0x3; /* set clock pin for IICA */
845 845 ; line 246 : #else
846 846 ; line 247 : PM20 &= ~0x3; /* set clock pin for IICA */
847 847 $DGL 0,42
848 848 0004E 8F1105 mov a,!PM20 ;[INF] 3, 1
849 849 00051 5CFC and a,#0FCH ; 252 ;[INF] 2, 1
850 850 00053 9F1105 mov !PM20,a ;[INF] 3, 1
851 851 ; line 248 : #endif
852 852 ; line 249 : }
853 853 $DGL 0,44
854 854 00056 ??ef_IIC_ctr_Init:
855 855 00056 D7 ret ;[INF] 1, 6
856 856 00057 ??ee_IIC_ctr_Init:
857 857 ; line 250 :
858 858 ; line 251 :
859 859 ; line 252 :
860 860 ; line 253 : // ========================================================
861 861 ; line 254 : void IIC_ctr_Stop( void )
862 862 ; line 255 : {
863 863 00057 _IIC_ctr_Stop:
864 864 $DGL 1,118
865 865 00057 ??bf_IIC_ctr_Stop:
866 866 ; line 256 : IICE = 0; /* IICA disable */
867 867 $DGL 0,2
868 868 00057 71785005 clr1 !IICCTL01.7 ;[INF] 4, 2
869 869 ; line 257 : IICAEN = 0;
870 870 $DGL 0,3
871 871 0005B 71080105 clr1 !PER3.0 ;[INF] 4, 2
872 872 ; line 258 : }
873 873 $DGL 0,4
874 874 0005F ??ef_IIC_ctr_Stop:
875 875 0005F D7 ret ;[INF] 1, 6
876 876 00060 ??ee_IIC_ctr_Stop:
877 877
878 878 ----- @@CODEL CSEG
879 879 END
880 880
881 881
882 882 ; *** Code Information ***
883 883 ;
884 884 ; $FILE C:\78k_data\yav-mcu-basara\branches\0.10(fix)\i2c_ctr.c
885 885 ;
886 886 ; $FUNC int_iic_ctr(65)
887 887 ; void=(void)
888 888 ; CODE SIZE= 355 bytes, CLOCK_SIZE= 278 clocks, STACK_SIZE= 28 bytes
889 889 ;
890 890 ; $CALL hosu_read_end(98)
891 891 ; void=(void)
892 892 ;
893 893 ; $CALL rtc_unlock(99)
894 894 ; void=(void)
895 895 ;
896 896 ; $CALL rtc_unlock(110)
897 897 ; void=(void)
898 898 ;
899 899 ; $CALL vreg_ctr_read(138)
900 900 ; bc=(int:ax)
901 901 ;
902 902 ; $CALL vreg_ctr_after_read(179)
903 903 ; void=(int:ax)
904 904 ;
905 905 ; $CALL vreg_ctr_write(184)
906 906 ; void=(int:ax, int:[sp+4])
907 907 ;
908 908 ; $CALL vreg_ctr_read(196)
909 909 ; bc=(int:ax)
910 910 ;
911 911 ; $FUNC IIC_ctr_Init(206)
912 912 ; void=(void)
913 913 ; CODE SIZE= 87 bytes, CLOCK_SIZE= 46 clocks, STACK_SIZE= 0 bytes
914 914 ;
915 915 ; $FUNC IIC_ctr_Stop(255)
916 916 ; void=(void)
917 917 ; CODE SIZE= 9 bytes, CLOCK_SIZE= 10 clocks, STACK_SIZE= 0 bytes
918 918
919 919 ; Target chip : uPD79F0104
920 920 ; Device file : E1.00b
Segment informations:
ADRS LEN NAME
00000 00000H.0 @@BITS
00000 00030H @@CNST
00000 00002H @@R_INIT
00000 00002H @@INIT
00000 00004H @@DATA
00000 00000H @@R_INIS
00000 00000H @@INIS
00000 00000H @@DATS
00000 00000H @@CNSTL
00000 00000H @@RLINIT
00000 00000H @@INITL
00000 00000H @@DATAL
00000 00000H @@CALT
00000 00163H @@BASE
00000 00060H ROM_CODE
00000 00000H @@CODEL
Target chip : uPD79F0104
Device file : E1.00b
Assembly complete, 0 error(s) and 0 warning(s) found. ( 0)


Binary file not shown.

734
branches/0.10(X3)/i2c_mcu.c Normal file
View File

@ -0,0 +1,734 @@
/* ========================================================
I2C使
de JHL
'09 Feb -
======================================================== */
#pragma sfr
#pragma di
#pragma ei
#pragma nop
#pragma inline // memcpy()をインライン展開する
#include "incs.h"
#include "i2c_mcu.h"
// ========================================================
// レジスタのビット名
// プリフィックスbだが、一部のビット名がレジスタ名にかぶるため...
// SMR0n
#define bCKS0 ( 1 << 15 )
#define bCCS0 ( 1 << 14 )
#define bSTS0 ( 1 << 8 )
#define bSIS0 ( 1 << 6 )
#define bMD0n2 ( 1 << 2 )
#define bMD0n1 ( 1 << 1 )
#define bMD0n0 ( 1 << 0 )
#define bSMR0n_FIXEDBIT ( 1 << 5 )
// SSR0n
#define bit_TSF0 6
#define PEF0 ( 1 << 1 )
// SIR0n
#define PECT0 ( 1 << 1 )
// SCR0n
#define TXE0 ( 1 << 15 )
#define RXE0 ( 1 << 14 )
#define SLC02 4
#define DLS02 0
#define TSF0 ( 1 << 6 )
// SOn
#define TAUS_MASK 0b0000101100001011;
// DMCn
#define DRS ( 1 << 6 )
// ========================================================
static void iic_mcu_send_st( );
static void iic_mcu_send_re_st( );
static void iic_mcu_send_sp( );
static err iic_mcu_send_a_byte( u8 );
static err iic_mcu_call_slave( u8 slave );
// ========================================================
bit iic_mcu_wo_dma;
volatile bit iic_mcu_busy;
volatile bit iic_mcu_initialized;
u8 iic_send_work[4];
u8 *p_iic_send_wo_dma_dat;
u8 iic_send_wo_dma_len;
u8 iic_mcu_bus_status; // 一文字リードの時はデータを返す。
// ステータスが必要ならこっちを呼んで
void nop8()
{
}
/* ========================================================
1
======================================================== */
u8 iic_mcu_read_a_byte( u8 SLA, u8 adrs )
{
u8 dat;
if( iic_mcu_initialized == 0 )
{
#ifdef _debug_
iic_mcu_start( );
#else
while( 1 )
{
}
#endif
}
while( iic_mcu_busy )
{
NOP( );
}
iic_mcu_busy = 1;
iic_mcu_bus_status = ERR_OK;
// スタートコンディションとスレーブの呼び出し、レジスタアドレスの送信
if( iic_mcu_call_slave( SLA ) != 0 )
{
iic_mcu_bus_status = ERR_NOSLAVE;
iic_mcu_busy = 0;
return ( 0 );
}
// レジスタアドレスの送信
iic_mcu_send_a_byte( adrs ); // 終わるまで帰ってこない
// if( err != ERR_SUCCESS )
// データ受信 //
iic_mcu_send_re_st( ); // リスタートコンディション
iic_mcu_send_a_byte( SLA | 0x01 ); // 送信完了まで戻ってきません。
ST0 = 0x0004; // 受信モードに設定を変えるのでロジック停止
SCR02 = RXE0 | 1 << SLC02 | 7 << DLS02; // 受信設定
SS0 = 0x0004; // 通信待機
SOE0 = 0x0000; // 1バイト送信なので、最後のNAKを送る
IICIF10 = 0;
SIO10 = 0xFF; // ダミーデータを書くと受信開始
while( IICIF10 == 0 )
{ // 受信完了待ち
;
}
dat = SIO10;
iic_mcu_send_sp( );
IICIF10 = 0; // 後を濁さないこと
iic_mcu_busy = 0;
return ( dat );
}
/* ========================================================
0
1
2
3
======================================================== */
err iic_mcu_read( u8 slave, u8 adrs, u8 len, u8 * dest )
{
//*
// 使用中なら待つ
if( iic_mcu_initialized == 0 )
{
#ifdef _debug_
iic_mcu_start( );
#else
while( 1 )
{
}
#endif
}
while( iic_mcu_busy )
{
NOP( );
}
/*/
// 使用中なら帰る
if( iic_mcu_initialized == 0 ){
return(0x80);
}
if( iic_mcu_busy != 0 ){
return( 3 );
}
//*/
iic_mcu_busy = 1;
// スタートコンディションとスレーブの呼び出し、レジスタアドレスの送信
if( iic_mcu_call_slave( slave ) != 0 )
{
iic_mcu_busy = 0;
return ( ERR_NOSLAVE );
}
// レジスタアドレスの送信
iic_mcu_send_a_byte( adrs ); // 終わるまで帰ってこない
// if( err != ERR_SUCCESS )
// データ受信 //
iic_mcu_send_re_st( ); // リスタートコンディション
iic_mcu_send_a_byte( slave | 0x01 ); // 送信完了まで戻ってきません。
// データ受信
ST0 = 0x0004; // 受信モードに設定を変えるのでロジック停止
SCR02 = RXE0 | 1 << SLC02 | 7 << DLS02; // 受信設定
SS0 = 0x0004; // 通信待機
do
{
if( len == 1 )
{
SOE0 = 0x0000; // 最後のNAK
}
IICIF10 = 0;
SIO10 = 0xFF; // ダミーデータを書くと受信開始
while( IICIF10 == 0 )
{ // 受信完了待ち
;
}
*dest = SIO10;
dest++;
len--;
}
while( len != 0 );
iic_mcu_send_sp( );
IICIF10 = 0;
iic_mcu_busy = 0;
return ( ERR_SUCCESS );
}
/* ========================================================
 iic_mcu_write 
======================================================== */
err iic_mcu_write_a_byte( u8 SLA, u8 adrs, u8 dat )
{
if( iic_mcu_initialized == 0 )
{
#ifdef _debug_
iic_mcu_start( );
#else
while( 1 )
{
}
#endif
}
while( iic_mcu_busy )
{
NOP( );
}
iic_mcu_busy = 1;
#if 0
temp = dat;
return ( iic_mcu_write( SLA, adrs, 1, &temp ) );
}
#else
// スタートコンディションとスレーブの呼び出し...
IICMK10 = 1;
if( iic_mcu_call_slave( SLA ) != 0 )
{
iic_mcu_busy = 0;
return ( ERR_NAK );
}
iic_mcu_send_a_byte( adrs );
iic_mcu_send_a_byte( dat );
iic_mcu_send_sp( );
iic_mcu_busy = 0;
return ( ERR_SUCCESS );
#endif
}
/* ========================================================
adrs
*strから
len文字書きます
0
1
2
3
DMA1を使用します
******************************************************************************/
err iic_mcu_write( u8 slave, u8 adrs, u8 len, void * src )
{
//*
// 使用中なら待つ
if( iic_mcu_initialized == 0 )
{
#ifdef _debug_
iic_mcu_start( );
#else
while( 1 )
{
}
#endif
}
while( iic_mcu_busy )
{
NOP( );
}
/*/
// 使用中なら帰る
if( iic_mcu_initialized == 0 ){
return(0x80);
}
if( iic_mcu_busy != 0 ){
return( 3 );
}
//*/
iic_mcu_busy = 1;
// スタートコンディションとスレーブの呼び出し...
IICMK10 = 1;
IICIF10 = 0;
if( iic_mcu_call_slave( slave ) != 0 )
{
iic_mcu_busy = 0;
EI( );
return ( ERR_NAK );
}
IICIF10 = 0;
if( !iic_mcu_wo_dma )
{
// DMAを使用する通常
// レジスタアドレスを送り、データの準備
memcpy( iic_send_work, src, 4 ); //バッファとして4バイトしか用意して無いため。
// DMAセット
while( DST1 )
{;
}
DEN1 = 1;
DSA1 = ( u8 ) ( &SIO10 );
DRA1 = ( u16 ) iic_send_work;
DBC1 = len;
DMC1 = DRS | 8; // RAM -> SFR, 8bit, IRQ, IIC10
DMAIF1 = 0;
DMAMK1 = 0;
DST1 = 1;
SIO10 = adrs; // 書きっぱなし! 割り込みが発生してDMAスタート
// 残りは割り込みルーチン内で
}
else
{
// DMAを使用しない //
// レジスタアドレスの送信
SIO10 = adrs;
IICMK10 = 0;
iic_send_wo_dma_len = len;
p_iic_send_wo_dma_dat = src;
// 残りは割り込みルーチン内で
}
return ( ERR_SUCCESS );
}
/* ========================================================
DMA転送終了割り込み
IIC_mcu
DMA転送が終わっただけでI2Cの転送は終わってません
  DMA1の処理が遅延した場合
IIC10の割り込みの準備ができずに
 DMA仕様の差異は
======================================================== */
__interrupt void int_dma1( )
{
u16 i = 0;
EI();
DMAMK1 = 1;
DEN1 = 0;
while( ( SSR02L & TSF0 ) != 0 )
{
if( ++i == 0 ) // タイムアウト?
{
break;
}
}
// iic_mcu_send_sp(); // ISR中で外の関数を呼ぶのは都合が悪いので展開
{
ST0 = 0x0004;
SOE0 = 0; // 受信の時はもっと前に「も」設定してる。(NACK出力)
SO0 = 0x0000 | TAUS_MASK; // SCL
nop8();
/*
NOP( );
NOP( );
NOP( );
NOP( );
#ifdef _OVERCLOCK_
NOP( );
NOP( );
NOP( );
NOP( );
NOP( );
#endif
*/
SO0 = 0x0400 | TAUS_MASK; // SCL
nop8();
/*
NOP( );
NOP( );
NOP( );
NOP( );
#ifdef _OVERCLOCK_
NOP( );
NOP( );
NOP( );
NOP( );
NOP( );
#endif
*/
SO0 = 0x0404 | TAUS_MASK;
}
IICMK10 = 1;
iic_mcu_busy = 0;
}
/* ========================================================
IIC MCUのバイト送出完了割り込み
DMA使用時は使用されません
 DMAの割り込みにすぐ飛ばない場合
 IIC割り込みのセットが間に合わず困ることがあります
======================================================== */
__interrupt void int_iic10( )
{
EI();
if( iic_send_wo_dma_len != 0 )
{
SIO10 = *p_iic_send_wo_dma_dat;
p_iic_send_wo_dma_dat++;
iic_send_wo_dma_len--;
return;
}
// 最後のバイト送信完了
IICMK10 = 1;
// iic_mcu_send_sp(); // ISR中で外の関数を呼ぶのは都合が悪いので展開
{
ST0 = 0x0004;
SOE0 = 0; // 受信の時はもっと前に「も」設定してる。(NACK出力)
SO0 = 0x0000 | TAUS_MASK; // SCL
nop8();
/*
NOP( );
NOP( );
NOP( );
NOP( );
#ifdef _OVERCLOCK_
NOP( );
NOP( );
NOP( );
NOP( );
NOP( );
#endif
*/
SO0 = 0x0400 | TAUS_MASK; // SCL
nop8();
/*
NOP( );
NOP( );
NOP( );
NOP( );
#ifdef _OVERCLOCK_
NOP( );
NOP( );
NOP( );
NOP( );
NOP( );
#endif
*/
SO0 = 0x0404 | TAUS_MASK;
}
iic_mcu_wo_dma = 0;
iic_mcu_busy = 0;
}
/* ========================================================
 ACKの確認
ACK                  0
 NACK   1
======================================================== */
static err iic_mcu_call_slave( u8 slave )
{
iic_mcu_send_st( );
// SIR02 = SSR02; // NAKエラーのフラグクリア
if( iic_mcu_send_a_byte( slave ) != ERR_SUCCESS )
{
iic_mcu_send_sp( );
return ( ERR_NAK ); // 指定のスレーブがいない / busy
}
return ( ERR_SUCCESS );
}
/* ========================================================
======================================================== */
static err iic_mcu_send_a_byte( u8 dat )
{
IICMK10 = 1;
IICIF10 = 0;
SIO10 = dat;
while( IICIF10 == 0 )
{
NOP( );
} // 通信中
if( SSR02 != 0 )
{
SIR02 = SSR02;
return ( ERR_NAK );
}
return ( ERR_SUCCESS );
}
/* ========================================================
======================================================== */
static void iic_mcu_send_st( )
{
SO0 &= ~0x0004; // SDA
nop8();
/*
NOP( );
NOP( );
NOP( );
NOP( );
#ifdef _OVERCLOCK_
NOP( );
NOP( );
NOP( );
NOP( );
NOP( );
#endif
*/
SO0 &= ~0x0400; // SCL
SOE0 = 0x0004; // ハード制御へ
SCR02 = TXE0 | 1 << SLC02 | 7 << DLS02; // 送信許可、データは8ビット単位
SS0 = 0x0004; // 通信待機
}
/* ========================================================
======================================================== */
static void iic_mcu_send_re_st( )
{
ST0 |= 0x0004;
SO0 |= 0x0400 | TAUS_MASK; // ( SDA = H ), SCL -> H
nop8();
/*
NOP( );
NOP( );
NOP( );
NOP( );
#ifdef _OVERCLOCK_
NOP( );
NOP( );
NOP( );
NOP( );
NOP( );
#endif
*/
SOE0 &= ~0x0004; // ( SCL = H ), SDA -> L
nop8();
/*
NOP( );
NOP( );
NOP( );
NOP( );
#ifdef _OVERCLOCK_
NOP( );
NOP( );
NOP( );
NOP( );
NOP( );
#endif
*/
iic_mcu_send_st( );
}
/* ========================================================
======================================================== */
static void iic_mcu_send_sp( )
{
ST0 = 0x0004;
SOE0 = 0; // 受信の時はもっと前に「も」設定してる。(NACK出力)
SO0 = 0x0000 | TAUS_MASK; // SCL
nop8();
/*
NOP( );
NOP( );
NOP( );
NOP( );
#ifdef _OVERCLOCK_
NOP( );
NOP( );
NOP( );
NOP( );
NOP( );
#endif
*/
SO0 = 0x0400 | TAUS_MASK; // SCL
nop8();
/*
NOP( );
NOP( );
NOP( );
NOP( );
#ifdef _OVERCLOCK_
NOP( );
NOP( );
NOP( );
NOP( );
NOP( );
#endif
*/
SO0 = 0x0404 | TAUS_MASK;
}
/* ========================================================
======================================================== */
void iic_mcu_start( )
{
DST1 = 0;
NOP( ); // 2clkもしくは、DSTn==0をポーリング
NOP( );
DEN1 = 0;
I2C_PU_on();
SAU0EN = 1;
nop8();
/*
NOP( );
NOP( );
NOP( );
NOP( );
#ifdef _OVERCLOCK_
NOP( );
NOP( );
NOP( );
NOP( );
NOP( );
#endif
*/
SPS0 = 0x0000; // シリアルユニットのクロック0。(8M/2)/1
SMR02 = bSMR0n_FIXEDBIT | bMD0n2; // 簡易I2Cに設定
#ifdef _OVERCLOCK_
SDR02 = 12 << 9; // ボーレート設定 (8M/2)/1/(x+1)/2
#else
SDR02 = 5 << 9; // ボーレート設定 (8M/2)/1/(x+1)/2
#endif
SO0 = 0x0404 | TAUS_MASK; // 最初はHH
iic_mcu_busy = 0;
iic_mcu_wo_dma = 0;
// バスのリセット
IICIF10 = 0;
IICMK10 = 1;
iic_mcu_send_st();
SIO10 = 0xFF;
while( IICIF10 == 0 ){} // 通信中
iic_mcu_send_sp();
SIR02 = SSR02;
iic_mcu_initialized = 1;
}
/* ========================================================
使
======================================================== */
void iic_mcu_stop( )
{
while( iic_mcu_busy )
{;
} // DMA動作中はもう少し待つ
iic_mcu_send_re_st( ); // SCL,SDAをLLにする
I2C_PU_off();
SAU0EN = 0;
iic_mcu_initialized = 0;
}

View File

@ -0,0 +1,34 @@
#ifndef __ic2_mcu__
#define __ic2_mcu__
// ========================================================
#define ERR_OK 0
#define ERR_NAK 1
#define ERR_NOSLAVE 2
// ========================================================
extern volatile bit iic_mcu_busy;
extern bit iic_mcu_wo_dma;
extern u8 iic_mcu_bus_status;
// ========================================================
err iic_mcu_read( u8 SLA, u8 adrs, u8 len, u8 * dest );
u8 iic_mcu_read_a_byte( u8 SLA, u8 adrs );
err iic_mcu_write( u8 SLA, u8 adrs, u8 len, void * src );
err iic_mcu_write_a_byte( u8 SLA, u8 adrs, u8 dat );
// ↓その通信が完了したら解除されます。
#define iic_mcu_set_wo_dma() { while( iic_mcu_busy ){;} iic_mcu_wo_dma = 1; }
void iic_mcu_start( );
void iic_mcu_stop( );
#endif

File diff suppressed because it is too large Load Diff

Binary file not shown.

206
branches/0.10(X3)/i2c_twl.c Normal file
View File

@ -0,0 +1,206 @@
#pragma sfr /* 特殊機能レジスタ使用 */
/*============================================================================*/
#include "incs.h"
#include "i2c_twl_defs.h"
extern u8 vreg_twl[];
#ifdef _MCU_BSR_
//#ifdef _MODEL_TS0_ || _MODEL_WM0_
// ワーキングモデルはI2Cが逆
#define ACKD ACKD0
#define ACKE ACKE0
#define COI COI0
#define IICAEN IICA0EN
#define IICRSV IICRSV0
#define IICA IICA0
#define IICAIF IICAIF0
#define IICAMK IICAMK0
#define IICAPR0 IICAPR00
#define IICAPR1 IICAPR10
#define IICCTL0 IICCTL00
#define IICE IICE0
#define IICF IICF0
#define IICS IICS0
#define IICWH IICWH0
#define IICWL IICWL0
#define LREL LREL0
#define SPD SPD0
#define SPIE SPIE0
#define STCEN STCEN0
#define STD STD0
#define SVA SVA0
#define WREL WREL0
#define WTIM WTIM0
#define SMC SMC0
#endif
#ifndef _MCU_BSR_
// ke3の時はダミー関数
void IIC_twl_Stop( void )
{
}
void IIC_twl_Init( void )
{
}
#else
/*============================================================================*/
u8 vreg_adrs;
u8 pre_dat;
u16 tot;
// 注 ↓はマクロなので、returnはメインループに戻ります。
#define wait_next { \
tot = 0; \
while( IICAIF != 1 ){ \
if( SPD ){ \
LREL = 1; \
return; \
} \
tot++; \
if( tot == 0 ){ \
LREL = 1; \
return; \
} \
} \
}
__interrupt void int_iic_twl( )
{
u8 temp;
u16 tot;
// WDT_Restart();
// フラグ1回目 スレーブアドレス,R/W
/* COI != 1 なら、割り込みはいらない
if( COI != 1 ){ // 被呼び出し?
LREL = 1; // 呼ばれたのは他のID
return;
}else{
ACKE0 = 1; // 自動でackを返すようにする
WREL = 1; // ウェイト解除して次のバイトを待つ
}
*/
WREL = 1; // ウェイト解除して次のバイトを待つ
wait_next; // 1バイト受信完了を待つ
// 2回目 R/W レジスタアドレス
temp = IICA;
IICAIF = 0;
WREL = 1;
vreg_adrs = adrs_table_twl_ext2int( temp );
// 3回目
// スタートコンディションか、データ受信完了フラグ待ち
while( 1 )
{
u8 my_iics = IICS;
if( my_iics & 0x01 ) // SPD
{ // 強制終了
LREL = 1;
return;
}
else if( my_iics & 0x02 ) // ( STD && !SPD )
{
// 送信 // (スタートコンディション検出)
pre_dat = vreg_twl_read( vreg_adrs ); // mcu内部アドレスを渡す。一バイト目の準備 IICBに書き込むとウェイト解除
// 自局をRで呼ばれるのを待つ
wait_next;
IICAIF = 0;
if( COI != 1 )
{ // 被呼び出し?
LREL = 1; // 呼ばれたのは他のIDあれ
return;
}
IICA = pre_dat; // データを送る。ウェイトも解除される。
wait_next;
// 4回目。(送信データ後の、ACK/NACK後) どうしても発生してしまう。
IICAIF = 0; // おしまい
LREL = 1;
return;
}
else if( IICAIF && (( my_iics & 0x03 ) == 0 )) // !STD && !SPD )
{
// 受信 //
IICAIF = 0;
temp = IICA;
WREL = 1;
// 通常アクセス(ライト) //
LREL = 1; // スタートコンディション待ちへ(連続書き込み未対応のため)
vreg_twl_write( vreg_adrs, temp );
return; // 受信おしまい //
}
}
}
/*****************************************************/
void IIC_twl_Init( void )
{
IICAEN = 1;
IICE = 0; /* IICA disable */
IICAMK = 1; /* INTIICA disable */
IICAIF = 0; /* clear INTIICA interrupt flag */
IICAPR0 = 0; /* set INTIICA high priority */
IICAPR1 = 0; /* set INTIICA high priority */
P20 &= ~0x3;
SVA = IIC_T_SLAVEADDRESS;
IICF = 0x01;
STCEN = 1; // リスタートの許可
IICRSV = 1; // 通信予約をさせない:スレーブに徹する
SPIE = 0; // ストップコンディションでの割り込みを禁止
WTIM = 1; // 自動でACKを返した後clkをLに固定する
ACKE = 1; // ダメCPUは無視して次の通信をはじめるかもしれないんで早くclkを開放しないといけない
IICWH = 5;
IICWL = 10; // L期間の長さ
SMC = 1;
IICAMK = 0; // 割り込みを許可
IICE = 1;
PM20 &= ~0x3; /* set clock pin for IICA */
LREL = 1;
}
//****************************************************************************
void IIC_twl_Stop( void )
{
IICE = 0; /* IICA disable */
IICAEN = 0;
}
#endif

View File

@ -0,0 +1,7 @@
#ifndef _iic_twl_
#define _iic_twl_
void IIC_twl_Init( void );
void IIC_twl_Stop( void );
#endif

View File

@ -0,0 +1,797 @@
78K0R Assembler W1.31 Date:13 Jun 2010 Page: 1
Command: -c9F0104 -yC:\Program Files\NEC Electronics Tools\DEV -_msgoff inter_asm\i2c_twl.asm
Para-file:
In-file: inter_asm\i2c_twl.asm
Obj-file: i2c_twl.rel
Prn-file: i2c_twl.prn
Assemble list
ALNO STNO ADRS OBJECT M I SOURCE STATEMENT
1 1 ; 78K0R C Compiler V2.10 Assembler Source Date:13 Jun 2010 Time:19:31:24
2 2
3 3 ; Command : -c9F0104 -yC:\Program Files\NEC Electronics Tools\DEV -_msgoff -i
4 4 ; renge -iC:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\
5 5 ; V1.20\inc78k0r -ms -qvjl3wt -sainter_asm -zp -no i2c_twl.c
6 6 ; In-file : i2c_twl.c
7 7 ; Asm-file : inter_asm\i2c_twl.asm
8 8 ; Para-file :
9 9
10 10 $PROCESSOR(9F0104)
11 11 $DEBUG
12 12 $NODEBUGA
13 13 $KANJICODE SJIS
14 14 $TOL_INF 03FH, 0210H, 00H, 00H, 00H, 00H, 00H
15 15
16 16 $DGS FIL_NAM, .file, 06FH, 0FFFEH, 03FH, 067H, 01H, 00H
17 17 $DGS AUX_FIL, i2c_twl.c
18 18 $DGS MOD_NAM, i2c_twl, 00H, 0FFFEH, 00H, 077H, 00H, 00H
19 19 $DGS SEC_NAM, @@BITS, U, U, 00H, 078H, 00H, 00H
20 20 $DGS SEC_NAM, @@CNST, U, U, 00H, 078H, 00H, 00H
21 21 $DGS SEC_NAM, @@R_INIT, U, U, 00H, 078H, 00H, 00H
22 22 $DGS SEC_NAM, @@INIT, U, U, 00H, 078H, 00H, 00H
23 23 $DGS SEC_NAM, @@DATA, U, U, 00H, 078H, 00H, 00H
24 24 $DGS SEC_NAM, @@R_INIS, U, U, 00H, 078H, 00H, 00H
25 25 $DGS SEC_NAM, @@INIS, U, U, 00H, 078H, 00H, 00H
26 26 $DGS SEC_NAM, @@DATS, U, U, 00H, 078H, 00H, 00H
27 27 $DGS SEC_NAM, @@CNSTL, U, U, 00H, 078H, 00H, 00H
28 28 $DGS SEC_NAM, @@RLINIT, U, U, 00H, 078H, 00H, 00H
29 29 $DGS SEC_NAM, @@INITL, U, U, 00H, 078H, 00H, 00H
30 30 $DGS SEC_NAM, @@DATAL, U, U, 00H, 078H, 00H, 00H
31 31 $DGS SEC_NAM, @@CALT, U, U, 00H, 078H, 00H, 00H
32 32 $DGS SEC_NAM, ROM_CODE, U, U, 00H, 078H, 00H, 00H
33 33 $DGS SEC_NAM, @@CODEL, U, U, 00H, 078H, 00H, 00H
34 34 $DGS SEC_NAM, @@BASE, U, U, 00H, 078H, 00H, 00H
35 35 $DGS STA_SYM, _lpf_coeff, U, U, 05002H, 03H, 01H, 03H
36 36 $DGS AUX_STR, 00H, 00H, 02FH, 02FH, 00H, 00H, 00H, 00H
37 37 $DGS GLV_SYM, _int_iic_twl, U, U, 0E001H, 026H, 01H, 02H
38 38 $DGS AUX_FUN, 00H, U, U, 063H, 00H, 00H
39 39 $DGS BEG_FUN, ??bf_int_iic_twl, U, U, 00H, 065H, 01H, 00H
40 40 $DGS AUX_BEG, 052H, 01CH, 01BH
41 41 $DGS AUT_VAR, _temp, 05H, 0FFFFH, 0CH, 01H, 00H, 00H
42 42 $DGS AUT_VAR, _tot, 02H, 0FFFFH, 0DH, 01H, 00H, 00H
43 43 $DGS BEG_BLK, ??bb00_int_iic_twl, U, U, 00H, 064H, 01H, 00H
44 44 $DGS AUX_BEG, 011H, 00H, 01DH
45 45 $DGS BEG_BLK, ??bb01_int_iic_twl, U, U, 00H, 064H, 01H, 00H
46 46 $DGS AUX_BEG, 011H, 00H, 01FH
47 47 $DGS BEG_BLK, ??bb02_int_iic_twl, U, U, 00H, 064H, 01H, 00H
48 48 $DGS AUX_BEG, 011H, 00H, 023H
49 49 $DGS END_BLK, ??eb02_int_iic_twl, U, U, 00H, 064H, 01H, 00H
50 50 $DGS AUX_END, 011H
51 51 $DGS BEG_BLK, ??bb03_int_iic_twl, U, U, 00H, 064H, 01H, 00H
52 52 $DGS AUX_BEG, 011H, 00H, 02BH
53 53 $DGS END_BLK, ??eb03_int_iic_twl, U, U, 00H, 064H, 01H, 00H
54 54 $DGS AUX_END, 011H
55 55 $DGS END_BLK, ??eb01_int_iic_twl, U, U, 00H, 064H, 01H, 00H
56 56 $DGS AUX_END, 011H
57 57 $DGS END_BLK, ??eb00_int_iic_twl, U, U, 00H, 064H, 01H, 00H
58 58 $DGS AUX_END, 011H
59 59 $DGS BEG_BLK, ??bb04_int_iic_twl, U, U, 00H, 064H, 01H, 00H
60 60 $DGS AUX_BEG, 01EH, 00H, 02FH
61 61 $DGS AUT_VAR, _my_iics, 01H, 0FFFFH, 0CH, 01H, 01H, 00H
62 62 $DGS AUX_STR, 00H, 01FH, 01H, 00H, 00H, 00H, 00H, 00H
63 63 $DGS BEG_BLK, ??bb05_int_iic_twl, U, U, 00H, 064H, 01H, 00H
64 64 $DGS AUX_BEG, 022H, 00H, 033H
65 65 $DGS END_BLK, ??eb05_int_iic_twl, U, U, 00H, 064H, 01H, 00H
66 66 $DGS AUX_END, 025H
67 67 $DGS BEG_BLK, ??bb06_int_iic_twl, U, U, 00H, 064H, 01H, 00H
68 68 $DGS AUX_BEG, 027H, 00H, 035H
69 69 $DGS BEG_BLK, ??bb07_int_iic_twl, U, U, 00H, 064H, 01H, 00H
70 70 $DGS AUX_BEG, 02CH, 00H, 037H
71 71 $DGS BEG_BLK, ??bb08_int_iic_twl, U, U, 00H, 064H, 01H, 00H
72 72 $DGS AUX_BEG, 02CH, 00H, 039H
73 73 $DGS BEG_BLK, ??bb09_int_iic_twl, U, U, 00H, 064H, 01H, 00H
74 74 $DGS AUX_BEG, 02CH, 00H, 03DH
75 75 $DGS END_BLK, ??eb09_int_iic_twl, U, U, 00H, 064H, 01H, 00H
76 76 $DGS AUX_END, 02CH
77 77 $DGS BEG_BLK, ??bb0A_int_iic_twl, U, U, 00H, 064H, 01H, 00H
78 78 $DGS AUX_BEG, 02CH, 00H, 045H
79 79 $DGS END_BLK, ??eb0A_int_iic_twl, U, U, 00H, 064H, 01H, 00H
80 80 $DGS AUX_END, 02CH
81 81 $DGS END_BLK, ??eb08_int_iic_twl, U, U, 00H, 064H, 01H, 00H
82 82 $DGS AUX_END, 02CH
83 83 $DGS END_BLK, ??eb07_int_iic_twl, U, U, 00H, 064H, 01H, 00H
84 84 $DGS AUX_END, 02CH
85 85 $DGS BEG_BLK, ??bb0B_int_iic_twl, U, U, 00H, 064H, 01H, 00H
86 86 $DGS AUX_BEG, 02FH, 00H, 049H
87 87 $DGS END_BLK, ??eb0B_int_iic_twl, U, U, 00H, 064H, 01H, 00H
88 88 $DGS AUX_END, 032H
89 89 $DGS BEG_BLK, ??bb0C_int_iic_twl, U, U, 00H, 064H, 01H, 00H
90 90 $DGS AUX_BEG, 035H, 00H, 04BH
91 91 $DGS BEG_BLK, ??bb0D_int_iic_twl, U, U, 00H, 064H, 01H, 00H
92 92 $DGS AUX_BEG, 035H, 00H, 04DH
93 93 $DGS BEG_BLK, ??bb0E_int_iic_twl, U, U, 00H, 064H, 01H, 00H
94 94 $DGS AUX_BEG, 035H, 00H, 051H
95 95 $DGS END_BLK, ??eb0E_int_iic_twl, U, U, 00H, 064H, 01H, 00H
96 96 $DGS AUX_END, 035H
97 97 $DGS BEG_BLK, ??bb0F_int_iic_twl, U, U, 00H, 064H, 01H, 00H
98 98 $DGS AUX_BEG, 035H, 00H, 05BH
99 99 $DGS END_BLK, ??eb0F_int_iic_twl, U, U, 00H, 064H, 01H, 00H
100 100 $DGS AUX_END, 035H
101 101 $DGS END_BLK, ??eb0D_int_iic_twl, U, U, 00H, 064H, 01H, 00H
102 102 $DGS AUX_END, 035H
103 103 $DGS END_BLK, ??eb0C_int_iic_twl, U, U, 00H, 064H, 01H, 00H
104 104 $DGS AUX_END, 035H
105 105 $DGS END_BLK, ??eb06_int_iic_twl, U, U, 00H, 064H, 01H, 00H
106 106 $DGS AUX_END, 03AH
107 107 $DGS BEG_BLK, ??bb10_int_iic_twl, U, U, 00H, 064H, 01H, 00H
108 108 $DGS AUX_BEG, 03CH, 00H, 00H
109 109 $DGS END_BLK, ??eb10_int_iic_twl, U, U, 00H, 064H, 01H, 00H
110 110 $DGS AUX_END, 046H
111 111 $DGS END_BLK, ??eb04_int_iic_twl, U, U, 00H, 064H, 01H, 00H
112 112 $DGS AUX_END, 047H
113 113 $DGS END_FUN, ??ef_int_iic_twl, U, U, 00H, 065H, 01H, 00H
114 114 $DGS AUX_END, 048H
115 115 $DGS GLV_SYM, _IIC_twl_Init, U, U, 01H, 026H, 01H, 02H
116 116 $DGS AUX_FUN, 00H, U, U, 069H, 00H, 00H
117 117 $DGS BEG_FUN, ??bf_IIC_twl_Init, U, U, 00H, 065H, 01H, 00H
118 118 $DGS AUX_BEG, 09FH, 00H, 069H
119 119 $DGS END_FUN, ??ef_IIC_twl_Init, U, U, 00H, 065H, 01H, 00H
120 120 $DGS AUX_END, 024H
121 121 $DGS GLV_SYM, _IIC_twl_Stop, U, U, 01H, 026H, 01H, 02H
122 122 $DGS AUX_FUN, 00H, U, U, 06FH, 00H, 00H
123 123 $DGS BEG_FUN, ??bf_IIC_twl_Stop, U, U, 00H, 065H, 01H, 00H
124 124 $DGS AUX_BEG, 0C8H, 00H, 06FH
125 125 $DGS END_FUN, ??ef_IIC_twl_Stop, U, U, 00H, 065H, 01H, 00H
126 126 $DGS AUX_END, 04H
127 127 $DGS GLV_SYM, _vreg_adrs, U, U, 0CH, 026H, 00H, 00H
128 128 $DGS GLV_SYM, _pre_dat, U, U, 0CH, 026H, 00H, 00H
129 129 $DGS GLV_SYM, _tot, U, U, 0DH, 026H, 00H, 00H
130 130 $DGS GLV_SYM, _@SEGAX, U, U, 00H, 02H, 00H, 00H
131 131 $DGS GLV_SYM, _adrs_table_twl_ext2int, U, U, 0CH, 02H, 01H, 02H
132 132 $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
133 133 $DGS GLV_SYM, _vreg_twl_read, U, U, 0CH, 02H, 01H, 02H
134 134 $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
135 135 $DGS GLV_SYM, _vreg_twl_write, U, U, 01H, 02H, 01H, 02H
136 136 $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
137 137 $DGS GLV_SYM, _@SEGDE, U, U, 00H, 02H, 00H, 00H
138 138 $DGS GLV_SYM, _@RTARG0, U, U, 00H, 02H, 00H, 00H
139 139
140 140 EXTRN _@SEGAX
141 141 EXTRN _@SEGDE
142 142 EXTRN _@RTARG0
143 143 EXTRN _adrs_table_twl_ext2int
144 144 EXTRN _vreg_twl_read
145 145 EXTRN _vreg_twl_write
146 146 PUBLIC _vreg_adrs
147 147 PUBLIC _pre_dat
148 148 PUBLIC _tot
149 149 PUBLIC _int_iic_twl
150 150 PUBLIC _IIC_twl_Init
151 151 PUBLIC _IIC_twl_Stop
152 152
153 153 ----- @@BITS BSEG
154 154
155 155 ----- @@CNST CSEG MIRRORP
156 156 00000 01 _lpf_coeff: DB 01H ; 1
157 157 00001 02 DB 02H ; 2
158 158 00002 02 DB 02H ; 2
159 159 00003 03 DB 03H ; 3
160 160 00004 03 DB 03H ; 3
161 161 00005 02 DB 02H ; 2
162 162 00006 00 DB 00H ; 0
163 163 00007 FE DB 0FEH ; 254
164 164 00008 FB DB 0FBH ; 251
165 165 00009 F7 DB 0F7H ; 247
166 166 0000A F3 DB 0F3H ; 243
167 167 0000B F0 DB 0F0H ; 240
168 168 0000C F0 DB 0F0H ; 240
169 169 0000D F3 DB 0F3H ; 243
170 170 0000E FA DB 0FAH ; 250
171 171 0000F 04 DB 04H ; 4
172 172 00010 12 DB 012H ; 18
173 173 00011 25 DB 025H ; 37
174 174 00012 38 DB 038H ; 56
175 175 00013 4D DB 04DH ; 77
176 176 00014 5F DB 05FH ; 95
177 177 00015 6E DB 06EH ; 110
178 178 00016 77 DB 077H ; 119
179 179 00017 7A DB 07AH ; 122
180 180 00018 77 DB 077H ; 119
181 181 00019 6E DB 06EH ; 110
182 182 0001A 5F DB 05FH ; 95
183 183 0001B 4D DB 04DH ; 77
184 184 0001C 38 DB 038H ; 56
185 185 0001D 25 DB 025H ; 37
186 186 0001E 12 DB 012H ; 18
187 187 0001F 04 DB 04H ; 4
188 188 00020 FA DB 0FAH ; 250
189 189 00021 F3 DB 0F3H ; 243
190 190 00022 F0 DB 0F0H ; 240
191 191 00023 F0 DB 0F0H ; 240
192 192 00024 F3 DB 0F3H ; 243
193 193 00025 F7 DB 0F7H ; 247
194 194 00026 FB DB 0FBH ; 251
195 195 00027 FE DB 0FEH ; 254
196 196 00028 00 DB 00H ; 0
197 197 00029 02 DB 02H ; 2
198 198 0002A 03 DB 03H ; 3
199 199 0002B 03 DB 03H ; 3
200 200 0002C 02 DB 02H ; 2
201 201 0002D 02 DB 02H ; 2
202 202 0002E 01 DB 01H ; 1
203 203 0002F 00 DB (1)
204 204
205 205 ----- @@R_INIT CSEG UNIT64KP
206 206
207 207 ----- @@INIT DSEG BASEP
208 208
209 209 ----- @@DATA DSEG BASEP
210 210 00000 _vreg_adrs: DS (1)
211 211 00001 _pre_dat: DS (1)
212 212 00002 _tot: DS (2)
213 213
214 214 ----- @@R_INIS CSEG UNIT64KP
215 215
216 216 ----- @@INIS DSEG SADDRP
217 217
218 218 ----- @@DATS DSEG SADDRP
219 219
220 220 ----- @@CNSTL CSEG PAGE64KP
221 221
222 222 ----- @@RLINIT CSEG UNIT64KP
223 223
224 224 ----- @@INITL DSEG UNIT64KP
225 225
226 226 ----- @@DATAL DSEG UNIT64KP
227 227
228 228 ----- @@CALT CSEG CALLT0
229 229
230 230 ; line 1 : #pragma sfr /* 特殊機能レジスタ使用 */
231 231 ; line 2 :
232 232 ; line 3 :
233 233 ; line 4 :
234 234 ; line 5 : /*==============================================================
235 235 ; ==============*/
236 236 ; line 6 : #include "incs.h"
237 237 ; line 7 : #include "i2c_twl_defs.h"
238 238 ; line 8 :
239 239 ; line 9 :
240 240 ; line 10 : extern u8 vreg_twl[];
241 241 ; line 11 :
242 242 ; line 12 : #ifdef _MCU_BSR_
243 243 ; line 13 : //#ifdef _MODEL_TS0_ || _MODEL_WM0_
244 244 ; line 14 :
245 245 ; line 15 : // ワーキングモデルはI2Cが逆
246 246 ; line 16 : #define ACKD ACKD0
247 247 ; line 17 : #define ACKE ACKE0
248 248 ; line 18 : #define COI COI0
249 249 ; line 19 : #define IICAEN IICA0EN
250 250 ; line 20 : #define IICRSV IICRSV0
251 251 ; line 21 : #define IICA IICA0
252 252 ; line 22 : #define IICAIF IICAIF0
253 253 ; line 23 : #define IICAMK IICAMK0
254 254 ; line 24 : #define IICAPR0 IICAPR00
255 255 ; line 25 : #define IICAPR1 IICAPR10
256 256 ; line 26 : #define IICCTL0 IICCTL00
257 257 ; line 27 : #define IICE IICE0
258 258 ; line 28 : #define IICF IICF0
259 259 ; line 29 : #define IICS IICS0
260 260 ; line 30 : #define IICWH IICWH0
261 261 ; line 31 : #define IICWL IICWL0
262 262 ; line 32 : #define LREL LREL0
263 263 ; line 33 : #define SPD SPD0
264 264 ; line 34 : #define SPIE SPIE0
265 265 ; line 35 : #define STCEN STCEN0
266 266 ; line 36 : #define STD STD0
267 267 ; line 37 : #define SVA SVA0
268 268 ; line 38 : #define WREL WREL0
269 269 ; line 39 : #define WTIM WTIM0
270 270 ; line 40 : #define SMC SMC0
271 271 ; line 41 :
272 272 ; line 42 : #endif
273 273 ; line 43 :
274 274 ; line 44 : #ifndef _MCU_BSR_
275 275 ; line 45 :
276 276 ; line 46 : // ke3の時はダミー関数
277 277 ; line 47 : void IIC_twl_Stop( void )
278 278 ; line 48 : {
279 279 ; line 49 : }
280 280 ; line 50 : void IIC_twl_Init( void )
281 281 ; line 51 : {
282 282 ; line 52 : }
283 283 ; line 53 : #else
284 284 ; line 54 :
285 285 ; line 55 :
286 286 ; line 56 : /*==============================================================
287 287 ; ==============*/
288 288 ; line 57 : u8 vreg_adrs;
289 289 ; line 58 : u8 pre_dat;
290 290 ; line 59 :
291 291 ; line 60 :
292 292 ; line 61 : u16 tot;
293 293 ; line 62 :
294 294 ; line 63 :
295 295 ; line 64 : // 注 ↓はマクロなので、returnはメインループに戻ります。
296 296 ; line 65 : #define wait_next { \
297 297 ; line 66 : tot = 0; \
298 298 ; line 67 : while( IICAIF != 1 ){ \
299 299 ; line 68 : if( SPD ){ \
300 300 ; line 69 : LREL = 1; \
301 301 ; line 70 : return; \
302 302 ; line 71 : } \
303 303 ; line 72 : tot++; \
304 304 ; line 73 : if( tot == 0 ){ \
305 305 ; line 74 : LREL = 1; \
306 306 ; line 75 : return; \
307 307 ; line 76 : } \
308 308 ; line 77 : } \
309 309 ; line 78 : }
310 310 ; line 79 :
311 311 ; line 80 :
312 312 ; line 81 : __interrupt void int_iic_twl( )
313 313 ; line 82 : {
314 314
315 315 ----- @@BASE CSEG BASE
316 316 00000 _int_iic_twl:
317 317 $DGL 1,21
318 318 00000 C1 push ax ;[INF] 1, 1
319 319 00001 C3 push bc ;[INF] 1, 1
320 320 00002 C5 push de ;[INF] 1, 1
321 321 00003 C7 push hl ;[INF] 1, 1
322 322 00004 520C mov c,#0CH ;[INF] 2, 1
323 323 00006 92 dec c ;[INF] 1, 1
324 324 00007 92 dec c ;[INF] 1, 1
325 325 00008 R690000 movw ax,_@SEGAX[c] ;[INF] 3, 1
326 326 0000B C1 push ax ;[INF] 1, 1
327 327 0000C DFF8 bnz $$-6 ;[INF] 2, 4
328 328 0000E 8EFD mov a,ES ;[INF] 2, 1
329 329 00010 70 mov x,a ;[INF] 1, 1
330 330 00011 8EFC mov a,CS ;[INF] 2, 1
331 331 00013 C1 push ax ;[INF] 1, 1
332 332 00014 2006 subw sp,#06H ;[INF] 2, 1
333 333 00016 FBF8FF movw hl,sp ;[INF] 3, 1
334 334 00019 ??bf_int_iic_twl:
335 335 ; line 83 : u8 temp;
336 336 ; line 84 : u16 tot;
337 337 ; line 85 :
338 338 ; line 86 : // WDT_Restart();
339 339 ; line 87 : // フラグ1回目 スレーブアドレス,R/W
340 340 ; line 88 : /* COI != 1 なら、割り込みはいらない
341 341 ; line 89 : if( COI != 1 ){ // 被呼び出し?
342 342 ; line 90 : LREL = 1; // 呼ばれたのは他のID
343 343 ; line 91 : return;
344 344 ; line 92 : }else{
345 345 ; line 93 : ACKE0 = 1; // 自動でackを返すようにする
346 346 ; line 94 : WREL = 1; // ウェイト解除して次のバイトを待つ
347 347 ; line 95 : }
348 348 ; line 96 : */
349 349 ; line 97 : WREL = 1; // ウェイト解除して次のバイトを待
350 350 ; つ
351 351 $DGL 0,16
352 352 00019 71503002 set1 !IICCTL00.5 ;[INF] 4, 2
353 353 ; line 98 : wait_next; // 1バイト受信完了を待つ
354 354 $DGL 0,17
355 355 0001D ??bb00_int_iic_twl:
356 356 0001D F6 clrw ax ;[INF] 1, 1
357 357 0001E BC02 movw [hl+2],ax ; tot ;[INF] 2, 1
358 358 00020 ?L0003:
359 359 00020 31B2E21B bt IF1L.3,$?L0004 ;[INF] 4, 5
360 360 00024 ??bb01_int_iic_twl:
361 361 00024 31845107 bf IICS0.0,$?L0005 ;[INF] 4, 5
362 362 00028 ??bb02_int_iic_twl:
363 363 00028 71603002 set1 !IICCTL00.6 ;[INF] 4, 2
364 364 0002C REDFD00 br !?L0010 ;[INF] 3, 3
365 365 0002F ??eb02_int_iic_twl:
366 366 0002F ?L0005:
367 367 0002F 617902 incw [hl+2] ; tot ;[INF] 3, 2
368 368 00032 F6 clrw ax ;[INF] 1, 1
369 369 00033 614902 cmpw ax,[hl+2] ; tot ;[INF] 3, 1
370 370 00036 DFE8 bnz $?L0003 ;[INF] 2, 4
371 371 00038 ??bb03_int_iic_twl:
372 372 00038 71603002 set1 !IICCTL00.6 ;[INF] 4, 2
373 373 0003C REDFD00 br !?L0010 ;[INF] 3, 3
374 374 0003F ??eb03_int_iic_twl:
375 375 0003F ??eb01_int_iic_twl:
376 376 0003F ?L0004:
377 377 0003F ??eb00_int_iic_twl:
378 378 ; line 99 :
379 379 ; line 100 : // 2回目 R/W レジスタアドレス
380 380 ; line 101 : temp = IICA;
381 381 $DGL 0,20
382 382 0003F 8E50 mov a,IICA0 ;[INF] 2, 1
383 383 00041 9C05 mov [hl+5],a ; temp ;[INF] 2, 1
384 384 ; line 102 : IICAIF = 0;
385 385 $DGL 0,21
386 386 00043 713BE2 clr1 IF1L.3 ;[INF] 3, 2
387 387 ; line 103 : WREL = 1;
388 388 $DGL 0,22
389 389 00046 71503002 set1 !IICCTL00.5 ;[INF] 4, 2
390 390 ; line 104 :
391 391 ; line 105 : vreg_adrs = adrs_table_twl_ext2int( temp );
392 392 $DGL 0,24
393 393 0004A 8C05 mov a,[hl+5] ; temp ;[INF] 2, 1
394 394 0004C 318E shrw ax,8 ;[INF] 2, 1
395 395 0004E RFD0000 call !_adrs_table_twl_ext2int ;[INF] 3, 3
396 396 00051 62 mov a,c ;[INF] 1, 1
397 397 00052 R9F0000 mov !_vreg_adrs,a ;[INF] 3, 1
398 398 ; line 106 :
399 399 ; line 107 : // 3回目
400 400 ; line 108 : // スタートコンディションか、データ受信完了フラグ待ち
401 401 ; line 109 :
402 402 ; line 110 : while( 1 )
403 403 00055 ?L0009:
404 404 ; line 111 : {
405 405 00055 ??bb04_int_iic_twl:
406 406 ; line 112 : u8 my_iics = IICS;
407 407 $DGL 0,31
408 408 00055 8E51 mov a,IICS0 ;[INF] 2, 1
409 409 00057 9C01 mov [hl+1],a ; my_iics ;[INF] 2, 1
410 410 ; line 113 :
411 411 ; line 114 : if( my_iics & 0x01 ) // SPD
412 412 $DGL 0,33
413 413 00059 5C01 and a,#01H ; 1 ;[INF] 2, 1
414 414 0005B D1 cmp0 a ;[INF] 1, 1
415 415 0005C DD07 bz $?L0011 ;[INF] 2, 4
416 416 ; line 115 : { // 強制終了
417 417 0005E ??bb05_int_iic_twl:
418 418 ; line 116 : LREL = 1;
419 419 $DGL 0,35
420 420 0005E 71603002 set1 !IICCTL00.6 ;[INF] 4, 2
421 421 ; line 117 : return;
422 422 $DGL 0,36
423 423 00062 REDFD00 br !?L0010 ;[INF] 3, 3
424 424 00065 ??eb05_int_iic_twl:
425 425 ; line 118 : }
426 426 00065 ?L0011:
427 427 ; line 119 : else if( my_iics & 0x02 ) // ( STD && !SPD )
428 428 $DGL 0,38
429 429 00065 8C01 mov a,[hl+1] ; my_iics ;[INF] 2, 1
430 430 00067 5C02 and a,#02H ; 2 ;[INF] 2, 1
431 431 00069 D1 cmp0 a ;[INF] 1, 1
432 432 0006A DD66 bz $?L0013 ;[INF] 2, 4
433 433 ; line 120 : {
434 434 0006C ??bb06_int_iic_twl:
435 435 ; line 121 : // 送信 // (スタートコンディション検出)
436 436 ; line 122 : pre_dat = vreg_twl_read( vreg_adrs ); // mcu内
437 437 ; 部アドレスを渡す。一バイト目の準備 IICBに書き込むとウェイト解除
438 438 $DGL 0,41
439 439 0006C RD90000 mov x,!_vreg_adrs ;[INF] 3, 1
440 440 0006F F1 clrb a ;[INF] 1, 1
441 441 00070 RFD0000 call !_vreg_twl_read ;[INF] 3, 3
442 442 00073 62 mov a,c ;[INF] 1, 1
443 443 00074 R9F0100 mov !_pre_dat,a ;[INF] 3, 1
444 444 ; line 123 :
445 445 ; line 124 : // 自局をRで呼ばれるのを待つ
446 446 ; line 125 : wait_next;
447 447 $DGL 0,44
448 448 00077 ??bb07_int_iic_twl:
449 449 00077 F6 clrw ax ;[INF] 1, 1
450 450 00078 BC02 movw [hl+2],ax ; tot ;[INF] 2, 1
451 451 0007A ?L0015:
452 452 0007A 31B2E219 bt IF1L.3,$?L0016 ;[INF] 4, 5
453 453 0007E ??bb08_int_iic_twl:
454 454 0007E 31845106 bf IICS0.0,$?L0017 ;[INF] 4, 5
455 455 00082 ??bb09_int_iic_twl:
456 456 00082 71603002 set1 !IICCTL00.6 ;[INF] 4, 2
457 457 00086 EF75 br $?L0010 ;[INF] 2, 3
458 458 00088 ??eb09_int_iic_twl:
459 459 00088 ?L0017:
460 460 00088 617902 incw [hl+2] ; tot ;[INF] 3, 2
461 461 0008B F6 clrw ax ;[INF] 1, 1
462 462 0008C 614902 cmpw ax,[hl+2] ; tot ;[INF] 3, 1
463 463 0008F DFE9 bnz $?L0015 ;[INF] 2, 4
464 464 00091 ??bb0A_int_iic_twl:
465 465 00091 71603002 set1 !IICCTL00.6 ;[INF] 4, 2
466 466 00095 EF66 br $?L0010 ;[INF] 2, 3
467 467 00097 ??eb0A_int_iic_twl:
468 468 ; line 126 : IICAIF = 0;
469 469 $DGL 0,45
470 470 00097 ??eb08_int_iic_twl:
471 471 00097 ?L0016:
472 472 00097 ??eb07_int_iic_twl:
473 473 00097 713BE2 clr1 IF1L.3 ;[INF] 3, 2
474 474 ; line 127 : if( COI != 1 )
475 475 $DGL 0,46
476 476 0009A 31C25106 bt IICS0.4,$?L0021 ;[INF] 4, 5
477 477 ; line 128 : { // 被呼び出し?
478 478 0009E ??bb0B_int_iic_twl:
479 479 ; line 129 : LREL = 1; // 呼ばれたのは他のIDあれ
480 480 $DGL 0,48
481 481 0009E 71603002 set1 !IICCTL00.6 ;[INF] 4, 2
482 482 ; line 130 : return;
483 483 $DGL 0,49
484 484 000A2 EF59 br $?L0010 ;[INF] 2, 3
485 485 000A4 ??eb0B_int_iic_twl:
486 486 ; line 131 : }
487 487 000A4 ?L0021:
488 488 ; line 132 : IICA = pre_dat; // データを送る。ウェイトも解除さ
489 489 ; れる。
490 490 $DGL 0,51
491 491 000A4 R8F0100 mov a,!_pre_dat ;[INF] 3, 1
492 492 000A7 9E50 mov IICA0,a ;[INF] 2, 1
493 493 ; line 133 :
494 494 ; line 134 : wait_next;
495 495 $DGL 0,53
496 496 000A9 ??bb0C_int_iic_twl:
497 497 000A9 F6 clrw ax ;[INF] 1, 1
498 498 000AA BC02 movw [hl+2],ax ; tot ;[INF] 2, 1
499 499 000AC ?L0023:
500 500 000AC 31B2E219 bt IF1L.3,$?L0024 ;[INF] 4, 5
501 501 000B0 ??bb0D_int_iic_twl:
502 502 000B0 31845106 bf IICS0.0,$?L0025 ;[INF] 4, 5
503 503 000B4 ??bb0E_int_iic_twl:
504 504 000B4 71603002 set1 !IICCTL00.6 ;[INF] 4, 2
505 505 000B8 EF43 br $?L0010 ;[INF] 2, 3
506 506 000BA ??eb0E_int_iic_twl:
507 507 000BA ?L0025:
508 508 000BA 617902 incw [hl+2] ; tot ;[INF] 3, 2
509 509 000BD F6 clrw ax ;[INF] 1, 1
510 510 000BE 614902 cmpw ax,[hl+2] ; tot ;[INF] 3, 1
511 511 000C1 DFE9 bnz $?L0023 ;[INF] 2, 4
512 512 000C3 ??bb0F_int_iic_twl:
513 513 000C3 71603002 set1 !IICCTL00.6 ;[INF] 4, 2
514 514 000C7 EF34 br $?L0010 ;[INF] 2, 3
515 515 000C9 ??eb0F_int_iic_twl:
516 516 ; line 135 : // 4回目。(送信データ後の、ACK/NACK後) どうしても発
517 517 ; 生してしまう。
518 518 000C9 ??eb0D_int_iic_twl:
519 519 000C9 ?L0024:
520 520 000C9 ??eb0C_int_iic_twl:
521 521 ; line 136 : IICAIF = 0; // おしまい
522 522 $DGL 0,55
523 523 000C9 713BE2 clr1 IF1L.3 ;[INF] 3, 2
524 524 ; line 137 : LREL = 1;
525 525 $DGL 0,56
526 526 000CC 71603002 set1 !IICCTL00.6 ;[INF] 4, 2
527 527 ; line 138 : return;
528 528 $DGL 0,57
529 529 000D0 EF2B br $?L0010 ;[INF] 2, 3
530 530 000D2 ??eb06_int_iic_twl:
531 531 ; line 139 : }
532 532 000D2 ?L0013:
533 533 ; line 140 : else if( IICAIF && (( my_iics & 0x03 ) == 0 )) // !STD
534 534 ; && !SPD )
535 535 $DGL 0,59
536 536 000D2 31B4E224 bf IF1L.3,$?L0029 ;[INF] 4, 5
537 537 000D6 8C01 mov a,[hl+1] ; my_iics ;[INF] 2, 1
538 538 000D8 5C03 and a,#03H ; 3 ;[INF] 2, 1
539 539 000DA D1 cmp0 a ;[INF] 1, 1
540 540 000DB DF1D bnz $?L0029 ;[INF] 2, 4
541 541 ; line 141 : {
542 542 000DD ??bb10_int_iic_twl:
543 543 ; line 142 : // 受信 //
544 544 ; line 143 : IICAIF = 0;
545 545 $DGL 0,62
546 546 000DD 713BE2 clr1 IF1L.3 ;[INF] 3, 2
547 547 ; line 144 : temp = IICA;
548 548 $DGL 0,63
549 549 000E0 8E50 mov a,IICA0 ;[INF] 2, 1
550 550 000E2 9C05 mov [hl+5],a ; temp ;[INF] 2, 1
551 551 ; line 145 : WREL = 1;
552 552 $DGL 0,64
553 553 000E4 71503002 set1 !IICCTL00.5 ;[INF] 4, 2
554 554 ; line 146 :
555 555 ; line 147 : // 通常アクセス(ライト) //
556 556 ; line 148 : LREL = 1; // スタートコンディション待ちへ(
557 557 ; 連続書き込み未対応のため)
558 558 $DGL 0,67
559 559 000E8 71603002 set1 !IICCTL00.6 ;[INF] 4, 2
560 560 ; line 149 : vreg_twl_write( vreg_adrs, temp );
561 561 $DGL 0,68
562 562 000EC 8C05 mov a,[hl+5] ; temp ;[INF] 2, 1
563 563 000EE 318E shrw ax,8 ;[INF] 2, 1
564 564 000F0 C1 push ax ;[INF] 1, 1
565 565 000F1 RD90000 mov x,!_vreg_adrs ;[INF] 3, 1
566 566 000F4 RFD0000 call !_vreg_twl_write ;[INF] 3, 3
567 567 000F7 C0 pop ax ;[INF] 1, 1
568 568 ; line 150 : return; // 受信おしまい //
569 569 $DGL 0,69
570 570 000F8 EF03 br $?L0010 ;[INF] 2, 3
571 571 000FA ??eb10_int_iic_twl:
572 572 ; line 151 : }
573 573 000FA ?L0029:
574 574 000FA ??eb04_int_iic_twl:
575 575 ; line 152 : }
576 576 $DGL 0,71
577 577 000FA RED5500 br !?L0009 ;[INF] 3, 3
578 578 000FD ?L0010:
579 579 ; line 153 : }
580 580 $DGL 0,72
581 581 000FD ??ef_int_iic_twl:
582 582 000FD 1006 addw sp,#06H ;[INF] 2, 1
583 583 000FF C0 pop ax ;[INF] 1, 1
584 584 00100 9EFC mov CS,a ;[INF] 2, 1
585 585 00102 60 mov a,x ;[INF] 1, 1
586 586 00103 9EFD mov ES,a ;[INF] 2, 1
587 587 00105 R340000 movw de,#_@SEGAX ;[INF] 3, 1
588 588 00108 5206 mov c,#06H ;[INF] 2, 1
589 589 0010A C0 pop ax ;[INF] 1, 1
590 590 0010B B9 movw [de],ax ;[INF] 1, 1
591 591 0010C A5 incw de ;[INF] 1, 1
592 592 0010D A5 incw de ;[INF] 1, 1
593 593 0010E 92 dec c ;[INF] 1, 1
594 594 0010F DFF9 bnz $$-5 ;[INF] 2, 4
595 595 00111 C6 pop hl ;[INF] 1, 1
596 596 00112 C4 pop de ;[INF] 1, 1
597 597 00113 C2 pop bc ;[INF] 1, 1
598 598 00114 C0 pop ax ;[INF] 1, 1
599 599 00115 61FC reti ;[INF] 2, 6
600 600 00117 ??ee_int_iic_twl:
601 601 ; line 154 :
602 602 ; line 155 :
603 603 ; line 156 :
604 604 ; line 157 : /*****************************************************/
605 605 ; line 158 : void IIC_twl_Init( void )
606 606 ; line 159 : {
607 607
608 608 ----- ROM_CODE CSEG BASE
609 609 00000 _IIC_twl_Init:
610 610 $DGL 1,99
611 611 00000 ??bf_IIC_twl_Init:
612 612 ; line 160 :
613 613 ; line 161 : IICAEN = 1;
614 614 $DGL 0,3
615 615 00000 7140F000 set1 !PER0.4 ;[INF] 4, 2
616 616 ; line 162 :
617 617 ; line 163 : IICE = 0; /* IICA disable */
618 618 $DGL 0,5
619 619 00004 71783002 clr1 !IICCTL00.7 ;[INF] 4, 2
620 620 ; line 164 :
621 621 ; line 165 : IICAMK = 1; /* INTIICA disable */
622 622 $DGL 0,7
623 623 00008 713AE6 set1 MK1L.3 ;[INF] 3, 2
624 624 ; line 166 : IICAIF = 0; /* clear INTIICA interrupt flag
625 625 ; */
626 626 $DGL 0,8
627 627 0000B 713BE2 clr1 IF1L.3 ;[INF] 3, 2
628 628 ; line 167 :
629 629 ; line 168 : IICAPR0 = 0; /* set INTIICA high priority */
630 630 $DGL 0,10
631 631 0000E 713BEA clr1 PR01L.3 ;[INF] 3, 2
632 632 ; line 169 : IICAPR1 = 0; /* set INTIICA high priority */
633 633 $DGL 0,11
634 634 00011 713BEE clr1 PR11L.3 ;[INF] 3, 2
635 635 ; line 170 : P20 &= ~0x3;
636 636 $DGL 0,12
637 637 00014 8F1005 mov a,!P20 ;[INF] 3, 1
638 638 00017 5CFC and a,#0FCH ; 252 ;[INF] 2, 1
639 639 00019 9F1005 mov !P20,a ;[INF] 3, 1
640 640 ; line 171 :
641 641 ; line 172 : SVA = IIC_T_SLAVEADDRESS;
642 642 $DGL 0,14
643 643 0001C CF34024A mov !SVA0,#04AH ; 74 ;[INF] 4, 1
644 644 ; line 173 : IICF = 0x01;
645 645 $DGL 0,15
646 646 00020 E552FF oneb !IICF0 ;[INF] 3, 1
647 647 ; line 174 :
648 648 ; line 175 : STCEN = 1; // リスタートの許可
649 649 $DGL 0,17
650 650 00023 711A52 set1 IICF0.1 ;[INF] 3, 2
651 651 ; line 176 : IICRSV = 1; // 通信予約をさせない:スレーブに
652 652 ; 徹する
653 653 $DGL 0,18
654 654 00026 710A52 set1 IICF0.0 ;[INF] 3, 2
655 655 ; line 177 :
656 656 ; line 178 : SPIE = 0; // ストップコンディションでの割り
657 657 ; 込みを禁止
658 658 $DGL 0,20
659 659 00029 71483002 clr1 !IICCTL00.4 ;[INF] 4, 2
660 660 ; line 179 : WTIM = 1; // 自動でACKを返した後clkをLに固
661 661 ; 定する
662 662 $DGL 0,21
663 663 0002D 71303002 set1 !IICCTL00.3 ;[INF] 4, 2
664 664 ; line 180 : ACKE = 1; // ダメCPUは無視して次の通信をは
665 665 ; じめるかもしれないんで早くclkを開放しないといけない
666 666 $DGL 0,22
667 667 00031 71203002 set1 !IICCTL00.2 ;[INF] 4, 2
668 668 ; line 181 :
669 669 ; line 182 : IICWH = 5;
670 670 $DGL 0,24
671 671 00035 CF330205 mov !IICWH0,#05H ; 5 ;[INF] 4, 1
672 672 ; line 183 : IICWL = 10; // L期間の長さ
673 673 $DGL 0,25
674 674 00039 CF32020A mov !IICWL0,#0AH ; 10 ;[INF] 4, 1
675 675 ; line 184 :
676 676 ; line 185 : SMC = 1;
677 677 $DGL 0,27
678 678 0003D 71303102 set1 !IICCTL10.3 ;[INF] 4, 2
679 679 ; line 186 :
680 680 ; line 187 : IICAMK = 0; // 割り込みを許可
681 681 $DGL 0,29
682 682 00041 713BE6 clr1 MK1L.3 ;[INF] 3, 2
683 683 ; line 188 :
684 684 ; line 189 : IICE = 1;
685 685 $DGL 0,31
686 686 00044 71703002 set1 !IICCTL00.7 ;[INF] 4, 2
687 687 ; line 190 :
688 688 ; line 191 : PM20 &= ~0x3; /* set clock pin for IICA */
689 689 $DGL 0,33
690 690 00048 8F1105 mov a,!PM20 ;[INF] 3, 1
691 691 0004B 5CFC and a,#0FCH ; 252 ;[INF] 2, 1
692 692 0004D 9F1105 mov !PM20,a ;[INF] 3, 1
693 693 ; line 192 :
694 694 ; line 193 : LREL = 1;
695 695 $DGL 0,35
696 696 00050 71603002 set1 !IICCTL00.6 ;[INF] 4, 2
697 697 ; line 194 : }
698 698 $DGL 0,36
699 699 00054 ??ef_IIC_twl_Init:
700 700 00054 D7 ret ;[INF] 1, 6
701 701 00055 ??ee_IIC_twl_Init:
702 702 ; line 195 :
703 703 ; line 196 :
704 704 ; line 197 :
705 705 ; line 198 : //**************************************************************
706 706 ; **************
707 707 ; line 199 : void IIC_twl_Stop( void )
708 708 ; line 200 : {
709 709 00055 _IIC_twl_Stop:
710 710 $DGL 1,105
711 711 00055 ??bf_IIC_twl_Stop:
712 712 ; line 201 : IICE = 0; /* IICA disable */
713 713 $DGL 0,2
714 714 00055 71783002 clr1 !IICCTL00.7 ;[INF] 4, 2
715 715 ; line 202 : IICAEN = 0;
716 716 $DGL 0,3
717 717 00059 7148F000 clr1 !PER0.4 ;[INF] 4, 2
718 718 ; line 203 : }
719 719 $DGL 0,4
720 720 0005D ??ef_IIC_twl_Stop:
721 721 0005D D7 ret ;[INF] 1, 6
722 722 0005E ??ee_IIC_twl_Stop:
723 723
724 724 ----- @@CODEL CSEG
725 725 END
726 726
727 727
728 728 ; *** Code Information ***
729 729 ;
730 730 ; $FILE C:\78k_data\yav-mcu-basara\branches\0.10(fix)\i2c_twl.c
731 731 ;
732 732 ; $FUNC int_iic_twl(82)
733 733 ; void=(void)
734 734 ; CODE SIZE= 279 bytes, CLOCK_SIZE= 232 clocks, STACK_SIZE= 34 bytes
735 735 ;
736 736 ; $CALL adrs_table_twl_ext2int(105)
737 737 ; bc=(int:ax)
738 738 ;
739 739 ; $CALL vreg_twl_read(122)
740 740 ; bc=(int:ax)
741 741 ;
742 742 ; $CALL vreg_twl_write(149)
743 743 ; void=(int:ax, int:[sp+4])
744 744 ;
745 745 ; $FUNC IIC_twl_Init(159)
746 746 ; void=(void)
747 747 ; CODE SIZE= 85 bytes, CLOCK_SIZE= 46 clocks, STACK_SIZE= 0 bytes
748 748 ;
749 749 ; $FUNC IIC_twl_Stop(200)
750 750 ; void=(void)
751 751 ; CODE SIZE= 9 bytes, CLOCK_SIZE= 10 clocks, STACK_SIZE= 0 bytes
752 752
753 753 ; Target chip : uPD79F0104
754 754 ; Device file : E1.00b
Segment informations:
ADRS LEN NAME
00000 00000H.0 @@BITS
00000 00030H @@CNST
00000 00000H @@R_INIT
00000 00000H @@INIT
00000 00004H @@DATA
00000 00000H @@R_INIS
00000 00000H @@INIS
00000 00000H @@DATS
00000 00000H @@CNSTL
00000 00000H @@RLINIT
00000 00000H @@INITL
00000 00000H @@DATAL
00000 00000H @@CALT
00000 00117H @@BASE
00000 0005EH ROM_CODE
00000 00000H @@CODEL
Target chip : uPD79F0104
Device file : E1.00b
Assembly complete, 0 error(s) and 0 warning(s) found. ( 0)


Binary file not shown.

View File

@ -0,0 +1,196 @@
#ifndef _MDSERIAL_
#define _MDSERIAL_
/* IIC operation enable (IICE0) */
#define IIC0_OPERATION 0x80
#define IIC0_OPERATION_DISABLE 0x00 /* stop operation */
#define IIC0_OPERATION_ENABLE 0x80 /* enable operation */
/* Exit from communications (LREL0) */
#define IIC0_COMMUNICATION 0x40
#define IIC0_COMMUNICATION_NORMAL 0x00 /* normal operation */
#define IIC0_COMMUNICATION_EXIT 0x40 /* exit from current communication */
/* Wait cancellation (WREL0) */
#define IIC0_WAITCANCEL 0x20
#define IIC0_WAIT_NOTCANCEL 0x00 /* do not cancel wait */
#define IIC0_WAIT_CANCEL 0x20 /* cancel wait */
/* Generation of interrupt when stop condition (SPIE0) */
#define IIC0_STOPINT 0x10
#define IIC0_STOPINT_DISABLE 0x00 /* disable */
#define IIC0_STOPINT_ENABLE 0x10 /* enable */
/* Wait and interrupt generation (WTIM0) */
#define IIC0_WAITINT 0x08
#define IIC0_WAITINT_CLK8FALLING 0x00 /* generate at the eighth clocks falling edge */
#define IIC0_WAITINT_CLK9FALLING 0x08 /* generated at the ninth clocks falling edge */
/* Acknowledgement control (ACKE0) */
#define IIC0_ACK 0x04
#define IIC0_ACK_DISABLE 0x00 /* enable acknowledgement */
#define IIC0_ACK_ENABLE 0x04 /* disable acknowledgement */
/* Start condition trigger (STT0) */
#define IIC0_STARTCONDITION 0x02
#define IIC0_START_NOTGENERATE 0x00 /* do not generate start condition */
#define IIC0_START_GENERATE 0x02 /* generate start condition */
/* Stop condition trigger (SPT0) */
#define IIC0_STOPCONDITION 0x01
#define IIC0_STOP_NOTGENERATE 0x00 /* do not generate stop condition */
#define IIC0_STOP_GENERATE 0x01 /* generate stop condition */
/*
IIC Status Register 0 (IICS0)
*/
/* Master device status (MSTS0) */
#define IIC0_MASTERSTATUS 0x80
#define IIC0_STATUS_NOTMASTER 0x00 /* slave device status or communication standby status */
#define IIC0_STATUS_MASTER 0x80 /* master device communication status */
/* Detection of arbitration loss (ALD0) */
#define IIC0_ARBITRATION 0x40
#define IIC0_ARBITRATION_NO 0x00 /* arbitration win or no arbitration */
#define IIC0_ARBITRATION_LOSS 0x40 /* arbitration loss */
/* Detection of extension code reception (EXC0) */
#define IIC0_EXTENSIONCODE 0x20
#define IIC0_EXTCODE_NOT 0x00 /* extension code not received */
#define IIC0_EXTCODE_RECEIVED 0x20 /* extension code received */
/* Detection of matching addresses (COI0) */
#define IIC0_ADDRESSMATCH 0x10
#define IIC0_ADDRESS_NOTMATCH 0x00 /* addresses do not match */
#define IIC0_ADDRESS_MATCH 0x10 /* addresses match */
/* Detection of transmit/receive status (TRC0) */
#define IIC0_STATUS 0x08
#define IIC0_STATUS_RECEIVE 0x00 /* receive status */
#define IIC0_STATUS_TRANSMIT 0x08 /* transmit status */
/* Detection of acknowledge signal (ACKD0) */
#define IIC0_ACKDETECTION 0x04
#define IIC0_ACK_NOTDETECTED 0x00 /* ACK signal was not detected */
#define IIC0_ACK_DETECTED 0x04 /* ACK signal was detected */
/* Detection of start condition (STD0) */
#define IIC0_STARTDETECTION 0x02
#define IIC0_START_NOTDETECTED 0x00 /* start condition not detected */
#define IIC0_START_DETECTED 0x02 /* start condition detected */
/* Detection of stop condition (SPD0) */
#define IIC0_STOPDETECTION 0x01
#define IIC0_STOP_NOTDETECTED 0x00 /* stop condition not detected */
#define IIC0_STOP_DETECTED 0x01 /* stop condition detected */
/*
IIC Flag Register 0 (IICF0)
*/
/* STT0 clear flag (STCF) */
#define IIC0_STARTFLAG 0x80
#define IIC0_STARTFLAG_GENERATE 0x00 /* generate start condition */
#define IIC0_STARTFLAG_UNSUCCESSFUL 0x80 /* start condition generation unsuccessful */
/* IIC bus status flag (IICBSY) */
#define IIC0_BUSSTATUS 0x40
#define IIC0_BUS_RELEASE 0x00 /* bus release status */
#define IIC0_BUS_COMMUNICATION 0x40 /* bus communication status */
/* Initial start enable trigger (STCEN) */
#define IIC0_STARTWITHSTOP 0x02
#define IIC0_START_WITHSTOP 0x00 /* generation of a start condition without detecting a stop condition */
#define IIC0_START_WITHOUTSTOP 0x02 /* generation of a start condition upon detection of a stop condition */
/* Communication reservation function disable bit (IICRSV) */
#define IIC0_RESERVATION 0x01
#define IIC0_RESERVATION_ENABLE 0x00 /* enable communication reservation */
#define IIC0_RESERVATION_DISABLE 0x01 /* disable communication reservation */
/*
IIC clock selection register 0 (IICCL0)
*/
#define IICCL0_INITIALVALUE 0x00
/* Detection of SCL0 pin level (CLD0) */
#define IIC0_SCLLEVEL 0x20
#define IIC0_SCL_LOW 0x00 /* clock line at low level */
#define IIC0_SCL_HIGH 0x20 /* clock line at high level */
/* Detection of SDA0 pin level (DAD0) */
#define IIC0_SDALEVEL 0x10
#define IIC0_SDA_LOW 0x00 /* data line at low level */
#define IIC0_SDA_HIGH 0x10 /* data line at high level */
/* Operation mode switching (SMC0) */
#define IIC0_OPERATIONMODE 0x08
#define IIC0_MODE_STANDARD 0x00 /* operates in standard mode */
#define IIC0_MODE_HIGHSPEED 0x08 /* operates in high-speed mode */
/* Digital filter operation control (DFC0) */
#define IIC0_DIGITALFILTER 0x04
#define IIC0_FILTER_OFF 0x00 /* digital filter off */
#define IIC0_FILTER_ON 0x04 /* digital filter on */
/* Operation mode switching (CL01, CL00) */
#define IIC0_CLOCKSELECTION 0x03
/* Combine of (SMC0, CL01, CL00)*/
#define IIC0_CLOCK0 0x00
#define IIC0_CLOCK1 0x01
#define IIC0_CLOCK2 0x02
#define IIC0_CLOCK3 0x03
#define IIC0_CLOCK4 0x08
#define IIC0_CLOCK5 0x09
#define IIC0_CLOCK6 0x0a
#define IIC0_CLOCK7 0x0b
/*
IIC function expansion register 0 (IICX0)
*/
/* IIC clock expension (CLX0) */
#define IIC0_CLOCKEXPENSION 0x01
#define IIC0_EXPENSION0 0x00
#define IIC0_EXPENSION1 0x01
/* Operation clock (CLX0, SMC0, CL01, CL00)
| IIC0_EXPENSION0 | IIC0_EXPENSION1 |
------------|-------------------|-------------------|----------------------
IIC0_CLOCK0 | fprs/2 | prohibited | selection clock(fw)
| fprs/88 | | transfer clock
| normal | | mode
------------|-------------------|-------------------|----------------------
IIC0_CLOCK1 | fprs/2 | prohibited | selection clock(fw)
| fprs/172 | | transfer clock
| normal | | mode
------------|-------------------|-------------------|----------------------
IIC0_CLOCK2 | fprs/2 | prohibited | selection clock(fw)
| fprs/344 | | transfer clock
| normal | | mode
------------|-------------------|-------------------|----------------------
IIC0_CLOCK3 |prohibited/fexscl0 | prohibited | selection clock(fw)
| fw/66 | | transfer clock
| normal | | mode
------------|-------------------|-------------------|----------------------
IIC0_CLOCK4 | fprs/2 | fprs/2 | selection clock(fw)
| fprs/48 | fprs/24 | transfer clock
| high speed | high speed | mode
------------|-------------------|-------------------|----------------------
IIC0_CLOCK5 | fprs/2 | fprs/2 | selection clock(fw)
| fprs/48 | fprs/24 | transfer clock
| high speed | high speed | mode
------------|-------------------|-------------------|----------------------
IIC0_CLOCK6 | fprs/4 | fprs/4 | selection clock(fw)
| fprs/96 | fprs/48 | transfer clock
| high speed | high speed | mode
------------|-------------------|-------------------|----------------------
IIC0_CLOCK7 |prohibited/fexscl0 | prohibited | selection clock(fw)
| fw/18 | | transfer clock
| high speed | | mode
------------|-------------------|-------------------|----------------------
*/
#define ADDRESS_COMPLETE 0x80
#define IIC_MASTER_FLAG_CLEAR 0x00
#endif

36
branches/0.10(X3)/incs.h Normal file
View File

@ -0,0 +1,36 @@
#pragma SFR
#pragma di
#pragma ei
#pragma nop
#pragma stop
#pragma halt
#pragma section @@CODE ROM_CODE
//#pragma section @@CNST ROM_CNST
//=========================================================
#ifndef _incs_h_
#define _incs_h_
#define _mcu_
#include "jhl_defs.h"
#include "user_define.h"
#include "bsr_system.h"
#include "renge.h"
#include "vreg_ctr.h"
#include "vreg_twl.h"
#include "i2c_mcu.h"
#include "rtc.h"
#include "accero.h"
//=========================================================
err firm_update( );
#endif

View File

@ -0,0 +1,38 @@
#pragma SFR
#pragma di
#pragma ei
#pragma nop
#pragma stop
#pragma halt
#pragma section @@CODE LDR_CODE
#pragma section @@CODEL LDR_CODL
//#pragma section @@R_INIT FSL_RINT // これやるとスタートアップルーチンが初期値を
//#pragma section @@CNST FSL_CNST // セットしてくれない
#pragma section @@CNSTL LDR_CNSL
//=========================================================
#include "jhl_defs.h"
#include "user_define.h"
#include "bsr_system.h"
#include "renge.h"
#include "vreg_ctr.h"
#include "vreg_twl.h"
#include "loader.h"
#include "i2c_mcu.h"
#include "WDT.h"
//=========================================================
err firm_update( );
err firm_restore( );

View File

@ -0,0 +1,283 @@
#pragma nop
#include "config.h"
//#pragma interrupt INTWDTI fn_intwdti // 未使用
//#pragma interrupt INTLVI fn_intlvi // 未使用
//#pragma interrupt INTP0 intp0_slp // SLP (CPUより、要求) ポーリング
//#pragma interrupt INTP1 fn_intp1 // (I2C)
//#pragma interrupt INTP2 fn_intp2 // (I2C)
//#pragma interrupt INTP3 fn_intp3 // 未搭載
#pragma interrupt INTP4 intp4_extdc // EXTDC, ただし電源offから起こすのみ。通常はポーリング
#pragma interrupt INTP5 intp5_shell // SHELL_CLOSE, ただし電源offから起こすのみ。通常はポーリング
#pragma interrupt INTP6 intp6_PM_irq // CODEC経由で旧PMICへのコマンド書き込み
//#ifdef _MCU_BSR_ // 割り込みそのものは使いません
//#pragma interrupt INTP21 intp21_RFTx // 電波送信パルス
//#else
//#pragma interrupt INTP7 intp21_RFTx
//#endif
#ifdef _MCU_BSR_
#pragma interrupt INTP23 intp23_ACC_ready // 加速度センサ、データ準備完了
#endif
//#pragma interrupt INTCMP0 fn_intcmp0
//#pragma interrupt INTCMP1 fn_intcmp1
//#pragma interrupt INTDMA0 fn_intdma0
#pragma interrupt INTDMA1 int_dma1
//#pragma interrupt INTST0 fn_intst0
/* #pragma interrupt INTCSI00 fn_intcsi00 */
//#pragma interrupt INTSR0 fn_intsr0
/* #pragma interrupt INTCSI01 fn_intcsi01 */
//#pragma interrupt INTSRE0 fn_intsre0
//#pragma interrupt INTST1 fn_intst1
/* #pragma interrupt INTCSI10 fn_intcsi10 */
#pragma interrupt INTIIC10 int_iic10
//#pragma interrupt INTSR1 fn_intsr1
//#pragma interrupt INTSRE1 fn_intsre1
#ifdef _MCU_KE3_
#pragma interrupt INTIICA int_iic_ctr // CTR側
#else
// TSはマザボでテレコ、WMは回路図がテレコで結局一致…
#pragma interrupt INTIICA0 int_iic_twl
#pragma interrupt INTIICA1 int_iic_ctr
#endif
//#pragma interrupt INTTM00 fn_inttm00
//#pragma interrupt INTTM01 fn_inttm01
//#pragma interrupt INTTM02 fn_inttm02
//#pragma interrupt INTTM03 fn_inttm03
#pragma interrupt INTAD int_adc
#pragma interrupt INTRTC int_rtc
#pragma interrupt INTRTCI int_rtc_int
#pragma interrupt INTKR int_kr
//#pragma interrupt INTMD fn_intmd
//#pragma interrupt INTTM04 fn_inttm04
//#pragma interrupt INTTM05 fn_inttm05
//#pragma interrupt INTTM06 fn_inttm06
//#pragma interrupt INTTM07 fn_inttm07
/****************************************************/
/* 未使用時のダミー関数定義 */
/****************************************************/
__interrupt void fn_intwdti( )
{
while( 1 )
{
NOP();
}
}
__interrupt void fn_intlvi( )
{
while( 1 )
{
NOP();
}
}
__interrupt void fn_intp0(){
while( 1 )
{
NOP();
}
}
__interrupt void fn_intp1( )
{
while( 1 )
{
NOP();
}
} //
__interrupt void fn_intp2( )
{
while( 1 )
{
NOP();
}
}
__interrupt void fn_intp3( )
{
while( 1 )
{
NOP();
}
}
__interrupt void intp21_RFTx( )
{
while( 1 )
{
NOP();
}
}
//__interrupt void fn_intp4(){ while(1){} } // pm.c
//__interrupt void fn_intp5(){ while(1){} } // pm.c
//__interrupt void fn_intp6(){ while(1){} } // pm.c
//__interrupt void fn_intp7(){ while(1){} } // led.c
//__interrupt void fn_intp21(){ while(1){} } // led.c
__interrupt void fn_intcmp0( )
{
while( 1 )
{
NOP();
}
}
__interrupt void fn_intcmp1( )
{
while( 1 )
{
NOP();
}
}
__interrupt void fn_intdma0( )
{
while( 1 )
{
NOP();
}
}
//__interrupt void fn_intdma1(){} // i2c_mcu.cにある
__interrupt void fn_intst0( )
{
while( 1 )
{
NOP();
}
}
/* __interrupt void fn_intcsi00(){} */
__interrupt void fn_intsr0( )
{
while( 1 )
{
NOP();
}
}
/* __interrupt void fn_intcsi01(){} */
__interrupt void fn_intsre0( )
{
while( 1 )
{
NOP();
}
}
__interrupt void fn_intst1( )
{
while( 1 )
{
NOP();
}
}
/* __interrupt void fn_intcsi10(){} */
//__interrupt void fn_intiic10(){ while(1){} }
__interrupt void fn_intsr1( )
{
while( 1 )
{
NOP();
}
}
__interrupt void fn_intsre1( )
{
while( 1 )
{
NOP();
}
}
//__interrupt void fn_intiica(){} // i2c.cにある
/* __interrupt void fn_inttm00(){} *//* sub.cにて定義 */
__interrupt void fn_inttm01( )
{
while( 1 )
{
NOP();
}
}
__interrupt void fn_inttm02( )
{
while( 1 )
{
NOP();
}
}
__interrupt void fn_inttm03( )
{
while( 1 )
{
NOP();
}
}
//__interrupt void fn_intad(){ while(1){} } // adc.c
__interrupt void fn_intrtc( )
{
while( 1 )
{
NOP();
}
}
//__interrupt void int_rtcint(){} // rtc.cにある
//__interrupt void fn_intkr(){} // main.c
__interrupt void fn_intmd( )
{
while( 1 )
{
NOP();
}
}
__interrupt void fn_inttm04( )
{
while( 1 )
{
NOP();
}
}
__interrupt void fn_inttm05( )
{
while( 1 )
{
NOP();
}
}
__interrupt void fn_inttm06( )
{
while( 1 )
{
NOP();
}
}
__interrupt void fn_inttm07( )
{
while( 1 )
{
NOP();
}
}

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@ -0,0 +1,111 @@
; 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 WDT.c
; In-file : WDT.c
; Asm-file : inter_asm\WDT.asm
; Para-file :
$PROCESSOR(9F0104)
$DEBUG
$NODEBUGA
$KANJICODE SJIS
$TOL_INF 03FH, 0210H, 00H, 00H, 00H, 00H, 00H
$DGS FIL_NAM, .file, 019H, 0FFFEH, 03FH, 067H, 01H, 00H
$DGS AUX_FIL, WDT.c
$DGS MOD_NAM, WDT, 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 GLV_SYM, _WDT_Restart, U, U, 01H, 026H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 019H, 00H, 00H
$DGS BEG_FUN, ??bf_WDT_Restart, U, U, 00H, 065H, 01H, 00H
$DGS AUX_BEG, 0CH, 00H, 019H
$DGS END_FUN, ??ef_WDT_Restart, U, U, 00H, 065H, 01H, 00H
$DGS AUX_END, 03H
PUBLIC _WDT_Restart
@@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 : #pragma sfr
; line 2 :
; line 3 :
; line 4 : #include "incs_loader.h"
; line 5 :
; line 6 :
; line 7 :
; line 8 : //=========================================================
; line 9 : // ウォッチドッグタイマのリスタート
; line 10 : // 0xACはマジック
; line 11 : void WDT_Restart( void )
; line 12 : {
LDR_CODE CSEG BASE
_WDT_Restart:
$DGL 1,19
??bf_WDT_Restart:
; line 13 : WDTE = WDT_RESTART_MAGIC;
$DGL 0,2
mov WDTE,#0ACH ; 172 ;[INF] 3, 1
; line 14 : }
$DGL 0,3
??ef_WDT_Restart:
ret ;[INF] 1, 6
??ee_WDT_Restart:
LDR_CODL CSEG
@@BASE CSEG BASE
END
; *** Code Information ***
;
; $FILE C:\78k_data\yav-mcu-basara\branches\0.10(fix)\WDT.c
;
; $FUNC WDT_Restart(12)
; void=(void)
; CODE SIZE= 4 bytes, CLOCK_SIZE= 7 clocks, STACK_SIZE= 0 bytes
; Target chip : uPD79F0104
; Device file : E1.00b

View File

@ -0,0 +1,984 @@
; 78K0R C Compiler V2.10 Assembler Source Date:13 Jun 2010 Time:19:31:24
; 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 accero.c
; In-file : accero.c
; Asm-file : inter_asm\accero.asm
; Para-file :
$PROCESSOR(9F0104)
$DEBUG
$NODEBUGA
$KANJICODE SJIS
$TOL_INF 03FH, 0210H, 00H, 00H, 00H, 00H, 00H
$DGS FIL_NAM, .file, 0B7H, 0FFFEH, 03FH, 067H, 01H, 00H
$DGS AUX_FIL, accero.c
$DGS MOD_NAM, accero, 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 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 ENM_TAG, .2fake, 00H, 0FFFEH, 0AH, 0FH, 01H, 00H
$DGS AUX_TAG, 01H, 047H
$DGS MEB_ENM, _ERR_FINISED, 00H, 0FFFFH, 04H, 010H, 00H, 00H
$DGS MEB_ENM, _ERR_CONTINUE, 01H, 0FFFFH, 04H, 010H, 00H, 00H
$DGS END_STR, .eos, 01H, 0FFFFH, 00H, 066H, 01H, 00H
$DGS AUX_EOS, 041H, 01H
$DGS LAB_SYM, bs_F0038, U, U, 00H, 06H, 00H, 00H
$DGS LAB_SYM, es_F0038, 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, _tsk_cbk_accero, U, U, 0AH, 026H, 01H, 02H
$DGS AUX_FUN, 041H, U, U, 067H, 00H, 00H
$DGS BEG_FUN, ??bf_tsk_cbk_accero, U, U, 00H, 065H, 01H, 00H
$DGS AUX_BEG, 042H, 06H, 04FH
$DGS BEG_BLK, ??bb00_tsk_cbk_accero, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 0EH, 00H, 053H
$DGS END_BLK, ??eb00_tsk_cbk_accero, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 014H
$DGS BEG_BLK, ??bb01_tsk_cbk_accero, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 016H, 00H, 055H
$DGS BEG_BLK, ??bb02_tsk_cbk_accero, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 01CH, 00H, 057H
$DGS BEG_BLK, ??bb03_tsk_cbk_accero, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 020H, 00H, 05FH
$DGS AUT_VAR, _temp, 00H, 0FFFFH, 0CH, 01H, 01H, 03H
$DGS AUX_STR, 00H, 021H, 06H, 06H, 00H, 00H, 00H, 00H
$DGS END_BLK, ??eb03_tsk_cbk_accero, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 023H
$DGS END_BLK, ??eb02_tsk_cbk_accero, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 024H
$DGS BEG_BLK, ??bb04_tsk_cbk_accero, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 029H, 00H, 00H
$DGS END_BLK, ??eb04_tsk_cbk_accero, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 02DH
$DGS END_BLK, ??eb01_tsk_cbk_accero, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 02EH
$DGS END_FUN, ??ef_tsk_cbk_accero, U, U, 00H, 065H, 01H, 00H
$DGS AUX_END, 030H
$DGS GLV_SYM, _acc_read, U, U, 0AH, 026H, 01H, 02H
$DGS AUX_FUN, 041H, U, U, 075H, 00H, 00H
$DGS BEG_FUN, ??bf_acc_read, U, U, 00H, 065H, 01H, 00H
$DGS AUX_BEG, 07BH, 00H, 06BH
$DGS BEG_BLK, ??bb00_acc_read, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 06H, 00H, 06DH
$DGS BEG_BLK, ??bb01_acc_read, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 07H, 00H, 00H
$DGS END_BLK, ??eb01_acc_read, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 07H
$DGS END_BLK, ??eb00_acc_read, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 08H
$DGS END_FUN, ??ef_acc_read, U, U, 00H, 065H, 01H, 00H
$DGS AUX_END, 0AH
$DGS GLV_SYM, _acc_write, U, U, 0AH, 026H, 01H, 02H
$DGS AUX_FUN, 041H, U, U, 083H, 00H, 00H
$DGS BEG_FUN, ??bf_acc_write, U, U, 00H, 065H, 01H, 00H
$DGS AUX_BEG, 08CH, 00H, 079H
$DGS BEG_BLK, ??bb00_acc_write, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 05H, 00H, 07BH
$DGS BEG_BLK, ??bb01_acc_write, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 06H, 00H, 00H
$DGS END_BLK, ??eb01_acc_write, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 06H
$DGS END_BLK, ??eb00_acc_write, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 07H
$DGS END_FUN, ??ef_acc_write, U, U, 00H, 065H, 01H, 00H
$DGS AUX_END, 09H
$DGS GLV_SYM, _acc_hosu_set, U, U, 0AH, 026H, 01H, 02H
$DGS AUX_FUN, 041H, U, U, 0A5H, 00H, 00H
$DGS BEG_FUN, ??bf_acc_hosu_set, U, U, 00H, 065H, 01H, 00H
$DGS AUX_BEG, 09EH, 0AH, 089H
$DGS AUT_VAR, _str_send_buf, 06H, 0FFFFH, 0CH, 01H, 01H, 03H
$DGS AUX_STR, 00H, 00H, 04H, 04H, 00H, 00H, 00H, 00H
$DGS BEG_BLK, ??bb00_acc_hosu_set, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 06H, 00H, 08DH
$DGS END_BLK, ??eb00_acc_hosu_set, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 0CH
$DGS BEG_BLK, ??bb01_acc_hosu_set, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 0CH, 00H, 091H
$DGS END_BLK, ??eb01_acc_hosu_set, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 0EH
$DGS BEG_BLK, ??bb02_acc_hosu_set, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 028H, 00H, 095H
$DGS END_BLK, ??eb02_acc_hosu_set, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 02FH
$DGS BEG_BLK, ??bb03_acc_hosu_set, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 031H, 00H, 099H
$DGS END_BLK, ??eb03_acc_hosu_set, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 03AH
$DGS BEG_BLK, ??bb04_acc_hosu_set, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 03FH, 00H, 09BH
$DGS BEG_BLK, ??bb05_acc_hosu_set, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 041H, 00H, 00H
$DGS AUT_VAR, _temp, 00H, 0FFFFH, 0CH, 01H, 01H, 03H
$DGS AUX_STR, 00H, 042H, 06H, 06H, 00H, 00H, 00H, 00H
$DGS END_BLK, ??eb05_acc_hosu_set, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 044H
$DGS END_BLK, ??eb04_acc_hosu_set, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 045H
$DGS END_FUN, ??ef_acc_hosu_set, U, U, 00H, 065H, 01H, 00H
$DGS AUX_END, 047H
$DGS GLV_SYM, _intp23_ACC_ready, U, U, 0E001H, 026H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 0B7H, 00H, 00H
$DGS BEG_FUN, ??bf_intp23_ACC_ready, U, U, 00H, 065H, 01H, 00H
$DGS AUX_BEG, 0EDH, 016H, 0A9H
$DGS BEG_BLK, ??bb00_intp23_ACC_ready, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 04H, 00H, 0ABH
$DGS BEG_BLK, ??bb01_intp23_ACC_ready, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 06H, 00H, 0ADH
$DGS BEG_BLK, ??bb02_intp23_ACC_ready, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 08H, 00H, 00H
$DGS END_BLK, ??eb02_intp23_ACC_ready, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 0AH
$DGS END_BLK, ??eb01_intp23_ACC_ready, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 0BH
$DGS END_BLK, ??eb00_intp23_ACC_ready, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 0CH
$DGS END_FUN, ??ef_intp23_ACC_ready, U, U, 00H, 065H, 01H, 00H
$DGS AUX_END, 0DH
$DGS GLV_SYM, _iic_mcu_read, U, U, 0CH, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 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, _system_status, U, U, 08H, 02H, 01H, 00H
$DGS AUX_STR, 02FH, 00H, 04H, 00H, 00H, 00H, 00H, 00H
$DGS GLV_SYM, _set_irq, U, U, 01H, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
$DGS GLV_SYM, _pedometer, U, U, 01H, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
$DGS GLV_SYM, _iic_mcu_read_a_byte, U, U, 0CH, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
$DGS GLV_SYM, _iic_mcu_write_a_byte, U, U, 0CH, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
$DGS GLV_SYM, _iic_mcu_bus_status, U, U, 0CH, 02H, 00H, 00H
$DGS GLV_SYM, _iic_mcu_write, U, U, 0CH, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
$DGS GLV_SYM, _@SEGAX, U, U, 00H, 02H, 00H, 00H
$DGS GLV_SYM, _renge_task_immed_add, U, U, 0CH, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
$DGS GLV_SYM, _@SEGDE, U, U, 00H, 02H, 00H, 00H
$DGS GLV_SYM, _@RTARG0, U, U, 00H, 02H, 00H, 00H
EXTRN _iic_mcu_read
EXTRN _vreg_ctr
EXTRN _system_status
EXTRN _set_irq
EXTRN _pedometer
EXTRN _iic_mcu_read_a_byte
EXTRN _iic_mcu_write_a_byte
EXTRN _iic_mcu_bus_status
EXTRN _iic_mcu_write
EXTRN _@SEGAX
EXTRN _@SEGDE
EXTRN _@RTARG0
EXTRN _renge_task_immed_add
PUBLIC _tsk_cbk_accero
PUBLIC _acc_read
PUBLIC _acc_write
PUBLIC _acc_hosu_set
PUBLIC _intp23_ACC_ready
@@BITS BSEG
@@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)
@@R_INIT CSEG UNIT64KP
@@INIT DSEG BASEP
@@DATA DSEG BASEP
@@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_F0038:
push ax ;[INF] 1, 1
movw ax,#06H ; 6 ;[INF] 3, 1
push ax ;[INF] 1, 1
mov x,#0A8H ; 168 ;[INF] 2, 1
push ax ;[INF] 1, 1
mov x,#030H ; 48 ;[INF] 2, 1
call !_iic_mcu_read ;[INF] 3, 3
addw sp,#06H ; 6 ;[INF] 2, 1
ret ;[INF] 1, 6
es_F0038:
; *** Sub-Routine Information ***
;
; $SUB bs_F0038
; CODE SIZE= 16 bytes
; End of Sub-Routines
; line 1 : /* ========================================================
; line 2 :  加速度センサ関係
; line 3 : ・データ更新完了でデータを吸い上げ手レジスタを更新、CPUに割り込み
; line 4 : ・フラグが立っていれば歩数カウント
; line 5 : ・加速度センサ割り込みからタスクを登録して下さい。I2Cの競合回避
; などがあるので)
; line 6 :
; line 7 : ======================================================== */
; line 8 : #pragma SFR
; line 9 : #pragma NOP
; line 10 : #pragma HALT
; line 11 : #pragma STOP
; line 12 : #pragma ROT
; line 13 : // rorb, rolb, rorw, rolw
; line 14 : #pragma MUL
; line 15 : #pragma BCD
; line 16 :
; line 17 : #include "incs.h"
; line 18 : #include <math.h>
; line 19 :
; line 20 : // ========================================================
; line 21 : // レジスタ名
; line 22 : #define ACC_REG_WHOAMI 0x0F
; line 23 : #define ACC_REG_CTRL1 0x20
; line 24 : #define ACC_REG_CTRL5 0x24
; line 25 : #define ACC_REG_X 0x28
; line 26 :
; line 27 : // ビット位置
; line 28 : #define ACC_bP_PM0 5
; line 29 : #define ACC_bP_DR0 3
; line 30 :
; line 31 : // ビット設定値
; line 32 : #define ACC_BITS_PM_PDN 0
; line 33 : #define ACC_BITS_PM_NORM 1
; line 34 : #define ACC_BITS_PM_LP0R5 2
; line 35 : #define ACC_BITS_PM_LP1 3
; line 36 : #define ACC_BITS_PM_LP2 4
; line 37 : #define ACC_BITS_PM_LP5 5
; line 38 : #define ACC_BITS_PM_LP10 6
; line 39 :
; line 40 : #define ACC_BITS_DR_50Hz 0
; line 41 : #define ACC_BITS_DR_100Hz 1
; line 42 : #define ACC_BITS_DR_400Hz 2
; line 43 : #define ACC_BITS_DR_1000Hz 3
; line 44 :
; line 45 : #define ACC_BITS_ALL_AXIS_ON 7
; line 46 :
; line 47 :
; line 48 : #define VREG_BITMASK_ACC_CONF_ACQ ( 1 << 0 )
; line 49 : #define VREG_BITMASK_ACC_CONF_HOSU ( 1 << 1 )
; line 50 :
; line 51 :
; line 52 :
; line 53 :
; line 54 : // ========================================================
; line 55 : task_status tsk_soft_int( );
; line 56 :
; line 57 :
; line 58 :
; line 59 : /* ========================================================
; line 60 :  ・割り込みを確認してデータを吸い上げ、レジスタに書き出します
; line 61 : ・本当であればコールバック関数を登録しておけばいいじゃんとなる
; のですが、
; line 62 : I2Cが使用中だったらとか考えると私ではそこまでできないのです。
; line 63 : ・自動歩数計とかでも結局
; line 64 : ======================================================== */
; line 65 : task_status_immed tsk_cbk_accero( )
; line 66 : { // 疑似isrから登録されます
ROM_CODE CSEG BASE
_tsk_cbk_accero:
$DGL 1,75
push hl ;[INF] 1, 1
subw sp,#06H ;[INF] 2, 1
movw hl,sp ;[INF] 3, 1
??bf_tsk_cbk_accero:
; line 67 :
; line 68 : /*
; line 69 : if(( system_status.pwr_state == OFF ) || ( system_status.pwr
; _state == BT_CHARGE ) )
; line 70 : {
; line 71 : return ( ERR_SUCCESS );
; line 72 : }
; line 73 : else
; line 74 : {
; line 75 : */
; line 76 : // 加速度センサデータレジスタへの反映
; line 77 : if( iic_mcu_read( IIC_SLA_ACCEL, ( ACC_REG_X | 0x80 ), 6
; , &vreg_ctr[VREG_C_ACC_XL] )
; line 78 : != ERR_SUCCESS )
$DGL 0,13
movw de,#loww (_vreg_ctr+69) ;[INF] 3, 1
push de ;[INF] 1, 1
movw ax,#06H ; 6 ;[INF] 3, 1
push ax ;[INF] 1, 1
mov x,#0A8H ; 168 ;[INF] 2, 1
push ax ;[INF] 1, 1
mov x,#030H ; 48 ;[INF] 2, 1
call !_iic_mcu_read ;[INF] 3, 3
addw sp,#06H ; 6 ;[INF] 2, 1
cmp0 c ;[INF] 1, 1
bz $?L0003 ;[INF] 2, 4
; line 79 : {
??bb00_tsk_cbk_accero:
; line 80 : // 加速度センサが異常になったので止める
; line 81 : vreg_ctr[VREG_C_ACC_CONFIG] &= ~( VREG_BITMASK_ACC_CONF_
; HOSU | VREG_BITMASK_ACC_CONF_ACQ );
$DGL 0,16
movw de,#loww (_vreg_ctr+64) ;[INF] 3, 1
mov a,[de] ;[INF] 1, 1
and a,#0FCH ; 252 ;[INF] 2, 1
mov [de],a ;[INF] 1, 1
; line 82 : // vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_ACCERO_ERR;
; line 83 : acc_hosu_set();
$DGL 0,18
call !_acc_hosu_set ;[INF] 3, 3
; line 84 : return ( ERR_SUCCESS ); // タスクの削除は必要
$DGL 0,19
clrw bc ;[INF] 1, 1
br $?L0002 ;[INF] 2, 3
??eb00_tsk_cbk_accero:
; line 85 : }
?L0003:
; line 86 : else
; line 87 : {
??bb01_tsk_cbk_accero:
; line 88 : // 正常時パス //
; line 89 : // 加速度更新&割り込み
; line 90 : if( (( vreg_ctr[VREG_C_ACC_CONFIG] & VREG_BITMASK_ACC_CO
; NF_ACQ ) != 0 ) &&
$DGL 0,25
mov a,!_vreg_ctr+64 ;[INF] 3, 1
and a,#01H ; 1 ;[INF] 2, 1
cmp0 a ;[INF] 1, 1
bz $?L0007 ;[INF] 2, 4
; line 91 : ( system_status.pwr_state == ON )
$DGL 0,26
cmp !_system_status,#03H ; 3 ;[INF] 4, 1
bnz $?L0007 ;[INF] 2, 4
; line 92 : )
; line 93 : {
??bb02_tsk_cbk_accero:
; line 94 : set_irq( VREG_C_IRQ1, REG_BIT_ACC_DAT_RDY );
$DGL 0,29
movw ax,#010H ; 16 ;[INF] 3, 1
push ax ;[INF] 1, 1
incw ax ;[INF] 1, 1
call !_set_irq ;[INF] 3, 3
pop ax ;[INF] 1, 1
; line 95 : // ゴミデータのカラ読み
; line 96 : if( ACC_VALID == 1 )
$DGL 0,31
push hl ;[INF] 1, 1
movw hl,#0510H ; 1296 ;[INF] 3, 1
mov1 CY,[hl].5 ;[INF] 2, 1
pop hl ;[INF] 1, 1
bnc $?L0007 ;[INF] 2, 4
; line 97 : {
??bb03_tsk_cbk_accero:
; line 98 : u8 temp[6];
; line 99 : iic_mcu_read( IIC_SLA_ACCEL, ( ACC_REG_X | 0x80
; ), 6, temp );
$DGL 0,34
movw ax,hl ;[INF] 1, 1
call !bs_F0038 ;[INF] 3, 3
??eb03_tsk_cbk_accero:
; line 100 : }
?L0007:
??eb02_tsk_cbk_accero:
; line 101 : }
; line 102 : if(( system_status.pwr_state != OFF ) &&
; line 103 : ( system_status.pwr_state != BT_CHARGE ) &&
$DGL 0,38
cmp !_system_status,#01H ; 1 ;[INF] 4, 1
bz $?L0009 ;[INF] 2, 4
cmp !_system_status,#06H ; 6 ;[INF] 4, 1
bz $?L0009 ;[INF] 2, 4
; line 104 : ( ( vreg_ctr[VREG_C_ACC_CONFIG] & VREG_BITMASK_ACC_CO
; NF_HOSU ) != 0 )
$DGL 0,39
mov a,!_vreg_ctr+64 ;[INF] 3, 1
and a,#02H ; 2 ;[INF] 2, 1
cmp0 a ;[INF] 1, 1
skz ;[INF] 2, 1
; line 105 : )
; line 106 : {
??bb04_tsk_cbk_accero:
; line 107 : DBG_LED_WIFI_2_on;
; line 108 : pedometer(); // 歩数計
$DGL 0,43
call !_pedometer ;[INF] 3, 3
; line 109 : DBG_LED_WIFI_2_off;
??eb04_tsk_cbk_accero:
; line 110 : }
?L0009:
??eb01_tsk_cbk_accero:
; line 111 : }
; line 112 : return ( ERR_SUCCESS );
$DGL 0,47
clrw bc ;[INF] 1, 1
; line 113 : }
?L0002:
$DGL 0,48
??ef_tsk_cbk_accero:
addw sp,#06H ;[INF] 2, 1
pop hl ;[INF] 1, 1
ret ;[INF] 1, 6
??ee_tsk_cbk_accero:
; line 114 :
; line 115 :
; line 116 :
; line 117 :
; line 118 :
; line 119 : /*=======================================================
; line 120 :  加速度センサ透過アクセス リード
; line 121 : ========================================================*/
; line 122 : task_status_immed acc_read( )
; line 123 : {
_acc_read:
$DGL 1,103
??bf_acc_read:
; line 124 : vreg_ctr[VREG_C_ACC_W_BUF] = iic_mcu_read_a_byte( IIC_SLA_AC
; CEL, vreg_ctr[VREG_C_ACC_R_ADRS] );
$DGL 0,2
mov x,!_vreg_ctr+65 ;[INF] 3, 1
clrb a ;[INF] 1, 1
push ax ;[INF] 1, 1
mov x,#030H ; 48 ;[INF] 2, 1
call !_iic_mcu_read_a_byte ;[INF] 3, 3
pop ax ;[INF] 1, 1
mov a,c ;[INF] 1, 1
mov !_vreg_ctr+68,a ;[INF] 3, 1
; line 125 : // vreg_ctr[ VREG_C_ACC_R_BUF ] = iic_mcu_read_a_byte( IIC_SLA_
; ACCEL, vreg_ctr[VREG_C_ACC_R_ADRS] );
; line 126 : vreg_ctr[VREG_C_IRQ1] |= REG_BIT_ACC_ACK;
$DGL 0,4
set1 !_vreg_ctr+17.3 ;[INF] 4, 2
; line 127 : if( ( vreg_ctr[VREG_C_IRQ_MASK1] & REG_BIT_ACC_ACK ) == 0 )
$DGL 0,5
mov a,!_vreg_ctr+25 ;[INF] 3, 1
and a,#08H ; 8 ;[INF] 2, 1
cmp0 a ;[INF] 1, 1
bnz $?L0013 ;[INF] 2, 4
; line 128 : {
??bb00_acc_read:
; line 129 : IRQ0_ast;
$DGL 0,7
??bb01_acc_read:
clr1 P7.6 ;[INF] 3, 2
clr1 PM7.6 ;[INF] 3, 2
??eb01_acc_read:
??eb00_acc_read:
; line 130 : }
?L0013:
; line 131 : return ( ERR_SUCCESS );
$DGL 0,9
clrw bc ;[INF] 1, 1
; line 132 : }
$DGL 0,10
??ef_acc_read:
ret ;[INF] 1, 6
??ee_acc_read:
; line 133 :
; line 134 :
; line 135 :
; line 136 : /*=========================================================
; line 137 :  加速度センサ透過アクセス ライト
; line 138 : ========================================================*/
; line 139 : task_status_immed acc_write( )
; line 140 : {
_acc_write:
$DGL 1,117
??bf_acc_write:
; line 141 : iic_mcu_write_a_byte( IIC_SLA_ACCEL, vreg_ctr[VREG_C_ACC_W_A
; DRS], vreg_ctr[VREG_C_ACC_W_BUF] );
$DGL 0,2
mov x,!_vreg_ctr+68 ;[INF] 3, 1
clrb a ;[INF] 1, 1
push ax ;[INF] 1, 1
mov x,!_vreg_ctr+67 ;[INF] 3, 1
push ax ;[INF] 1, 1
mov x,#030H ; 48 ;[INF] 2, 1
call !_iic_mcu_write_a_byte ;[INF] 3, 3
addw sp,#04H ; 4 ;[INF] 2, 1
; line 142 : vreg_ctr[VREG_C_IRQ1] |= REG_BIT_ACC_ACK;
$DGL 0,3
set1 !_vreg_ctr+17.3 ;[INF] 4, 2
; line 143 : if( ( vreg_ctr[VREG_C_IRQ_MASK1] & REG_BIT_ACC_ACK ) == 0 )
$DGL 0,4
mov a,!_vreg_ctr+25 ;[INF] 3, 1
and a,#08H ; 8 ;[INF] 2, 1
cmp0 a ;[INF] 1, 1
bnz $?L0017 ;[INF] 2, 4
; line 144 : {
??bb00_acc_write:
; line 145 : IRQ0_ast;
$DGL 0,6
??bb01_acc_write:
clr1 P7.6 ;[INF] 3, 2
clr1 PM7.6 ;[INF] 3, 2
??eb01_acc_write:
??eb00_acc_write:
; line 146 : }
?L0017:
; line 147 : return ( ERR_SUCCESS );
$DGL 0,8
clrw bc ;[INF] 1, 1
; line 148 : }
$DGL 0,9
??ef_acc_write:
ret ;[INF] 1, 6
??ee_acc_write:
; line 149 :
; line 150 :
; line 151 :
; line 152 : /*=========================================================
; line 153 :  自動歩数カウントモードにセット
; line 154 : todo 他のモードだったら止めたり、復帰させたり
; line 155 : 割り込みルーチンなどでカウント判定が必要
; line 156 : ========================================================*/
; line 157 : task_status_immed acc_hosu_set( )
; line 158 : {
_acc_hosu_set:
$DGL 1,131
push hl ;[INF] 1, 1
subw sp,#0AH ;[INF] 2, 1
movw hl,sp ;[INF] 3, 1
??bf_acc_hosu_set:
; line 159 : u8 str_send_buf[4];
; line 160 :
; line 161 : iic_mcu_read_a_byte( IIC_SLA_ACCEL, ACC_REG_WHOAMI );
$DGL 0,4
movw ax,#0FH ; 15 ;[INF] 3, 1
push ax ;[INF] 1, 1
mov x,#030H ; 48 ;[INF] 2, 1
call !_iic_mcu_read_a_byte ;[INF] 3, 3
pop ax ;[INF] 1, 1
; line 162 : if( iic_mcu_bus_status == ERR_NOSLAVE )
$DGL 0,5
cmp !_iic_mcu_bus_status,#02H ; 2 ;[INF] 4, 1
bnz $?L0021 ;[INF] 2, 4
; line 163 : {
??bb00_acc_hosu_set:
; line 164 : vreg_ctr[ VREG_C_STATUS_1 ] |= REG_BIT_ACCERO_ERR;
$DGL 0,7
set1 !_vreg_ctr+14.1 ;[INF] 4, 2
; line 165 : #ifdef _MCU_BSR_
; line 166 : // PMK23 = 1;
; line 167 : #endif
; line 168 : return ( ERR_SUCCESS ); // とりあえず、タスクは削除しなく
; てはならない
$DGL 0,11
clrw bc ;[INF] 1, 1
br $?L0020 ;[INF] 2, 3
??eb00_acc_hosu_set:
; line 169 : }else{
?L0021:
??bb01_acc_hosu_set:
; line 170 : vreg_ctr[ VREG_C_STATUS_1 ] &= ~REG_BIT_ACCERO_ERR;
$DGL 0,13
clr1 !_vreg_ctr+14.1 ;[INF] 4, 2
??eb01_acc_hosu_set:
; line 171 : }
; line 172 :
; line 173 :
; line 174 : str_send_buf[1] = 0x00; // ctrl2 HPF:normal, filterd, H
; PF for IRQ : dis/dis, HPF coeff:norm
$DGL 0,17
mov [hl+7],#00H ; str_send_buf,0 ;[INF] 3, 1
; line 175 : #ifdef _MODEL_WM0_
; line 176 : # ifdef _MODEL_WM0_TEG2_CTRC_
; line 177 : str_send_buf[2] = 0x02; // 回路が一部違う
; line 178 : # else
; line 179 :
; line 180 : str_send_buf[2] = 0x10; // 3 IRQ pol :Active HI, Dr
; ive:Pushpull,
; line 181 : /// IRQ2flg latch: auto cl
; ear after read, IRQ2 conf: IRQ( fall,shock,...)
; line 182 : /// 1 : auto cl
; ear after read, conf: data ready
; line 183 : # endif
; line 184 : #else
; line 185 : # ifdef _MODEL_CTR_JIKKI_
; line 186 : str_send_buf[2] = 0x10;
; line 187 : # else
; line 188 : str_send_buf[2] = 0x02; // 3 IRQ pol :Active HI, Dr
; ive:Pushpull,
$DGL 0,31
mov [hl+8],#02H ; str_send_buf,2 ;[INF] 3, 1
; line 189 : /// IRQ2flg latch: auto cl
; ear after read, IRQ2 conf: IRQ( fall,shock,...)
; line 190 : /// 1 : auto cl
; ear after read, conf: data ready
; line 191 : # endif
; line 192 : #endif
; line 193 : str_send_buf[3] = 0x80; // ctrl3 block update:enable, M
; SB first, scale: +-2G(default), selftest: dis
$DGL 0,36
mov [hl+9],#080H ; str_send_buf,128 ;[INF] 3, 1
; line 194 :
; line 195 : if( ( vreg_ctr[VREG_C_ACC_CONFIG] &
; line 196 : ( VREG_BITMASK_ACC_CONF_HOSU | VREG_BITMASK_ACC_CONF_A
; CQ ) ) == 0 )
$DGL 0,39
mov a,!_vreg_ctr+64 ;[INF] 3, 1
and a,#03H ; 3 ;[INF] 2, 1
cmp0 a ;[INF] 1, 1
bnz $?L0023 ;[INF] 2, 4
; line 197 : {
??bb02_acc_hosu_set:
; line 198 : #ifdef _MCU_BSR_
; line 199 : PMK23 = 1;
$DGL 0,42
set1 MK2H.7 ;[INF] 3, 2
; line 200 : #endif
; line 201 : // 完全停止
; line 202 : str_send_buf[0] =
; line 203 : ( ACC_BITS_PM_PDN << ACC_bP_PM0 | 0 << ACC_bP_DR0 |
; ACC_BITS_ALL_AXIS_ON );
$DGL 0,46
mov [hl+6],#07H ; str_send_buf,7 ;[INF] 3, 1
??eb02_acc_hosu_set:
; line 204 : }
$DGL 0,47
br $?L0024 ;[INF] 2, 3
?L0023:
; line 205 : else
; line 206 : {
??bb03_acc_hosu_set:
; line 207 : #ifdef _MCU_BSR_
; line 208 : PMK23 = 0;
$DGL 0,51
clr1 MK2H.7 ;[INF] 3, 2
; line 209 : #endif
; line 210 : // 100Hz 自動取り込み
; line 211 : str_send_buf[0] =
; line 212 : ( ACC_BITS_PM_NORM << ACC_bP_PM0
; line 213 : | ACC_BITS_DR_100Hz << ACC_bP_DR0
; line 214 : | ACC_BITS_ALL_AXIS_ON );
$DGL 0,57
mov [hl+6],#02FH ; str_send_buf,47 ;[INF] 3, 1
??eb03_acc_hosu_set:
; line 215 : }
?L0024:
; line 216 : iic_mcu_write( IIC_SLA_ACCEL, ( ACC_REG_CTRL1 | 0x80 ), 4, s
; tr_send_buf );
$DGL 0,59
movw ax,hl ;[INF] 1, 1
addw ax,#06H ;[INF] 3, 1
push ax ;[INF] 1, 1
movw ax,#04H ; 4 ;[INF] 3, 1
push ax ;[INF] 1, 1
mov x,#0A0H ; 160 ;[INF] 2, 1
push ax ;[INF] 1, 1
mov x,#030H ; 48 ;[INF] 2, 1
call !_iic_mcu_write ;[INF] 3, 3
addw sp,#06H ; 6 ;[INF] 2, 1
; line 217 :
; line 218 : // カラ読み
; line 219 : if( ACC_VALID == 1 )
$DGL 0,62
push hl ;[INF] 1, 1
movw hl,#0510H ; 1296 ;[INF] 3, 1
mov1 CY,[hl].5 ;[INF] 2, 1
pop hl ;[INF] 1, 1
bnc $?L0027 ;[INF] 2, 4
; line 220 : {
??bb04_acc_hosu_set:
; line 221 : if( system_status.pwr_state == ON )
$DGL 0,64
cmp !_system_status,#03H ; 3 ;[INF] 4, 1
bnz $?L0027 ;[INF] 2, 4
; line 222 : {
??bb05_acc_hosu_set:
; line 223 : u8 temp[6];
; line 224 : iic_mcu_read( IIC_SLA_ACCEL, ( ACC_REG_X | 0x80 ), 6
; , temp );
$DGL 0,67
movw ax,hl ;[INF] 1, 1
call !bs_F0038 ;[INF] 3, 3
??eb05_acc_hosu_set:
; line 225 : }
?L0027:
??eb04_acc_hosu_set:
; line 226 : }
; line 227 : return ( ERR_SUCCESS );
$DGL 0,70
clrw bc ;[INF] 1, 1
; line 228 : }
?L0020:
$DGL 0,71
??ef_acc_hosu_set:
addw sp,#0AH ;[INF] 2, 1
pop hl ;[INF] 1, 1
ret ;[INF] 1, 6
??ee_acc_hosu_set:
; line 229 :
; line 230 :
; line 231 :
; line 232 : /* ========================================================
; line 233 : 加速度センサ割り込み
; line 234 : I2Cが使用中かもしれないので、読み出しタスクの登録を行うのみ
; line 235 : ======================================================== */
; line 236 : __interrupt void intp23_ACC_ready( )
; line 237 : {
@@BASE CSEG BASE
_intp23_ACC_ready:
$DGL 1,165
push ax ;[INF] 1, 1
push bc ;[INF] 1, 1
push de ;[INF] 1, 1
push hl ;[INF] 1, 1
mov c,#0CH ;[INF] 2, 1
dec c ;[INF] 1, 1
dec c ;[INF] 1, 1
movw ax,_@SEGAX[c] ;[INF] 3, 1
push ax ;[INF] 1, 1
bnz $$-6 ;[INF] 2, 4
mov a,ES ;[INF] 2, 1
mov x,a ;[INF] 1, 1
mov a,CS ;[INF] 2, 1
push ax ;[INF] 1, 1
??bf_intp23_ACC_ready:
; line 238 : EI();
$DGL 0,2
ei ;[INF] 3, 4
; line 239 : if( ( vreg_ctr[VREG_C_ACC_CONFIG] & 0x03 ) != 0x00 )
$DGL 0,3
mov a,!_vreg_ctr+64 ;[INF] 3, 1
and a,#03H ; 3 ;[INF] 2, 1
cmp0 a ;[INF] 1, 1
bz $?L0036 ;[INF] 2, 4
; line 240 : {
??bb00_intp23_ACC_ready:
; line 241 : if( ( system_status.pwr_state == ON ) || ( system_status
; .pwr_state == SLEEP ) )
$DGL 0,5
cmp !_system_status,#03H ; 3 ;[INF] 4, 1
bz $?L0035 ;[INF] 2, 4
cmp !_system_status,#05H ; 5 ;[INF] 4, 1
bnz $?L0036 ;[INF] 2, 4
?L0035:
; line 242 : {
??bb01_intp23_ACC_ready:
; line 243 : if( ACC_VALID )
$DGL 0,7
movw hl,#0510H ; 1296 ;[INF] 3, 1
mov1 CY,[hl].5 ;[INF] 2, 1
bnc $?L0036 ;[INF] 2, 4
; line 244 : {
??bb02_intp23_ACC_ready:
; line 245 : renge_task_immed_add( tsk_cbk_accero );
$DGL 0,9
movw ax,#loww (_tsk_cbk_accero) ;[INF] 3, 1
call !_renge_task_immed_add ;[INF] 3, 3
??eb02_intp23_ACC_ready:
; line 246 : }
?L0036:
??eb01_intp23_ACC_ready:
; line 247 : }
??eb00_intp23_ACC_ready:
; line 248 : }
; line 249 : }
$DGL 0,13
??ef_intp23_ACC_ready:
pop ax ;[INF] 1, 1
mov CS,a ;[INF] 2, 1
mov a,x ;[INF] 1, 1
mov ES,a ;[INF] 2, 1
movw de,#_@SEGAX ;[INF] 3, 1
mov c,#06H ;[INF] 2, 1
pop ax ;[INF] 1, 1
movw [de],ax ;[INF] 1, 1
incw de ;[INF] 1, 1
incw de ;[INF] 1, 1
dec c ;[INF] 1, 1
bnz $$-5 ;[INF] 2, 4
pop hl ;[INF] 1, 1
pop de ;[INF] 1, 1
pop bc ;[INF] 1, 1
pop ax ;[INF] 1, 1
reti ;[INF] 2, 6
??ee_intp23_ACC_ready:
@@CODEL CSEG
END
; *** Code Information ***
;
; $FILE C:\78k_data\yav-mcu-basara\branches\0.10(fix)\accero.c
;
; $FUNC tsk_cbk_accero(66)
; bc=(void)
; CODE SIZE= 104 bytes, CLOCK_SIZE= 103 clocks, STACK_SIZE= 22 bytes
;
; $CALL iic_mcu_read(78)
; bc=(int:ax, int:[sp+4], int:[sp+6], pointer:[sp+8])
;
; $CALL acc_hosu_set(83)
; bc=(void)
;
; $CALL set_irq(94)
; void=(int:ax, int:[sp+4])
;
; $CALL iic_mcu_read(99)
; bc=(int:ax, int:[sp+4], int:[sp+6], pointer:[sp+8])
;
; $CALL pedometer(108)
; void=(void)
;
; $FUNC acc_read(123)
; bc=(void)
; CODE SIZE= 35 bytes, CLOCK_SIZE= 30 clocks, STACK_SIZE= 6 bytes
;
; $CALL iic_mcu_read_a_byte(124)
; bc=(int:ax, int:[sp+4])
;
; $FUNC acc_write(140)
; bc=(void)
; CODE SIZE= 36 bytes, CLOCK_SIZE= 30 clocks, STACK_SIZE= 8 bytes
;
; $CALL iic_mcu_write_a_byte(141)
; bc=(int:ax, int:[sp+4], int:[sp+6])
;
; $FUNC acc_hosu_set(158)
; bc=(void)
; CODE SIZE= 107 bytes, CLOCK_SIZE= 96 clocks, STACK_SIZE= 26 bytes
;
; $CALL iic_mcu_read_a_byte(161)
; bc=(int:ax, int:[sp+4])
;
; $CALL iic_mcu_write(216)
; bc=(int:ax, int:[sp+4], int:[sp+6], pointer:[sp+8])
;
; $CALL iic_mcu_read(224)
; bc=(int:ax, int:[sp+4], int:[sp+6], pointer:[sp+8])
;
; $FUNC intp23_ACC_ready(237)
; void=(void)
; CODE SIZE= 80 bytes, CLOCK_SIZE= 73 clocks, STACK_SIZE= 26 bytes
;
; $CALL renge_task_immed_add(245)
; bc=(pointer:ax)
; Target chip : uPD79F0104
; Device file : E1.00b

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,920 @@
; 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 i2c_ctr.c
; In-file : i2c_ctr.c
; Asm-file : inter_asm\i2c_ctr.asm
; Para-file :
$PROCESSOR(9F0104)
$DEBUG
$NODEBUGA
$KANJICODE SJIS
$TOL_INF 03FH, 0210H, 00H, 00H, 00H, 00H, 00H
$DGS FIL_NAM, .file, 07CH, 0FFFEH, 03FH, 067H, 01H, 00H
$DGS AUX_FIL, i2c_ctr.c
$DGS MOD_NAM, i2c_ctr, 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 STA_SYM, _lpf_coeff, U, U, 05002H, 03H, 01H, 03H
$DGS AUX_STR, 00H, 00H, 02FH, 02FH, 00H, 00H, 00H, 00H
$DGS GLV_SYM, _int_iic_ctr, U, U, 0E001H, 026H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 070H, 00H, 00H
$DGS BEG_FUN, ??bf_int_iic_ctr, U, U, 00H, 065H, 01H, 00H
$DGS AUX_BEG, 041H, 016H, 01EH
$DGS STA_SYM, _state, ?L0003, U, 0CH, 03H, 00H, 00H
$DGS STA_SYM, _reg_adrs, ?L0004, U, 0CH, 03H, 00H, 00H
$DGS STA_SYM, _reg_adrs_internal, ?L0005, U, 0CH, 03H, 00H, 00H
$DGS STA_SYM, _tx_buf, ?L0006, U, 0CH, 03H, 00H, 00H
$DGS REG_VAR, _rx_buf, 06H, 0FFFFH, 010CH, 04H, 00H, 00H
$DGS BEG_BLK, ??bb00_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 0CH, 00H, 020H
$DGS BEG_BLK, ??bb01_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 014H, 00H, 022H
$DGS BEG_BLK, ??bb02_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 015H, 00H, 026H
$DGS END_BLK, ??eb02_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 015H
$DGS BEG_BLK, ??bb03_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 01BH, 00H, 028H
$DGS BEG_BLK, ??bb04_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 01CH, 00H, 02CH
$DGS END_BLK, ??eb04_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 01CH
$DGS BEG_BLK, ??bb05_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 01DH, 00H, 036H
$DGS END_BLK, ??eb05_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 01DH
$DGS END_BLK, ??eb03_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 01EH
$DGS END_BLK, ??eb01_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 01FH
$DGS END_BLK, ??eb00_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 026H
$DGS BEG_BLK, ??bb06_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 02AH, 00H, 03AH
$DGS END_BLK, ??eb06_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 030H
$DGS BEG_BLK, ??bb07_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 033H, 00H, 03CH
$DGS BEG_BLK, ??bb08_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 037H, 00H, 042H
$DGS END_BLK, ??eb08_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 03AH
$DGS END_BLK, ??eb07_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 03BH
$DGS BEG_BLK, ??bb09_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 03EH, 00H, 044H
$DGS BEG_BLK, ??bb0A_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 04CH, 00H, 048H
$DGS END_BLK, ??eb0A_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 04EH
$DGS BEG_BLK, ??bb0B_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 050H, 00H, 04CH
$DGS END_BLK, ??eb0B_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 052H
$DGS BEG_BLK, ??bb0C_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 059H, 00H, 04EH
$DGS BEG_BLK, ??bb0D_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 05CH, 00H, 052H
$DGS END_BLK, ??eb0D_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 05FH
$DGS BEG_BLK, ??bb0E_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 061H, 00H, 058H
$DGS END_BLK, ??eb0E_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 067H
$DGS END_BLK, ??eb0C_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 068H
$DGS BEG_BLK, ??bb0F_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 06AH, 00H, 05CH
$DGS END_BLK, ??eb0F_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 06DH
$DGS BEG_BLK, ??bb10_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 071H, 00H, 060H
$DGS END_BLK, ??eb10_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 074H
$DGS BEG_BLK, ??bb11_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 076H, 00H, 064H
$DGS END_BLK, ??eb11_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 07AH
$DGS BEG_BLK, ??bb12_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 07EH, 00H, 068H
$DGS END_BLK, ??eb12_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 080H
$DGS BEG_BLK, ??bb13_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 083H, 00H, 00H
$DGS END_BLK, ??eb13_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 085H
$DGS END_BLK, ??eb09_int_iic_ctr, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 087H
$DGS END_FUN, ??ef_int_iic_ctr, U, U, 00H, 065H, 01H, 00H
$DGS AUX_END, 088H
$DGS GLV_SYM, _IIC_ctr_Init, U, U, 01H, 026H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 076H, 00H, 00H
$DGS BEG_FUN, ??bf_IIC_ctr_Init, U, U, 00H, 065H, 01H, 00H
$DGS AUX_BEG, 0CEH, 00H, 076H
$DGS END_FUN, ??ef_IIC_ctr_Init, U, U, 00H, 065H, 01H, 00H
$DGS AUX_END, 02CH
$DGS GLV_SYM, _IIC_ctr_Stop, U, U, 01H, 026H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 07CH, 00H, 00H
$DGS BEG_FUN, ??bf_IIC_ctr_Stop, U, U, 00H, 065H, 01H, 00H
$DGS AUX_BEG, 0FFH, 00H, 07CH
$DGS END_FUN, ??ef_IIC_ctr_Stop, U, U, 00H, 065H, 01H, 00H
$DGS AUX_END, 04H
$DGS GLV_SYM, _iic_burst_state, U, U, 0CH, 026H, 00H, 00H
$DGS GLV_SYM, _@SEGAX, U, U, 00H, 02H, 00H, 00H
$DGS GLV_SYM, _irq_readed, U, U, 034CH, 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, _hosu_read_end, U, U, 01H, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
$DGS GLV_SYM, _rtc_unlock, U, U, 01H, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
$DGS GLV_SYM, _vreg_ctr_read, U, U, 0CH, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
$DGS GLV_SYM, _vreg_ctr_after_read, U, U, 01H, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
$DGS GLV_SYM, _vreg_ctr_write, U, U, 01H, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
$DGS GLV_SYM, _@SEGDE, U, U, 00H, 02H, 00H, 00H
$DGS GLV_SYM, _@RTARG0, U, U, 00H, 02H, 00H, 00H
EXTRN _@SEGAX
EXTRN _@SEGDE
EXTRN _@RTARG0
EXTRN _vreg_ctr
EXTRN _hosu_read_end
EXTRN _rtc_unlock
EXTRN _vreg_ctr_read
EXTRN _vreg_ctr_after_read
EXTRN _vreg_ctr_write
EXTBIT _irq_readed
PUBLIC _iic_burst_state
PUBLIC _int_iic_ctr
PUBLIC _IIC_ctr_Init
PUBLIC _IIC_ctr_Stop
@@BITS BSEG
@@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)
@@R_INIT CSEG UNIT64KP
DB 00H ; 0
DB (1)
@@INIT DSEG BASEP
?L0003: DS (1)
DS (1)
@@DATA DSEG BASEP
_iic_burst_state: DS (1)
?L0004: DS (1)
?L0005: DS (1)
?L0006: 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
; line 1 : /* ========================================================
; line 2 : 対SoC 新規チャンネル I2C通信
; line 3 : 藤田@開技.nintendo
; line 4 : '09 Apr
; line 5 : ======================================================== */
; line 6 : #include "incs.h"
; line 7 : #include "accero.h"
; line 8 :
; line 9 : #ifdef _MCU_BSR_
; line 10 : // #ifdef _MODEL_TS0_ || _MODEL_WM0_
; line 11 :
; line 12 : // ワーキングモデルはI2Cが逆
; line 13 : // TEGは回路図でテレコ
; line 14 : #define ACKD ACKD1
; line 15 : #define ACKE ACKE1
; line 16 : #define COI COI1
; line 17 : #define IICAEN IICA1EN
; line 18 : #define IICRSV IICRSV1
; line 19 : #define IICA IICA1
; line 20 : #define IICAIF IICAIF1
; line 21 : #define IICAMK IICAMK1
; line 22 : #define IICAPR0 IICAPR11
; line 23 : #define IICAPR1 IICAPR01
; line 24 : #define IICCTL0 IICCTL10
; line 25 : #define IICE IICE1
; line 26 : #define IICF IICF1
; line 27 : #define IICS IICS1
; line 28 : #define IICWH IICWH1
; line 29 : #define IICWL IICWL1
; line 30 : #define LREL LREL1
; line 31 : #define SPD SPD1
; line 32 : #define SPIE SPIE1
; line 33 : #define STCEN STCEN1
; line 34 : #define STD STD1
; line 35 : #define SVA SVA1
; line 36 : #define WREL WREL1
; line 37 : #define WTIM WTIM1
; line 38 : #define TRC TRC1
; line 39 : #define SMC SMC1
; line 40 : #define DFC DFC1
; line 41 :
; line 42 :
; line 43 : #endif
; line 44 :
; line 45 : // ==============================================
; line 46 : extern bit irq_readed; // いずれかのIRQレジスタが
; 読まれた
; line 47 :
; line 48 : u8 iic_burst_state;
; line 49 :
; line 50 :
; line 51 : /* ========================================================
; line 52 : ======================================================== */
; line 53 : enum
; line 54 : {
; line 55 : IIC_IDLE = 0,
; line 56 : IIC_RCV_REG_ADRS,
; line 57 : IIC_TX_OR_RX,
; line 58 : IIC_TX,
; line 59 : IIC_RX
; line 60 : };
; line 61 :
; line 62 :
; line 63 : // 1バイト送受の度に割り込みが発生するバージョン
; line 64 : __interrupt void int_iic_ctr( )
; line 65 : {
@@BASE CSEG BASE
_int_iic_ctr:
$DGL 1,21
push ax ;[INF] 1, 1
push bc ;[INF] 1, 1
push de ;[INF] 1, 1
push hl ;[INF] 1, 1
mov c,#0CH ;[INF] 2, 1
dec c ;[INF] 1, 1
dec c ;[INF] 1, 1
movw ax,_@SEGAX[c] ;[INF] 3, 1
push ax ;[INF] 1, 1
bnz $$-6 ;[INF] 2, 4
mov a,ES ;[INF] 2, 1
mov x,a ;[INF] 1, 1
mov a,CS ;[INF] 2, 1
push ax ;[INF] 1, 1
??bf_int_iic_ctr:
; line 66 : static u8 state = IIC_IDLE;
; line 67 : static u8 reg_adrs;
; line 68 : static u8 reg_adrs_internal;
; line 69 : static u8 tx_buf;
; line 70 : u8 rx_buf;
; line 71 :
; line 72 : EI();
$DGL 0,8
ei ;[INF] 3, 4
; line 73 :
; line 74 : // 読み出し終了
; line 75 : if( !ACKD ) // 割り込み要因はNAKデータ送信
; の最後)
$DGL 0,11
push hl ;[INF] 1, 1
movw hl,#0541H ; 1345 ;[INF] 3, 1
mov1 CY,[hl].2 ;[INF] 2, 1
pop hl ;[INF] 1, 1
bc $?L0007 ;[INF] 2, 4
; line 76 : {
??bb00_int_iic_ctr:
; line 77 : state = IIC_IDLE;
$DGL 0,13
clrb !?L0003 ; state ;[INF] 3, 1
; line 78 : SPIE = 0;
$DGL 0,14
clr1 !IICCTL01.4 ;[INF] 4, 2
; line 79 : LREL = 1;
$DGL 0,15
set1 !IICCTL01.6 ;[INF] 4, 2
; line 80 :
; line 81 : // レジスタリードで、割り込みピンをネゲート
; line 82 : // まだ読まれてない割り込みがあれば、再度アサート
; line 83 : if( irq_readed )
$DGL 0,19
bf _irq_readed,$?L0011 ;[INF] 4, 5
; line 84 : {
??bb01_int_iic_ctr:
; line 85 : IRQ0_neg;
$DGL 0,21
??bb02_int_iic_ctr:
set1 PM7.6 ;[INF] 3, 2
??eb02_int_iic_ctr:
; line 86 : irq_readed = 0;
$DGL 0,22
clr1 _irq_readed ;[INF] 3, 2
; line 87 : if( !( ( vreg_ctr[VREG_C_IRQ0] == 0 )
; line 88 : && ( vreg_ctr[VREG_C_IRQ1] == 0 )
; line 89 : && ( vreg_ctr[VREG_C_IRQ2] == 0 )
; line 90 : && ( vreg_ctr[VREG_C_IRQ3] == 0 ) ) )
$DGL 0,26
cmp0 !_vreg_ctr+16 ;[INF] 3, 1
bnz $?L0013 ;[INF] 2, 4
cmp0 !_vreg_ctr+17 ;[INF] 3, 1
bnz $?L0013 ;[INF] 2, 4
cmp0 !_vreg_ctr+18 ;[INF] 3, 1
bnz $?L0013 ;[INF] 2, 4
cmp0 !_vreg_ctr+19 ;[INF] 3, 1
bz $?L0011 ;[INF] 2, 4
?L0013:
; line 91 : {
??bb03_int_iic_ctr:
; line 92 : while( !IRQ0 ){;} // 時間稼ぎ不要かも
$DGL 0,28
bt P7.6,$?L0015 ;[INF] 4, 5
??bb04_int_iic_ctr:
??eb04_int_iic_ctr:
br $?L0013 ;[INF] 2, 3
?L0015:
; line 93 : IRQ0_ast;
$DGL 0,29
??bb05_int_iic_ctr:
clr1 P7.6 ;[INF] 3, 2
clr1 PM7.6 ;[INF] 3, 2
??eb05_int_iic_ctr:
??eb03_int_iic_ctr:
; line 94 : }
?L0011:
??eb01_int_iic_ctr:
; line 95 : }
; line 96 :
; line 97 : // 歩数計読み出し終了
; line 98 : hosu_read_end( );
$DGL 0,34
call !_hosu_read_end ;[INF] 3, 3
; line 99 : rtc_unlock( );
$DGL 0,35
call !_rtc_unlock ;[INF] 3, 3
; line 100 : iic_burst_state = 0;
$DGL 0,36
clrb !_iic_burst_state ;[INF] 3, 1
; line 101 : return;
$DGL 0,37
br !?L0023 ;[INF] 3, 3
??eb00_int_iic_ctr:
; line 102 : }
?L0007:
; line 103 :
; line 104 : if( SPD ) // 割り込み要因はストップコンディ
; ション
$DGL 0,40
push hl ;[INF] 1, 1
movw hl,#0541H ; 1345 ;[INF] 3, 1
mov1 CY,[hl].0 ;[INF] 2, 1
pop hl ;[INF] 1, 1
bnc $?L0016 ;[INF] 2, 4
; line 105 : // 通信の最後。↑の !ACKD に来た
; ときは割り込み来ない (SPIE = 0 のため )
; line 106 : {
??bb06_int_iic_ctr:
; line 107 : state = IIC_IDLE;
$DGL 0,43
clrb !?L0003 ; state ;[INF] 3, 1
; line 108 : SPIE = 0;
$DGL 0,44
clr1 !IICCTL01.4 ;[INF] 4, 2
; line 109 : // I2C終了時に何かする物 //
; line 110 : rtc_unlock( );
$DGL 0,46
call !_rtc_unlock ;[INF] 3, 3
; line 111 : return;
$DGL 0,47
br !?L0023 ;[INF] 3, 3
??eb06_int_iic_ctr:
; line 112 : }
?L0016:
; line 113 :
; line 114 : if( STD ) // 割り込み要因:スタートコンディ
; ション
$DGL 0,50
push hl ;[INF] 1, 1
movw hl,#0541H ; 1345 ;[INF] 3, 1
mov1 CY,[hl].1 ;[INF] 2, 1
pop hl ;[INF] 1, 1
bnc $?L0020 ;[INF] 2, 4
; line 115 : {
??bb07_int_iic_ctr:
; line 116 : if( ( state == IIC_TX ) || ( state == IIC_RX )
; line 117 : || ( state == IIC_RCV_REG_ADRS )
$DGL 0,53
cmp !?L0003,#03H ; state,3 ;[INF] 4, 1
bz $?L0022 ;[INF] 2, 4
cmp !?L0003,#04H ; state,4 ;[INF] 4, 1
bz $?L0022 ;[INF] 2, 4
cmp !?L0003,#01H ; state,1 ;[INF] 4, 1
sknz ;[INF] 2, 1
?L0022:
; line 118 : )
; line 119 : {
??bb08_int_iic_ctr:
; line 120 : state = IIC_IDLE;
$DGL 0,56
clrb !?L0003 ; state ;[INF] 3, 1
??eb08_int_iic_ctr:
; line 121 : // no break //
; line 122 : }
?L0020:
??eb07_int_iic_ctr:
; line 123 : }
; line 124 :
; line 125 : switch ( state )
$DGL 0,61
mov x,!?L0003 ; state ;[INF] 3, 1
clrb a ;[INF] 1, 1
onew bc ;[INF] 1, 1
subw ax,#00H ; 0 ;[INF] 3, 1
bz $?L0024 ;[INF] 2, 4
subw ax,bc ;[INF] 1, 1
bz $?L0025 ;[INF] 2, 4
subw ax,bc ;[INF] 1, 1
bz $?L0026 ;[INF] 2, 4
br $?L0033 ;[INF] 2, 3
; line 126 : {
??bb09_int_iic_ctr:
; line 127 : case ( IIC_IDLE ):
?L0024:
; line 128 : // 自局呼び出しに応答。
; line 129 : // 初期化など
; line 130 : SPIE = 1;
$DGL 0,66
set1 !IICCTL01.4 ;[INF] 4, 2
; line 131 : state = IIC_RCV_REG_ADRS;
$DGL 0,67
oneb !?L0003 ; state ;[INF] 3, 1
; line 132 : WREL = 1; // ウェイト解除
$DGL 0,68
set1 !IICCTL01.5 ;[INF] 4, 2
; line 133 : break;
$DGL 0,69
br !?L0023 ;[INF] 3, 3
; line 134 :
; line 135 : case ( IIC_RCV_REG_ADRS ): // 2バイト目(レジスタアドレス)
; 受信後に来る
?L0025:
; line 136 : // レジスタアドレス受信
; line 137 : reg_adrs = IICA;
$DGL 0,73
mov a,!IICA1 ;[INF] 3, 1
mov !?L0004,a ; reg_adrs ;[INF] 3, 1
; line 138 : tx_buf = vreg_ctr_read( reg_adrs ); // データの準備を
; しておく
$DGL 0,74
mov x,!?L0004 ; reg_adrs ;[INF] 3, 1
clrb a ;[INF] 1, 1
call !_vreg_ctr_read ;[INF] 3, 3
mov a,c ;[INF] 1, 1
mov !?L0006,a ; tx_buf ;[INF] 3, 1
; line 139 : if( reg_adrs != VREG_C_INFO )
$DGL 0,75
cmp !?L0004,#07FH ; reg_adrs,127 ;[INF] 4, 1
bz $?L0030 ;[INF] 2, 4
; line 140 : {
??bb0A_int_iic_ctr:
; line 141 : state = IIC_TX_OR_RX;
$DGL 0,77
mov !?L0003,#02H ; state,2 ;[INF] 4, 1
??eb0A_int_iic_ctr:
; line 142 : }
$DGL 0,78
br $?L0031 ;[INF] 2, 3
?L0030:
; line 143 : else
; line 144 : {
??bb0B_int_iic_ctr:
; line 145 : state = IIC_IDLE;
$DGL 0,81
clrb !?L0003 ; state ;[INF] 3, 1
??eb0B_int_iic_ctr:
; line 146 : }
?L0031:
; line 147 : WREL = 1;
$DGL 0,83
set1 !IICCTL01.5 ;[INF] 4, 2
; line 148 : break;
$DGL 0,84
br $?L0023 ;[INF] 2, 3
; line 149 :
; line 150 : case ( IIC_TX_OR_RX ): // ↑の次に来る割り込み。STなら送
; 信準備、データが来たら書き込まれ
?L0026:
; line 151 : // if( TRC ){ // 送信方向フラグ で区別するのは、割り
; 込み遅延時に不具合が起こりえる
; line 152 : if( STD )
$DGL 0,88
push hl ;[INF] 1, 1
movw hl,#0541H ; 1345 ;[INF] 3, 1
mov1 CY,[hl].1 ;[INF] 2, 1
pop hl ;[INF] 1, 1
bnc $?L0032 ;[INF] 2, 4
; line 153 : { // スタートコンディション検出フラ
; グ
??bb0C_int_iic_ctr:
; line 154 : // リードされる
; line 155 : if( COI )
$DGL 0,91
push hl ;[INF] 1, 1
movw hl,#0541H ; 1345 ;[INF] 3, 1
mov1 CY,[hl].4 ;[INF] 2, 1
pop hl ;[INF] 1, 1
bnc $?L0034 ;[INF] 2, 4
; line 156 : { // アドレス一致フラグ
??bb0D_int_iic_ctr:
; line 157 : state = IIC_TX;
$DGL 0,93
mov !?L0003,#03H ; state,3 ;[INF] 4, 1
??eb0D_int_iic_ctr:
; line 158 : // no break, no return //
; line 159 : }
$DGL 0,95
br $?L0033 ;[INF] 2, 3
?L0034:
; line 160 : else
; line 161 : {
??bb0E_int_iic_ctr:
; line 162 : // リスタートで違うデバイスが呼ばれた!
; line 163 : state = IIC_IDLE; // 終了処理
$DGL 0,99
clrb !?L0003 ; state ;[INF] 3, 1
; line 164 : SPIE = 0;
$DGL 0,100
clr1 !IICCTL01.4 ;[INF] 4, 2
; line 165 : LREL = 1; // ウェイト解除?
$DGL 0,101
set1 !IICCTL01.6 ;[INF] 4, 2
; line 166 : return;
$DGL 0,102
br $?L0023 ;[INF] 2, 3
??eb0E_int_iic_ctr:
; line 167 : }
; line 168 : }
??eb0C_int_iic_ctr:
?L0032:
; line 169 : else
; line 170 : {
??bb0F_int_iic_ctr:
; line 171 : state = IIC_RX; // データ1バイト受信の割り込みだ
; った
$DGL 0,107
mov !?L0003,#04H ; state,4 ;[INF] 4, 1
??eb0F_int_iic_ctr:
; line 172 : // no break, no return //
; line 173 : }
?L0033:
; line 174 :
; line 175 : default: // バースト R/W でここが何回も呼
; ばれることになる
; line 176 : if( state == IIC_TX )
$DGL 0,112
cmp !?L0003,#03H ; state,3 ;[INF] 4, 1
bnz $?L0036 ;[INF] 2, 4
; line 177 : { // 送信
??bb10_int_iic_ctr:
; line 178 : IICA = tx_buf;
$DGL 0,114
mov a,!?L0006 ; tx_buf ;[INF] 3, 1
mov !IICA1,a ;[INF] 3, 1
; line 179 : vreg_ctr_after_read( reg_adrs ); // 読んだらクリア
; などの処理
$DGL 0,115
mov x,!?L0004 ; reg_adrs ;[INF] 3, 1
clrb a ;[INF] 1, 1
call !_vreg_ctr_after_read ;[INF] 3, 3
??eb10_int_iic_ctr:
; line 180 : }
$DGL 0,116
br $?L0037 ;[INF] 2, 3
?L0036:
; line 181 : else
; line 182 : { // 受信
??bb11_int_iic_ctr:
; line 183 : rx_buf = IICA;
$DGL 0,119
mov a,!IICA1 ;[INF] 3, 1
mov l,a ;[INF] 1, 1
; line 184 : vreg_ctr_write( reg_adrs, rx_buf );
$DGL 0,120
movw ax,hl ;[INF] 1, 1
clrb a ;[INF] 1, 1
push ax ;[INF] 1, 1
mov x,!?L0004 ; reg_adrs ;[INF] 3, 1
call !_vreg_ctr_write ;[INF] 3, 3
pop ax ;[INF] 1, 1
; line 185 : WREL = 1;
$DGL 0,121
set1 !IICCTL01.5 ;[INF] 4, 2
??eb11_int_iic_ctr:
; line 186 : }
?L0037:
; line 187 : //
; line 188 : if( ( reg_adrs != VREG_C_ACC_HOSU_HIST )
; line 189 : && ( reg_adrs != VREG_C_INFO ) )
$DGL 0,125
cmp !?L0004,#04FH ; reg_adrs,79 ;[INF] 4, 1
bz $?L0038 ;[INF] 2, 4
cmp !?L0004,#07FH ; reg_adrs,127 ;[INF] 4, 1
skz ;[INF] 2, 1
; line 190 : { // この二つのレジスタは特殊なアクセス方法をする。アク
; セスポインタを進めない。
??bb12_int_iic_ctr:
; line 191 : reg_adrs += 1;
$DGL 0,127
inc !?L0004 ; reg_adrs ;[INF] 3, 2
??eb12_int_iic_ctr:
; line 192 : }
?L0038:
; line 193 :
; line 194 : if( state == IIC_TX )
$DGL 0,130
cmp !?L0003,#03H ; state,3 ;[INF] 4, 1
bnz $?L0023 ;[INF] 2, 4
; line 195 : { // さらにつぎに送るデータの準備だ
; けシテオク。SPが来て使われないかもしれない
??bb13_int_iic_ctr:
; line 196 : tx_buf = vreg_ctr_read( reg_adrs );
$DGL 0,132
mov x,!?L0004 ; reg_adrs ;[INF] 3, 1
clrb a ;[INF] 1, 1
call !_vreg_ctr_read ;[INF] 3, 3
mov a,c ;[INF] 1, 1
mov !?L0006,a ; tx_buf ;[INF] 3, 1
??eb13_int_iic_ctr:
; line 197 : }
; line 198 : break;
??eb09_int_iic_ctr:
; line 199 : }
?L0023:
; line 200 : }
$DGL 0,136
??ef_int_iic_ctr:
pop ax ;[INF] 1, 1
mov CS,a ;[INF] 2, 1
mov a,x ;[INF] 1, 1
mov ES,a ;[INF] 2, 1
movw de,#_@SEGAX ;[INF] 3, 1
mov c,#06H ;[INF] 2, 1
pop ax ;[INF] 1, 1
movw [de],ax ;[INF] 1, 1
incw de ;[INF] 1, 1
incw de ;[INF] 1, 1
dec c ;[INF] 1, 1
bnz $$-5 ;[INF] 2, 4
pop hl ;[INF] 1, 1
pop de ;[INF] 1, 1
pop bc ;[INF] 1, 1
pop ax ;[INF] 1, 1
reti ;[INF] 2, 6
??ee_int_iic_ctr:
; line 201 :
; line 202 :
; line 203 :
; line 204 : // ========================================================
; line 205 : void IIC_ctr_Init( void )
; line 206 : {
ROM_CODE CSEG BASE
_IIC_ctr_Init:
$DGL 1,112
??bf_IIC_ctr_Init:
; line 207 :
; line 208 : IICAEN = 1;
$DGL 0,3
set1 !PER3.0 ;[INF] 4, 2
; line 209 :
; line 210 : IICE = 0; /* IICA disable */
$DGL 0,5
clr1 !IICCTL01.7 ;[INF] 4, 2
; line 211 :
; line 212 : IICAMK = 1; /* INTIICA disable */
$DGL 0,7
set1 MK2H.3 ;[INF] 3, 2
; line 213 : IICAIF = 0; /* clear INTIICA interrupt flag
; */
$DGL 0,8
clr1 IF2H.3 ;[INF] 3, 2
; line 214 :
; line 215 : IICAPR0 = 1; /* set INTIICA high priority */
$DGL 0,10
set1 PR12H.3 ;[INF] 3, 2
; line 216 : IICAPR1 = 0; /* set INTIICA high priority */
$DGL 0,11
clr1 PR02H.3 ;[INF] 3, 2
; line 217 :
; line 218 : #ifdef _MODEL_TEG2_
; line 219 : P6 &= ~0x3;
; line 220 : #else
; line 221 : P20 &= ~0x3;
$DGL 0,16
mov a,!P20 ;[INF] 3, 1
and a,#0FCH ; 252 ;[INF] 2, 1
mov !P20,a ;[INF] 3, 1
; line 222 : #endif
; line 223 :
; line 224 : SVA = IIC_C_SLAVEADDRESS;
$DGL 0,19
mov !SVA1,#04AH ; 74 ;[INF] 4, 1
; line 225 : IICF = 0x01;
$DGL 0,20
oneb !IICF1 ;[INF] 3, 1
; line 226 :
; line 227 : STCEN = 1; // リスタートの許可
$DGL 0,22
set1 !IICF1.1 ;[INF] 4, 2
; line 228 : IICRSV = 1; // 通信予約をさせない:スレーブに
; 徹する
$DGL 0,23
set1 !IICF1.0 ;[INF] 4, 2
; line 229 :
; line 230 : SPIE = 0; // ストップコンディションでの割り
; 込みを禁止
$DGL 0,25
clr1 !IICCTL01.4 ;[INF] 4, 2
; line 231 : WTIM = 1; // 自動でACKを返した後clkをLに固
; 定する
$DGL 0,26
set1 !IICCTL01.3 ;[INF] 4, 2
; line 232 : ACKE = 1; // ダメCPUは無視して次の通信をは
; じめるかもしれないんで早くclkを開放しないといけない
$DGL 0,27
set1 !IICCTL01.2 ;[INF] 4, 2
; line 233 :
; line 234 : IICWH = 5;
$DGL 0,29
mov !IICWH1,#05H ; 5 ;[INF] 4, 1
; line 235 : IICWL = 10; // L期間の長さ
$DGL 0,30
mov !IICWL1,#0AH ; 10 ;[INF] 4, 1
; line 236 :
; line 237 : SMC = 1; // 高速モード
$DGL 0,32
set1 !IICCTL11.3 ;[INF] 4, 2
; line 238 : DFC = 1; // デジタルフィルタon (@fast mod
; e)
$DGL 0,33
set1 !IICCTL11.2 ;[INF] 4, 2
; line 239 :
; line 240 : IICAMK = 0; // 割り込みを許可
$DGL 0,35
clr1 MK2H.3 ;[INF] 3, 2
; line 241 :
; line 242 : IICE = 1;
$DGL 0,37
set1 !IICCTL01.7 ;[INF] 4, 2
; line 243 :
; line 244 : #ifdef _MODEL_TEG2_
; line 245 : PM6 &= ~0x3; /* set clock pin for IICA */
; line 246 : #else
; line 247 : PM20 &= ~0x3; /* set clock pin for IICA */
$DGL 0,42
mov a,!PM20 ;[INF] 3, 1
and a,#0FCH ; 252 ;[INF] 2, 1
mov !PM20,a ;[INF] 3, 1
; line 248 : #endif
; line 249 : }
$DGL 0,44
??ef_IIC_ctr_Init:
ret ;[INF] 1, 6
??ee_IIC_ctr_Init:
; line 250 :
; line 251 :
; line 252 :
; line 253 : // ========================================================
; line 254 : void IIC_ctr_Stop( void )
; line 255 : {
_IIC_ctr_Stop:
$DGL 1,118
??bf_IIC_ctr_Stop:
; line 256 : IICE = 0; /* IICA disable */
$DGL 0,2
clr1 !IICCTL01.7 ;[INF] 4, 2
; line 257 : IICAEN = 0;
$DGL 0,3
clr1 !PER3.0 ;[INF] 4, 2
; line 258 : }
$DGL 0,4
??ef_IIC_ctr_Stop:
ret ;[INF] 1, 6
??ee_IIC_ctr_Stop:
@@CODEL CSEG
END
; *** Code Information ***
;
; $FILE C:\78k_data\yav-mcu-basara\branches\0.10(fix)\i2c_ctr.c
;
; $FUNC int_iic_ctr(65)
; void=(void)
; CODE SIZE= 355 bytes, CLOCK_SIZE= 278 clocks, STACK_SIZE= 28 bytes
;
; $CALL hosu_read_end(98)
; void=(void)
;
; $CALL rtc_unlock(99)
; void=(void)
;
; $CALL rtc_unlock(110)
; void=(void)
;
; $CALL vreg_ctr_read(138)
; bc=(int:ax)
;
; $CALL vreg_ctr_after_read(179)
; void=(int:ax)
;
; $CALL vreg_ctr_write(184)
; void=(int:ax, int:[sp+4])
;
; $CALL vreg_ctr_read(196)
; bc=(int:ax)
;
; $FUNC IIC_ctr_Init(206)
; void=(void)
; CODE SIZE= 87 bytes, CLOCK_SIZE= 46 clocks, STACK_SIZE= 0 bytes
;
; $FUNC IIC_ctr_Stop(255)
; void=(void)
; CODE SIZE= 9 bytes, CLOCK_SIZE= 10 clocks, STACK_SIZE= 0 bytes
; Target chip : uPD79F0104
; Device file : E1.00b

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,754 @@
; 78K0R C Compiler V2.10 Assembler Source Date:13 Jun 2010 Time:19:31:24
; 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 i2c_twl.c
; In-file : i2c_twl.c
; Asm-file : inter_asm\i2c_twl.asm
; Para-file :
$PROCESSOR(9F0104)
$DEBUG
$NODEBUGA
$KANJICODE SJIS
$TOL_INF 03FH, 0210H, 00H, 00H, 00H, 00H, 00H
$DGS FIL_NAM, .file, 06FH, 0FFFEH, 03FH, 067H, 01H, 00H
$DGS AUX_FIL, i2c_twl.c
$DGS MOD_NAM, i2c_twl, 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 STA_SYM, _lpf_coeff, U, U, 05002H, 03H, 01H, 03H
$DGS AUX_STR, 00H, 00H, 02FH, 02FH, 00H, 00H, 00H, 00H
$DGS GLV_SYM, _int_iic_twl, U, U, 0E001H, 026H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 063H, 00H, 00H
$DGS BEG_FUN, ??bf_int_iic_twl, U, U, 00H, 065H, 01H, 00H
$DGS AUX_BEG, 052H, 01CH, 01BH
$DGS AUT_VAR, _temp, 05H, 0FFFFH, 0CH, 01H, 00H, 00H
$DGS AUT_VAR, _tot, 02H, 0FFFFH, 0DH, 01H, 00H, 00H
$DGS BEG_BLK, ??bb00_int_iic_twl, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 011H, 00H, 01DH
$DGS BEG_BLK, ??bb01_int_iic_twl, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 011H, 00H, 01FH
$DGS BEG_BLK, ??bb02_int_iic_twl, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 011H, 00H, 023H
$DGS END_BLK, ??eb02_int_iic_twl, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 011H
$DGS BEG_BLK, ??bb03_int_iic_twl, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 011H, 00H, 02BH
$DGS END_BLK, ??eb03_int_iic_twl, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 011H
$DGS END_BLK, ??eb01_int_iic_twl, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 011H
$DGS END_BLK, ??eb00_int_iic_twl, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 011H
$DGS BEG_BLK, ??bb04_int_iic_twl, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 01EH, 00H, 02FH
$DGS AUT_VAR, _my_iics, 01H, 0FFFFH, 0CH, 01H, 01H, 00H
$DGS AUX_STR, 00H, 01FH, 01H, 00H, 00H, 00H, 00H, 00H
$DGS BEG_BLK, ??bb05_int_iic_twl, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 022H, 00H, 033H
$DGS END_BLK, ??eb05_int_iic_twl, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 025H
$DGS BEG_BLK, ??bb06_int_iic_twl, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 027H, 00H, 035H
$DGS BEG_BLK, ??bb07_int_iic_twl, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 02CH, 00H, 037H
$DGS BEG_BLK, ??bb08_int_iic_twl, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 02CH, 00H, 039H
$DGS BEG_BLK, ??bb09_int_iic_twl, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 02CH, 00H, 03DH
$DGS END_BLK, ??eb09_int_iic_twl, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 02CH
$DGS BEG_BLK, ??bb0A_int_iic_twl, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 02CH, 00H, 045H
$DGS END_BLK, ??eb0A_int_iic_twl, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 02CH
$DGS END_BLK, ??eb08_int_iic_twl, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 02CH
$DGS END_BLK, ??eb07_int_iic_twl, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 02CH
$DGS BEG_BLK, ??bb0B_int_iic_twl, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 02FH, 00H, 049H
$DGS END_BLK, ??eb0B_int_iic_twl, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 032H
$DGS BEG_BLK, ??bb0C_int_iic_twl, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 035H, 00H, 04BH
$DGS BEG_BLK, ??bb0D_int_iic_twl, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 035H, 00H, 04DH
$DGS BEG_BLK, ??bb0E_int_iic_twl, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 035H, 00H, 051H
$DGS END_BLK, ??eb0E_int_iic_twl, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 035H
$DGS BEG_BLK, ??bb0F_int_iic_twl, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 035H, 00H, 05BH
$DGS END_BLK, ??eb0F_int_iic_twl, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 035H
$DGS END_BLK, ??eb0D_int_iic_twl, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 035H
$DGS END_BLK, ??eb0C_int_iic_twl, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 035H
$DGS END_BLK, ??eb06_int_iic_twl, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 03AH
$DGS BEG_BLK, ??bb10_int_iic_twl, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 03CH, 00H, 00H
$DGS END_BLK, ??eb10_int_iic_twl, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 046H
$DGS END_BLK, ??eb04_int_iic_twl, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 047H
$DGS END_FUN, ??ef_int_iic_twl, U, U, 00H, 065H, 01H, 00H
$DGS AUX_END, 048H
$DGS GLV_SYM, _IIC_twl_Init, U, U, 01H, 026H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 069H, 00H, 00H
$DGS BEG_FUN, ??bf_IIC_twl_Init, U, U, 00H, 065H, 01H, 00H
$DGS AUX_BEG, 09FH, 00H, 069H
$DGS END_FUN, ??ef_IIC_twl_Init, U, U, 00H, 065H, 01H, 00H
$DGS AUX_END, 024H
$DGS GLV_SYM, _IIC_twl_Stop, U, U, 01H, 026H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 06FH, 00H, 00H
$DGS BEG_FUN, ??bf_IIC_twl_Stop, U, U, 00H, 065H, 01H, 00H
$DGS AUX_BEG, 0C8H, 00H, 06FH
$DGS END_FUN, ??ef_IIC_twl_Stop, U, U, 00H, 065H, 01H, 00H
$DGS AUX_END, 04H
$DGS GLV_SYM, _vreg_adrs, U, U, 0CH, 026H, 00H, 00H
$DGS GLV_SYM, _pre_dat, U, U, 0CH, 026H, 00H, 00H
$DGS GLV_SYM, _tot, U, U, 0DH, 026H, 00H, 00H
$DGS GLV_SYM, _@SEGAX, U, U, 00H, 02H, 00H, 00H
$DGS GLV_SYM, _adrs_table_twl_ext2int, U, U, 0CH, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
$DGS GLV_SYM, _vreg_twl_read, U, U, 0CH, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
$DGS GLV_SYM, _vreg_twl_write, U, U, 01H, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
$DGS GLV_SYM, _@SEGDE, U, U, 00H, 02H, 00H, 00H
$DGS GLV_SYM, _@RTARG0, U, U, 00H, 02H, 00H, 00H
EXTRN _@SEGAX
EXTRN _@SEGDE
EXTRN _@RTARG0
EXTRN _adrs_table_twl_ext2int
EXTRN _vreg_twl_read
EXTRN _vreg_twl_write
PUBLIC _vreg_adrs
PUBLIC _pre_dat
PUBLIC _tot
PUBLIC _int_iic_twl
PUBLIC _IIC_twl_Init
PUBLIC _IIC_twl_Stop
@@BITS BSEG
@@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)
@@R_INIT CSEG UNIT64KP
@@INIT DSEG BASEP
@@DATA DSEG BASEP
_vreg_adrs: DS (1)
_pre_dat: DS (1)
_tot: DS (2)
@@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
; line 1 : #pragma sfr /* 特殊機能レジスタ使用 */
; line 2 :
; line 3 :
; line 4 :
; line 5 : /*==============================================================
; ==============*/
; line 6 : #include "incs.h"
; line 7 : #include "i2c_twl_defs.h"
; line 8 :
; line 9 :
; line 10 : extern u8 vreg_twl[];
; line 11 :
; line 12 : #ifdef _MCU_BSR_
; line 13 : //#ifdef _MODEL_TS0_ || _MODEL_WM0_
; line 14 :
; line 15 : // ワーキングモデルはI2Cが逆
; line 16 : #define ACKD ACKD0
; line 17 : #define ACKE ACKE0
; line 18 : #define COI COI0
; line 19 : #define IICAEN IICA0EN
; line 20 : #define IICRSV IICRSV0
; line 21 : #define IICA IICA0
; line 22 : #define IICAIF IICAIF0
; line 23 : #define IICAMK IICAMK0
; line 24 : #define IICAPR0 IICAPR00
; line 25 : #define IICAPR1 IICAPR10
; line 26 : #define IICCTL0 IICCTL00
; line 27 : #define IICE IICE0
; line 28 : #define IICF IICF0
; line 29 : #define IICS IICS0
; line 30 : #define IICWH IICWH0
; line 31 : #define IICWL IICWL0
; line 32 : #define LREL LREL0
; line 33 : #define SPD SPD0
; line 34 : #define SPIE SPIE0
; line 35 : #define STCEN STCEN0
; line 36 : #define STD STD0
; line 37 : #define SVA SVA0
; line 38 : #define WREL WREL0
; line 39 : #define WTIM WTIM0
; line 40 : #define SMC SMC0
; line 41 :
; line 42 : #endif
; line 43 :
; line 44 : #ifndef _MCU_BSR_
; line 45 :
; line 46 : // ke3の時はダミー関数
; line 47 : void IIC_twl_Stop( void )
; line 48 : {
; line 49 : }
; line 50 : void IIC_twl_Init( void )
; line 51 : {
; line 52 : }
; line 53 : #else
; line 54 :
; line 55 :
; line 56 : /*==============================================================
; ==============*/
; line 57 : u8 vreg_adrs;
; line 58 : u8 pre_dat;
; line 59 :
; line 60 :
; line 61 : u16 tot;
; line 62 :
; line 63 :
; line 64 : // 注 ↓はマクロなので、returnはメインループに戻ります。
; line 65 : #define wait_next { \
; line 66 : tot = 0; \
; line 67 : while( IICAIF != 1 ){ \
; line 68 : if( SPD ){ \
; line 69 : LREL = 1; \
; line 70 : return; \
; line 71 : } \
; line 72 : tot++; \
; line 73 : if( tot == 0 ){ \
; line 74 : LREL = 1; \
; line 75 : return; \
; line 76 : } \
; line 77 : } \
; line 78 : }
; line 79 :
; line 80 :
; line 81 : __interrupt void int_iic_twl( )
; line 82 : {
@@BASE CSEG BASE
_int_iic_twl:
$DGL 1,21
push ax ;[INF] 1, 1
push bc ;[INF] 1, 1
push de ;[INF] 1, 1
push hl ;[INF] 1, 1
mov c,#0CH ;[INF] 2, 1
dec c ;[INF] 1, 1
dec c ;[INF] 1, 1
movw ax,_@SEGAX[c] ;[INF] 3, 1
push ax ;[INF] 1, 1
bnz $$-6 ;[INF] 2, 4
mov a,ES ;[INF] 2, 1
mov x,a ;[INF] 1, 1
mov a,CS ;[INF] 2, 1
push ax ;[INF] 1, 1
subw sp,#06H ;[INF] 2, 1
movw hl,sp ;[INF] 3, 1
??bf_int_iic_twl:
; line 83 : u8 temp;
; line 84 : u16 tot;
; line 85 :
; line 86 : // WDT_Restart();
; line 87 : // フラグ1回目 スレーブアドレス,R/W
; line 88 : /* COI != 1 なら、割り込みはいらない
; line 89 : if( COI != 1 ){ // 被呼び出し?
; line 90 : LREL = 1; // 呼ばれたのは他のID
; line 91 : return;
; line 92 : }else{
; line 93 : ACKE0 = 1; // 自動でackを返すようにする
; line 94 : WREL = 1; // ウェイト解除して次のバイトを待つ
; line 95 : }
; line 96 : */
; line 97 : WREL = 1; // ウェイト解除して次のバイトを待
; つ
$DGL 0,16
set1 !IICCTL00.5 ;[INF] 4, 2
; line 98 : wait_next; // 1バイト受信完了を待つ
$DGL 0,17
??bb00_int_iic_twl:
clrw ax ;[INF] 1, 1
movw [hl+2],ax ; tot ;[INF] 2, 1
?L0003:
bt IF1L.3,$?L0004 ;[INF] 4, 5
??bb01_int_iic_twl:
bf IICS0.0,$?L0005 ;[INF] 4, 5
??bb02_int_iic_twl:
set1 !IICCTL00.6 ;[INF] 4, 2
br !?L0010 ;[INF] 3, 3
??eb02_int_iic_twl:
?L0005:
incw [hl+2] ; tot ;[INF] 3, 2
clrw ax ;[INF] 1, 1
cmpw ax,[hl+2] ; tot ;[INF] 3, 1
bnz $?L0003 ;[INF] 2, 4
??bb03_int_iic_twl:
set1 !IICCTL00.6 ;[INF] 4, 2
br !?L0010 ;[INF] 3, 3
??eb03_int_iic_twl:
??eb01_int_iic_twl:
?L0004:
??eb00_int_iic_twl:
; line 99 :
; line 100 : // 2回目 R/W レジスタアドレス
; line 101 : temp = IICA;
$DGL 0,20
mov a,IICA0 ;[INF] 2, 1
mov [hl+5],a ; temp ;[INF] 2, 1
; line 102 : IICAIF = 0;
$DGL 0,21
clr1 IF1L.3 ;[INF] 3, 2
; line 103 : WREL = 1;
$DGL 0,22
set1 !IICCTL00.5 ;[INF] 4, 2
; line 104 :
; line 105 : vreg_adrs = adrs_table_twl_ext2int( temp );
$DGL 0,24
mov a,[hl+5] ; temp ;[INF] 2, 1
shrw ax,8 ;[INF] 2, 1
call !_adrs_table_twl_ext2int ;[INF] 3, 3
mov a,c ;[INF] 1, 1
mov !_vreg_adrs,a ;[INF] 3, 1
; line 106 :
; line 107 : // 3回目
; line 108 : // スタートコンディションか、データ受信完了フラグ待ち
; line 109 :
; line 110 : while( 1 )
?L0009:
; line 111 : {
??bb04_int_iic_twl:
; line 112 : u8 my_iics = IICS;
$DGL 0,31
mov a,IICS0 ;[INF] 2, 1
mov [hl+1],a ; my_iics ;[INF] 2, 1
; line 113 :
; line 114 : if( my_iics & 0x01 ) // SPD
$DGL 0,33
and a,#01H ; 1 ;[INF] 2, 1
cmp0 a ;[INF] 1, 1
bz $?L0011 ;[INF] 2, 4
; line 115 : { // 強制終了
??bb05_int_iic_twl:
; line 116 : LREL = 1;
$DGL 0,35
set1 !IICCTL00.6 ;[INF] 4, 2
; line 117 : return;
$DGL 0,36
br !?L0010 ;[INF] 3, 3
??eb05_int_iic_twl:
; line 118 : }
?L0011:
; line 119 : else if( my_iics & 0x02 ) // ( STD && !SPD )
$DGL 0,38
mov a,[hl+1] ; my_iics ;[INF] 2, 1
and a,#02H ; 2 ;[INF] 2, 1
cmp0 a ;[INF] 1, 1
bz $?L0013 ;[INF] 2, 4
; line 120 : {
??bb06_int_iic_twl:
; line 121 : // 送信 // (スタートコンディション検出)
; line 122 : pre_dat = vreg_twl_read( vreg_adrs ); // mcu内
; 部アドレスを渡す。一バイト目の準備 IICBに書き込むとウェイト解除
$DGL 0,41
mov x,!_vreg_adrs ;[INF] 3, 1
clrb a ;[INF] 1, 1
call !_vreg_twl_read ;[INF] 3, 3
mov a,c ;[INF] 1, 1
mov !_pre_dat,a ;[INF] 3, 1
; line 123 :
; line 124 : // 自局をRで呼ばれるのを待つ
; line 125 : wait_next;
$DGL 0,44
??bb07_int_iic_twl:
clrw ax ;[INF] 1, 1
movw [hl+2],ax ; tot ;[INF] 2, 1
?L0015:
bt IF1L.3,$?L0016 ;[INF] 4, 5
??bb08_int_iic_twl:
bf IICS0.0,$?L0017 ;[INF] 4, 5
??bb09_int_iic_twl:
set1 !IICCTL00.6 ;[INF] 4, 2
br $?L0010 ;[INF] 2, 3
??eb09_int_iic_twl:
?L0017:
incw [hl+2] ; tot ;[INF] 3, 2
clrw ax ;[INF] 1, 1
cmpw ax,[hl+2] ; tot ;[INF] 3, 1
bnz $?L0015 ;[INF] 2, 4
??bb0A_int_iic_twl:
set1 !IICCTL00.6 ;[INF] 4, 2
br $?L0010 ;[INF] 2, 3
??eb0A_int_iic_twl:
; line 126 : IICAIF = 0;
$DGL 0,45
??eb08_int_iic_twl:
?L0016:
??eb07_int_iic_twl:
clr1 IF1L.3 ;[INF] 3, 2
; line 127 : if( COI != 1 )
$DGL 0,46
bt IICS0.4,$?L0021 ;[INF] 4, 5
; line 128 : { // 被呼び出し?
??bb0B_int_iic_twl:
; line 129 : LREL = 1; // 呼ばれたのは他のIDあれ
$DGL 0,48
set1 !IICCTL00.6 ;[INF] 4, 2
; line 130 : return;
$DGL 0,49
br $?L0010 ;[INF] 2, 3
??eb0B_int_iic_twl:
; line 131 : }
?L0021:
; line 132 : IICA = pre_dat; // データを送る。ウェイトも解除さ
; れる。
$DGL 0,51
mov a,!_pre_dat ;[INF] 3, 1
mov IICA0,a ;[INF] 2, 1
; line 133 :
; line 134 : wait_next;
$DGL 0,53
??bb0C_int_iic_twl:
clrw ax ;[INF] 1, 1
movw [hl+2],ax ; tot ;[INF] 2, 1
?L0023:
bt IF1L.3,$?L0024 ;[INF] 4, 5
??bb0D_int_iic_twl:
bf IICS0.0,$?L0025 ;[INF] 4, 5
??bb0E_int_iic_twl:
set1 !IICCTL00.6 ;[INF] 4, 2
br $?L0010 ;[INF] 2, 3
??eb0E_int_iic_twl:
?L0025:
incw [hl+2] ; tot ;[INF] 3, 2
clrw ax ;[INF] 1, 1
cmpw ax,[hl+2] ; tot ;[INF] 3, 1
bnz $?L0023 ;[INF] 2, 4
??bb0F_int_iic_twl:
set1 !IICCTL00.6 ;[INF] 4, 2
br $?L0010 ;[INF] 2, 3
??eb0F_int_iic_twl:
; line 135 : // 4回目。(送信データ後の、ACK/NACK後) どうしても発
; 生してしまう。
??eb0D_int_iic_twl:
?L0024:
??eb0C_int_iic_twl:
; line 136 : IICAIF = 0; // おしまい
$DGL 0,55
clr1 IF1L.3 ;[INF] 3, 2
; line 137 : LREL = 1;
$DGL 0,56
set1 !IICCTL00.6 ;[INF] 4, 2
; line 138 : return;
$DGL 0,57
br $?L0010 ;[INF] 2, 3
??eb06_int_iic_twl:
; line 139 : }
?L0013:
; line 140 : else if( IICAIF && (( my_iics & 0x03 ) == 0 )) // !STD
; && !SPD )
$DGL 0,59
bf IF1L.3,$?L0029 ;[INF] 4, 5
mov a,[hl+1] ; my_iics ;[INF] 2, 1
and a,#03H ; 3 ;[INF] 2, 1
cmp0 a ;[INF] 1, 1
bnz $?L0029 ;[INF] 2, 4
; line 141 : {
??bb10_int_iic_twl:
; line 142 : // 受信 //
; line 143 : IICAIF = 0;
$DGL 0,62
clr1 IF1L.3 ;[INF] 3, 2
; line 144 : temp = IICA;
$DGL 0,63
mov a,IICA0 ;[INF] 2, 1
mov [hl+5],a ; temp ;[INF] 2, 1
; line 145 : WREL = 1;
$DGL 0,64
set1 !IICCTL00.5 ;[INF] 4, 2
; line 146 :
; line 147 : // 通常アクセス(ライト) //
; line 148 : LREL = 1; // スタートコンディション待ちへ(
; 連続書き込み未対応のため)
$DGL 0,67
set1 !IICCTL00.6 ;[INF] 4, 2
; line 149 : vreg_twl_write( vreg_adrs, temp );
$DGL 0,68
mov a,[hl+5] ; temp ;[INF] 2, 1
shrw ax,8 ;[INF] 2, 1
push ax ;[INF] 1, 1
mov x,!_vreg_adrs ;[INF] 3, 1
call !_vreg_twl_write ;[INF] 3, 3
pop ax ;[INF] 1, 1
; line 150 : return; // 受信おしまい //
$DGL 0,69
br $?L0010 ;[INF] 2, 3
??eb10_int_iic_twl:
; line 151 : }
?L0029:
??eb04_int_iic_twl:
; line 152 : }
$DGL 0,71
br !?L0009 ;[INF] 3, 3
?L0010:
; line 153 : }
$DGL 0,72
??ef_int_iic_twl:
addw sp,#06H ;[INF] 2, 1
pop ax ;[INF] 1, 1
mov CS,a ;[INF] 2, 1
mov a,x ;[INF] 1, 1
mov ES,a ;[INF] 2, 1
movw de,#_@SEGAX ;[INF] 3, 1
mov c,#06H ;[INF] 2, 1
pop ax ;[INF] 1, 1
movw [de],ax ;[INF] 1, 1
incw de ;[INF] 1, 1
incw de ;[INF] 1, 1
dec c ;[INF] 1, 1
bnz $$-5 ;[INF] 2, 4
pop hl ;[INF] 1, 1
pop de ;[INF] 1, 1
pop bc ;[INF] 1, 1
pop ax ;[INF] 1, 1
reti ;[INF] 2, 6
??ee_int_iic_twl:
; line 154 :
; line 155 :
; line 156 :
; line 157 : /*****************************************************/
; line 158 : void IIC_twl_Init( void )
; line 159 : {
ROM_CODE CSEG BASE
_IIC_twl_Init:
$DGL 1,99
??bf_IIC_twl_Init:
; line 160 :
; line 161 : IICAEN = 1;
$DGL 0,3
set1 !PER0.4 ;[INF] 4, 2
; line 162 :
; line 163 : IICE = 0; /* IICA disable */
$DGL 0,5
clr1 !IICCTL00.7 ;[INF] 4, 2
; line 164 :
; line 165 : IICAMK = 1; /* INTIICA disable */
$DGL 0,7
set1 MK1L.3 ;[INF] 3, 2
; line 166 : IICAIF = 0; /* clear INTIICA interrupt flag
; */
$DGL 0,8
clr1 IF1L.3 ;[INF] 3, 2
; line 167 :
; line 168 : IICAPR0 = 0; /* set INTIICA high priority */
$DGL 0,10
clr1 PR01L.3 ;[INF] 3, 2
; line 169 : IICAPR1 = 0; /* set INTIICA high priority */
$DGL 0,11
clr1 PR11L.3 ;[INF] 3, 2
; line 170 : P20 &= ~0x3;
$DGL 0,12
mov a,!P20 ;[INF] 3, 1
and a,#0FCH ; 252 ;[INF] 2, 1
mov !P20,a ;[INF] 3, 1
; line 171 :
; line 172 : SVA = IIC_T_SLAVEADDRESS;
$DGL 0,14
mov !SVA0,#04AH ; 74 ;[INF] 4, 1
; line 173 : IICF = 0x01;
$DGL 0,15
oneb !IICF0 ;[INF] 3, 1
; line 174 :
; line 175 : STCEN = 1; // リスタートの許可
$DGL 0,17
set1 IICF0.1 ;[INF] 3, 2
; line 176 : IICRSV = 1; // 通信予約をさせない:スレーブに
; 徹する
$DGL 0,18
set1 IICF0.0 ;[INF] 3, 2
; line 177 :
; line 178 : SPIE = 0; // ストップコンディションでの割り
; 込みを禁止
$DGL 0,20
clr1 !IICCTL00.4 ;[INF] 4, 2
; line 179 : WTIM = 1; // 自動でACKを返した後clkをLに固
; 定する
$DGL 0,21
set1 !IICCTL00.3 ;[INF] 4, 2
; line 180 : ACKE = 1; // ダメCPUは無視して次の通信をは
; じめるかもしれないんで早くclkを開放しないといけない
$DGL 0,22
set1 !IICCTL00.2 ;[INF] 4, 2
; line 181 :
; line 182 : IICWH = 5;
$DGL 0,24
mov !IICWH0,#05H ; 5 ;[INF] 4, 1
; line 183 : IICWL = 10; // L期間の長さ
$DGL 0,25
mov !IICWL0,#0AH ; 10 ;[INF] 4, 1
; line 184 :
; line 185 : SMC = 1;
$DGL 0,27
set1 !IICCTL10.3 ;[INF] 4, 2
; line 186 :
; line 187 : IICAMK = 0; // 割り込みを許可
$DGL 0,29
clr1 MK1L.3 ;[INF] 3, 2
; line 188 :
; line 189 : IICE = 1;
$DGL 0,31
set1 !IICCTL00.7 ;[INF] 4, 2
; line 190 :
; line 191 : PM20 &= ~0x3; /* set clock pin for IICA */
$DGL 0,33
mov a,!PM20 ;[INF] 3, 1
and a,#0FCH ; 252 ;[INF] 2, 1
mov !PM20,a ;[INF] 3, 1
; line 192 :
; line 193 : LREL = 1;
$DGL 0,35
set1 !IICCTL00.6 ;[INF] 4, 2
; line 194 : }
$DGL 0,36
??ef_IIC_twl_Init:
ret ;[INF] 1, 6
??ee_IIC_twl_Init:
; line 195 :
; line 196 :
; line 197 :
; line 198 : //**************************************************************
; **************
; line 199 : void IIC_twl_Stop( void )
; line 200 : {
_IIC_twl_Stop:
$DGL 1,105
??bf_IIC_twl_Stop:
; line 201 : IICE = 0; /* IICA disable */
$DGL 0,2
clr1 !IICCTL00.7 ;[INF] 4, 2
; line 202 : IICAEN = 0;
$DGL 0,3
clr1 !PER0.4 ;[INF] 4, 2
; line 203 : }
$DGL 0,4
??ef_IIC_twl_Stop:
ret ;[INF] 1, 6
??ee_IIC_twl_Stop:
@@CODEL CSEG
END
; *** Code Information ***
;
; $FILE C:\78k_data\yav-mcu-basara\branches\0.10(fix)\i2c_twl.c
;
; $FUNC int_iic_twl(82)
; void=(void)
; CODE SIZE= 279 bytes, CLOCK_SIZE= 232 clocks, STACK_SIZE= 34 bytes
;
; $CALL adrs_table_twl_ext2int(105)
; bc=(int:ax)
;
; $CALL vreg_twl_read(122)
; bc=(int:ax)
;
; $CALL vreg_twl_write(149)
; void=(int:ax, int:[sp+4])
;
; $FUNC IIC_twl_Init(159)
; void=(void)
; CODE SIZE= 85 bytes, CLOCK_SIZE= 46 clocks, STACK_SIZE= 0 bytes
;
; $FUNC IIC_twl_Stop(200)
; void=(void)
; CODE SIZE= 9 bytes, CLOCK_SIZE= 10 clocks, STACK_SIZE= 0 bytes
; Target chip : uPD79F0104
; Device file : E1.00b

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,115 @@
; 78K0R C Compiler V2.10 Assembler Source Date:13 Jun 2010 Time:19:31:47
; 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 magic.c
; In-file : magic.c
; Asm-file : inter_asm\magic.asm
; Para-file :
$PROCESSOR(9F0104)
$DEBUG
$NODEBUGA
$KANJICODE SJIS
$TOL_INF 03FH, 0210H, 00H, 00H, 00H, 00H, 00H
$DGS FIL_NAM, .file, 01BH, 0FFFEH, 03FH, 067H, 01H, 00H
$DGS AUX_FIL, magic.c
$DGS MOD_NAM, magic, 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, MGC_MIMI, U, U, 00H, 078H, 00H, 00H
$DGS SEC_NAM, MGC_TAIL, 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, MGC_LOAD, 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, @@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 STA_SYM, _MGC_LOAD, U, U, 0D00CH, 03H, 01H, 03H
$DGS AUX_STR, 00H, 00H, 09H, 09H, 00H, 00H, 00H, 00H
$DGS STA_SYM, _MGC_HEAD, U, U, 0500CH, 03H, 01H, 03H
$DGS AUX_STR, 00H, 00H, 09H, 09H, 00H, 00H, 00H, 00H
$DGS STA_SYM, _MGC_TAIL, U, U, 0500CH, 03H, 01H, 03H
$DGS AUX_STR, 00H, 00H, 09H, 09H, 00H, 00H, 00H, 00H
@@BITS BSEG
MGC_MIMI CSEG AT 2100H
_MGC_HEAD: DB '19:31:47'
DB 00H
DB (1)
MGC_TAIL CSEG AT 4FF6H
_MGC_TAIL: DB '19:31:47'
DB 00H
DB (1)
@@R_INIT CSEG UNIT64KP
@@INIT DSEG BASEP
@@DATA DSEG BASEP
@@R_INIS CSEG UNIT64KP
@@INIS DSEG SADDRP
@@DATS DSEG SADDRP
MGC_LOAD CSEG AT 0FF6H
_MGC_LOAD: DB '19:31:47'
DB 00H
DB (1)
@@RLINIT CSEG UNIT64KP
@@INITL DSEG UNIT64KP
@@DATAL DSEG UNIT64KP
@@CALT CSEG CALLT0
; line 1 : /***************************************************************
; **************
; line 2 : ビルド時刻を埋め込みます。
; line 3 : ビルドの度に更新されるようにする必要があります。
; line 4 : (touchしてね)
; line 5 : ***************************************************************
; *************/
; line 6 : #include "config.h"
; line 7 :
; line 8 : // V0.5 (ニセ0.1改)
; line 9 : #pragma section @@CNSTL MGC_LOAD AT 0x0FF6
; line 10 : __far static const unsigned char MGC_LOAD[] = __TIME__;
; line 11 :
; line 12 : #pragma section @@CNST MGC_MIMI AT 0x2100
; line 13 : static const unsigned char MGC_HEAD[] = __TIME__;
; line 14 :
; line 15 : #pragma section @@CNST MGC_TAIL AT 0x4FF6
; line 16 : static const unsigned char MGC_TAIL[] = __TIME__;
@@CODE CSEG BASE
@@CODEL CSEG
@@BASE CSEG BASE
@@CNST CSEG MIRRORP
END
; *** Code Information ***
; Target chip : uPD79F0104
; Device file : E1.00b

View File

@ -0,0 +1,525 @@
; 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 main.c
; In-file : main.c
; Asm-file : inter_asm\main.asm
; Para-file :
$PROCESSOR(9F0104)
$DEBUG
$NODEBUGA
$KANJICODE SJIS
$TOL_INF 03FH, 0210H, 00H, 00H, 00H, 00H, 00H
$DGS FIL_NAM, .file, 063H, 0FFFEH, 03FH, 067H, 01H, 00H
$DGS AUX_FIL, main.c
$DGS MOD_NAM, main, 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 STA_SYM, _lpf_coeff, U, U, 05002H, 03H, 01H, 03H
$DGS AUX_STR, 00H, 00H, 02FH, 02FH, 00H, 00H, 00H, 00H
$DGS GLV_SYM, _main_loop, U, U, 01H, 026H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 05DH, 00H, 00H
$DGS BEG_FUN, ??bf_main_loop, U, U, 00H, 065H, 01H, 00H
$DGS AUX_BEG, 021H, 00H, 047H
$DGS BEG_BLK, ??bb00_main_loop, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 0EH, 00H, 049H
$DGS BEG_BLK, ??bb01_main_loop, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 014H, 00H, 04FH
$DGS END_BLK, ??eb01_main_loop, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 016H
$DGS END_BLK, ??eb00_main_loop, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 017H
$DGS BEG_BLK, ??bb02_main_loop, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 019H, 00H, 053H
$DGS END_BLK, ??eb02_main_loop, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 01CH
$DGS BEG_BLK, ??bb03_main_loop, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 02EH, 00H, 055H
$DGS BEG_BLK, ??bb04_main_loop, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 032H, 00H, 00H
$DGS END_BLK, ??eb04_main_loop, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 034H
$DGS END_BLK, ??eb03_main_loop, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 038H
$DGS END_FUN, ??ef_main_loop, U, U, 00H, 065H, 01H, 00H
$DGS AUX_END, 039H
$DGS STA_SYM, _read_dipsw, U, U, 01H, 03H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 063H, 00H, 00H
$DGS BEG_FUN, ??bf_read_dipsw, U, U, 00H, 065H, 01H, 00H
$DGS AUX_BEG, 05FH, 00H, 063H
$DGS END_FUN, ??ef_read_dipsw, U, U, 00H, 065H, 01H, 00H
$DGS AUX_END, 07H
$DGS GLV_SYM, _system_status, U, U, 08H, 026H, 01H, 00H
$DGS AUX_STR, 02FH, 00H, 04H, 00H, 00H, 00H, 00H, 00H
$DGS GLV_SYM, _update, U, U, 034CH, 027H, 00H, 00H
$DGS GLV_SYM, _pool, U, U, 0DH, 026H, 01H, 03H
$DGS AUX_STR, 00H, 00H, 0200H, 0100H, 00H, 00H, 00H, 00H
$DGS GLV_SYM, _RTC_init, U, U, 01H, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
$DGS GLV_SYM, _renge_init, U, U, 01H, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
$DGS GLV_SYM, _iic_mcu_start, U, U, 01H, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
$DGS GLV_SYM, _PM_init, U, U, 01H, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
$DGS GLV_SYM, _iic_mcu_read_a_byte, U, U, 0CH, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
$DGS GLV_SYM, _vreg_ctr_init, U, U, 01H, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
$DGS GLV_SYM, _vreg_twl_init, U, U, 01H, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
$DGS GLV_SYM, _clear_hosu_hist, U, U, 01H, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
$DGS GLV_SYM, _renge_task_interval_run_force, U, U, 034CH, 02H, 00H, 00H
$DGS GLV_SYM, _WDT_Restart, U, U, 01H, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
$DGS GLV_SYM, _renge_task_interval_run, U, U, 0CH, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
$DGS GLV_SYM, _renge_task_immed_run, U, U, 0CH, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
EXTRN _RTC_init
EXTRN _renge_init
EXTRN _iic_mcu_start
EXTRN _PM_init
EXTRN _iic_mcu_read_a_byte
EXTRN _vreg_ctr_init
EXTRN _vreg_twl_init
EXTRN _clear_hosu_hist
EXTRN _WDT_Restart
EXTRN _renge_task_interval_run
EXTRN _renge_task_immed_run
EXTBIT _renge_task_interval_run_force
PUBLIC _system_status
PUBLIC _update
PUBLIC _pool
PUBLIC _main_loop
@@BITS BSEG
_update 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)
@@R_INIT CSEG UNIT64KP
@@INIT DSEG BASEP
@@DATA DSEG BASEP
_system_status: DS (4)
_pool: DS (512)
@@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 : 2008,2009 nintendo
; line 4 : 開発技術部 藤田
; line 5 : ======================================================== */
; line 6 :
; line 7 :
; line 8 : // ========================================================
; line 9 : #include "incs_loader.h"
; line 10 :
; line 11 : #include "WDT.h"
; line 12 : #include "rtc.h"
; line 13 : #include "pm.h"
; line 14 : #include "accero.h"
; line 15 : #include "led.h"
; line 16 : #include "adc.h"
; line 17 :
; line 18 :
; line 19 : // ========================================================
; line 20 : static void read_dipsw( );
; line 21 :
; line 22 :
; line 23 : // ========================================================
; line 24 : system_status_ system_status;
; line 25 : bit update;
; line 26 :
; line 27 :
; line 28 : u16 pool[256]; // アップデート時のワークエリア
; 兼 歩数計データ
; line 29 : /* ========================================================
; line 30 : 本当のエントリ関数は loader.c にあります
; line 31 : ======================================================== */
; line 32 : void main_loop( void )
; line 33 : {
LDR_CODE CSEG BASE
_main_loop:
$DGL 1,67
??bf_main_loop:
; line 34 :
; line 35 : // 電池投入時、ファームアップデート後のみ
; line 36 : RTC_init( ); // 内部でリブートか判定しています
$DGL 0,4
call !_RTC_init ;[INF] 3, 3
; line 37 :
; line 38 : renge_init( );
$DGL 0,6
call !_renge_init ;[INF] 3, 3
; line 39 :
; line 40 : iic_mcu_start( );
$DGL 0,8
call !_iic_mcu_start ;[INF] 3, 3
; line 41 : EI( );
$DGL 0,9
ei ;[INF] 3, 4
; line 42 :
; line 43 : PM_init();
$DGL 0,11
call !_PM_init ;[INF] 3, 3
; line 44 :
; line 45 : if( system_status.reboot )
$DGL 0,13
mov a,!_system_status+2 ;[INF] 3, 1
bf a.3,$?L0003 ;[INF] 3, 5
; line 46 : {
??bb00_main_loop:
; line 47 : #ifdef _PMIC_TWL_
; line 48 : if( RESET1_n )
; line 49 : #else
; line 50 : if( PM_chk_LDSW() != 0 )
$DGL 0,18
movw ax,#03H ; 3 ;[INF] 3, 1
push ax ;[INF] 1, 1
mov x,#084H ; 132 ;[INF] 2, 1
call !_iic_mcu_read_a_byte ;[INF] 3, 3
pop ax ;[INF] 1, 1
mov a,c ;[INF] 1, 1
and a,#01H ; 1 ;[INF] 2, 1
cmp0 a ;[INF] 1, 1
bz $?L0004 ;[INF] 2, 4
; line 51 : #endif
; line 52 : {
??bb01_main_loop:
; line 53 : system_status.pwr_state = ON_TRIG;
$DGL 0,21
mov !_system_status,#02H ; 2 ;[INF] 4, 1
??eb01_main_loop:
; line 54 : }
; line 55 : }
$DGL 0,23
??eb00_main_loop:
br $?L0004 ;[INF] 2, 3
?L0003:
; line 56 : else
; line 57 : {
??bb02_main_loop:
; line 58 : // リブート時は実行されない
; line 59 : system_status.pwr_state = OFF_TRIG;
$DGL 0,27
clrb !_system_status ;[INF] 3, 1
??eb02_main_loop:
; line 60 : }
?L0004:
; line 61 :
; line 62 : #ifdef _PARRADIUM_
; line 63 : system_status.pwr_state = OFF;
; line 64 : #endif
; line 65 : vreg_ctr_init( );
$DGL 0,33
call !_vreg_ctr_init ;[INF] 3, 3
; line 66 : vreg_twl_init( );
$DGL 0,34
call !_vreg_twl_init ;[INF] 3, 3
; line 67 :
; line 68 : read_dipsw( ); // 特定スイッチで何かするか?
$DGL 0,36
call !_read_dipsw ;[INF] 3, 3
; line 69 :
; line 70 : clear_hosu_hist(); // 履歴クリア
$DGL 0,38
call !_clear_hosu_hist ;[INF] 3, 3
; line 71 :
; line 72 : renge_task_interval_run_force = 1;
$DGL 0,40
set1 _renge_task_interval_run_force ;[INF] 3, 2
; line 73 :
; line 74 : RTCIMK = 0; /* 割り込み(アラーム&インターバル
; )許可 */
$DGL 0,42
clr1 MK1H.2 ;[INF] 3, 2
; line 75 :
; line 76 : // メインループ //
; line 77 : while( 1 )
?L0007:
; line 78 : { // システムtick、または割り込みで
; 廻ります。
??bb03_main_loop:
; line 79 : WDT_Restart( );
$DGL 0,47
call !_WDT_Restart ;[INF] 3, 3
; line 80 : renge_task_interval_run( ); // 内部で、システムtickま
; たは強制起動します
$DGL 0,48
call !_renge_task_interval_run ;[INF] 3, 3
; line 81 : while( renge_task_interval_run_force != 0 )
$DGL 0,49
?L0009:
bf _renge_task_interval_run_force,$?L0010 ;[INF] 4, 5
; line 82 : {
??bb04_main_loop:
; line 83 : renge_task_interval_run( );
$DGL 0,51
call !_renge_task_interval_run ;[INF] 3, 3
??eb04_main_loop:
; line 84 : }
$DGL 0,52
br $?L0009 ;[INF] 2, 3
?L0010:
; line 85 : WDT_Restart( );
$DGL 0,53
call !_WDT_Restart ;[INF] 3, 3
; line 86 : while( renge_task_immed_run( ) != ERR_SUCCESS );
; // ここのループが廻る度に実行されます
$DGL 0,54
?L0011:
call !_renge_task_immed_run ;[INF] 3, 3
cmp0 c ;[INF] 1, 1
bnz $?L0011 ;[INF] 2, 4
; line 87 : HALT( );
$DGL 0,55
halt ;[INF] 2, 3
??eb03_main_loop:
; line 88 : }
$DGL 0,56
br $?L0007 ;[INF] 2, 3
; line 89 : }
$DGL 0,57
??ef_main_loop:
ret ;[INF] 1, 6
??ee_main_loop:
; line 90 :
; line 91 :
; line 92 : /* ========================================================
; line 93 : ======================================================== */
; line 94 : static void read_dipsw( )
; line 95 : {
_read_dipsw:
$DGL 1,93
??bf_read_dipsw:
; line 96 : // ソフトディップスイッチ読み込み
; line 97 : // PU4 |= 0x03; // dip sw 0,1
; line 98 : system_status.dipsw0 = ( DIPSW_0 == 0 ) ? 0 : 1;
$DGL 0,4
bt P4.0,$?L0015 ;[INF] 4, 5
clrw ax ;[INF] 1, 1
br $?L0016 ;[INF] 2, 3
?L0015:
onew ax ;[INF] 1, 1
?L0016:
mov a,x ;[INF] 1, 1
movw de,#loww (_system_status+2) ;[INF] 3, 1
mov1 CY,a.0 ;[INF] 2, 1
mov a,[de] ;[INF] 1, 1
mov1 a.0,CY ;[INF] 2, 1
mov [de],a ;[INF] 1, 1
; line 99 : system_status.dipsw1 = ( DIPSW_1 == 0 ) ? 0 : 1;
$DGL 0,5
bt P4.1,$?L0017 ;[INF] 4, 5
clrw ax ;[INF] 1, 1
br $?L0018 ;[INF] 2, 3
?L0017:
onew ax ;[INF] 1, 1
?L0018:
mov a,x ;[INF] 1, 1
movw de,#loww (_system_status+2) ;[INF] 3, 1
mov1 CY,a.0 ;[INF] 2, 1
mov a,[de] ;[INF] 1, 1
mov1 a.1,CY ;[INF] 2, 1
mov [de],a ;[INF] 1, 1
; line 100 : // PU4 &= ~0x03;
; line 101 : }
$DGL 0,7
??ef_read_dipsw:
ret ;[INF] 1, 6
??ee_read_dipsw:
LDR_CODL CSEG
@@BASE CSEG BASE
END
; *** Code Information ***
;
; $FILE C:\78k_data\yav-mcu-basara\branches\0.10(fix)\main.c
;
; $FUNC main_loop(33)
; void=(void)
; CODE SIZE= 93 bytes, CLOCK_SIZE= 97 clocks, STACK_SIZE= 6 bytes
;
; $CALL RTC_init(36)
; void=(void)
;
; $CALL renge_init(38)
; void=(void)
;
; $CALL iic_mcu_start(40)
; void=(void)
;
; $CALL PM_init(43)
; void=(void)
;
; $CALL iic_mcu_read_a_byte(50)
; bc=(int:ax, int:[sp+4])
;
; $CALL vreg_ctr_init(65)
; void=(void)
;
; $CALL vreg_twl_init(66)
; void=(void)
;
; $CALL read_dipsw(68)
; void=(void)
;
; $CALL clear_hosu_hist(70)
; void=(void)
;
; $CALL WDT_Restart(79)
; void=(void)
;
; $CALL renge_task_interval_run(80)
; bc=(void)
;
; $CALL renge_task_interval_run(83)
; bc=(void)
;
; $CALL WDT_Restart(85)
; void=(void)
;
; $CALL renge_task_immed_run(86)
; bc=(void)
;
; $FUNC read_dipsw(95)
; void=(void)
; CODE SIZE= 37 bytes, CLOCK_SIZE= 38 clocks, STACK_SIZE= 0 bytes
; Target chip : uPD79F0104
; Device file : E1.00b

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,134 @@
; 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 reboot.c
; In-file : reboot.c
; Asm-file : inter_asm\reboot.asm
; Para-file :
$PROCESSOR(9F0104)
$DEBUG
$NODEBUGA
$KANJICODE SJIS
$TOL_INF 03FH, 0210H, 02H, 00H, 00H, 00H, 00H
$DGS FIL_NAM, .file, 019H, 0FFFEH, 03FH, 067H, 01H, 00H
$DGS AUX_FIL, reboot.c
$DGS MOD_NAM, reboot, 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 GLV_SYM, _my_reboot, U, U, 01H, 026H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 019H, 00H, 00H
$DGS BEG_FUN, ??bf_my_reboot, U, U, 00H, 065H, 01H, 00H
$DGS AUX_BEG, 0EH, 00H, 019H
$DGS END_FUN, ??ef_my_reboot, U, U, 00H, 065H, 01H, 00H
$DGS AUX_END, 0BH
PUBLIC _my_reboot
@@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 :
; line 3 : むりやりリブート
; line 4 :
; line 5 : ファイル中にインラインアセンブラがあると、
; line 6 : そのモジュール全部最適化が聞かなくなるため追い出した
; line 7 :
; line 8 : **********************************************************/
; line 9 : #pragma SFR
; line 10 :
; line 11 : #include "incs_loader.h"
; line 12 :
; line 13 :
; line 14 : void my_reboot(){
LDR_CODE CSEG BASE
_my_reboot:
$DGL 1,19
??bf_my_reboot:
; line 15 : #asm
$DGL 0,4
MOV PSW,#06H ; ダミーのPSWをセット
$DGL 0,5
MOVW AX,#000d0h ; リセットのベクタ値を取り込んでいます。
$DGL 0,6
PUSH PSW
$DGL 0,7
PUSH AX ; これでRETIのためのスタックを準備
$DGL 0,8
RETI ; これでリセット・ベクタに分岐
; line 16 :
; line 17 : MOV PSW,#06H ; ダミーのPSWをセット
; line 18 : MOVW AX,#000d0h ; リセットのベクタ値を取り
; 込んでいます。
; line 19 : PUSH PSW
; line 20 : PUSH AX ; これでRETIのためのスタック
; を準備
; line 21 : RETI ; これでリセット・ベクタに分
; 岐
; line 22 :
; line 23 : #endasm
; line 24 : }
$DGL 0,11
??ef_my_reboot:
ret ;[INF] 1, 6
??ee_my_reboot:
LDR_CODL CSEG
@@BASE CSEG BASE
END
; *** Code Information ***
;
; $FILE C:\78k_data\yav-mcu-basara\branches\0.10(fix)\reboot.c
;
; $FUNC my_reboot(14)
; void=(void)
; CODE SIZE= 1 bytes, CLOCK_SIZE= 6 clocks, STACK_SIZE= 0 bytes
; Target chip : uPD79F0104
; Device file : E1.00b

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,760 @@
; 78K0R C Compiler V2.10 Assembler Source Date:13 Jun 2010 Time:19:31:24
; 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 rtc.c
; In-file : rtc.c
; Asm-file : inter_asm\rtc.asm
; Para-file :
$PROCESSOR(9F0104)
$DEBUG
$NODEBUGA
$KANJICODE SJIS
$TOL_INF 03FH, 0210H, 00H, 00H, 00H, 00H, 00H
$DGS FIL_NAM, .file, 099H, 0FFFEH, 03FH, 067H, 01H, 00H
$DGS AUX_FIL, rtc.c
$DGS MOD_NAM, rtc, 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 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 STA_SYM, _lpf_coeff, U, U, 05002H, 03H, 01H, 03H
$DGS AUX_STR, 00H, 00H, 02FH, 02FH, 00H, 00H, 00H, 00H
$DGS GLV_SYM, _RTC_init, U, U, 01H, 026H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 051H, 00H, 00H
$DGS BEG_FUN, ??bf_RTC_init, U, U, 00H, 065H, 01H, 00H
$DGS AUX_BEG, 017H, 02H, 047H
$DGS BEG_BLK, ??bb00_RTC_init, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 04H, 00H, 04BH
$DGS END_BLK, ??eb00_RTC_init, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 017H
$DGS BEG_BLK, ??bb01_RTC_init, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 022H, 00H, 00H
$DGS END_BLK, ??eb01_RTC_init, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 023H
$DGS END_FUN, ??ef_RTC_init, U, U, 00H, 065H, 01H, 00H
$DGS AUX_END, 029H
$DGS GLV_SYM, _int_rtc, U, U, 0E001H, 026H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 067H, 00H, 00H
$DGS BEG_FUN, ??bf_int_rtc, U, U, 00H, 065H, 01H, 00H
$DGS AUX_BEG, 048H, 02H, 055H
$DGS BEG_BLK, ??bb00_int_rtc, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 06H, 00H, 057H
$DGS BEG_BLK, ??bb01_int_rtc, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 08H, 00H, 059H
$DGS BEG_BLK, ??bb02_int_rtc, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 0AH, 00H, 05DH
$DGS END_BLK, ??eb02_int_rtc, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 0AH
$DGS BEG_BLK, ??bb03_int_rtc, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 0EH, 00H, 00H
$DGS END_BLK, ??eb03_int_rtc, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 010H
$DGS END_BLK, ??eb01_int_rtc, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 011H
$DGS END_BLK, ??eb00_int_rtc, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 012H
$DGS END_FUN, ??ef_int_rtc, U, U, 00H, 065H, 01H, 00H
$DGS AUX_END, 013H
$DGS GLV_SYM, _rtc_buf_reflesh, U, U, 01H, 026H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 075H, 00H, 00H
$DGS BEG_FUN, ??bf_rtc_buf_reflesh, U, U, 00H, 065H, 01H, 00H
$DGS AUX_BEG, 063H, 02H, 06BH
$DGS BEG_BLK, ??bb00_rtc_buf_reflesh, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 03H, 00H, 06DH
$DGS BEG_BLK, ??bb01_rtc_buf_reflesh, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 07H, 00H, 00H
$DGS END_BLK, ??eb01_rtc_buf_reflesh, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 08H
$DGS END_BLK, ??eb00_rtc_buf_reflesh, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 0DH
$DGS END_FUN, ??ef_rtc_buf_reflesh, U, U, 00H, 065H, 01H, 00H
$DGS AUX_END, 0EH
$DGS GLV_SYM, _set_rtc, U, U, 01H, 026H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 081H, 00H, 00H
$DGS BEG_FUN, ??bf_set_rtc, U, U, 00H, 065H, 01H, 00H
$DGS AUX_BEG, 07BH, 02H, 07BH
$DGS REG_PAR, _adrs, 06H, 0FFFFH, 010CH, 011H, 00H, 00H
$DGS REG_PAR, _data, 07H, 0FFFFH, 010CH, 011H, 00H, 00H
$DGS BEG_BLK, ??bb00_set_rtc, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 03H, 00H, 00H
$DGS END_BLK, ??eb00_set_rtc, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 07H
$DGS END_FUN, ??ef_set_rtc, U, U, 00H, 065H, 01H, 00H
$DGS AUX_END, 09H
$DGS GLV_SYM, _rtc_unlock, U, U, 01H, 026H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 093H, 00H, 00H
$DGS BEG_FUN, ??bf_rtc_unlock, U, U, 00H, 065H, 01H, 00H
$DGS AUX_BEG, 08CH, 02H, 085H
$DGS BEG_BLK, ??bb00_rtc_unlock, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 09H, 00H, 087H
$DGS BEG_BLK, ??bb01_rtc_unlock, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 0DH, 00H, 08DH
$DGS END_BLK, ??eb01_rtc_unlock, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 0EH
$DGS END_BLK, ??eb00_rtc_unlock, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 011H
$DGS BEG_BLK, ??bb02_rtc_unlock, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 015H, 00H, 00H
$DGS END_BLK, ??eb02_rtc_unlock, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 01BH
$DGS END_FUN, ??ef_rtc_unlock, U, U, 00H, 065H, 01H, 00H
$DGS AUX_END, 01CH
$DGS GLV_SYM, _int_rtc_int, U, U, 0E001H, 026H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 099H, 00H, 00H
$DGS BEG_FUN, ??bf_int_rtc_int, U, U, 00H, 065H, 01H, 00H
$DGS AUX_BEG, 0B2H, 00H, 099H
$DGS END_FUN, ??ef_int_rtc_int, U, U, 00H, 065H, 01H, 00H
$DGS AUX_END, 03H
$DGS GLV_SYM, _rtc_work, U, U, 0CH, 026H, 01H, 03H
$DGS AUX_STR, 00H, 00H, 07H, 07H, 00H, 00H, 00H, 00H
$DGS GLV_SYM, _rtc_lock, U, U, 034CH, 027H, 00H, 00H
$DGS GLV_SYM, _rtc_dirty, U, U, 034CH, 027H, 00H, 00H
$DGS GLV_SYM, _rtc_alarm_dirty, U, U, 034CH, 027H, 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, _system_status, U, U, 08H, 02H, 01H, 00H
$DGS AUX_STR, 02FH, 00H, 04H, 00H, 00H, 00H, 00H, 00H
$DGS GLV_SYM, _renge_flg_interval, U, U, 034CH, 02H, 00H, 00H
EXTRN _vreg_ctr
EXTRN _system_status
EXTBIT _renge_flg_interval
PUBLIC _rtc_work
PUBLIC _rtc_lock
PUBLIC _rtc_dirty
PUBLIC _rtc_alarm_dirty
PUBLIC _RTC_init
PUBLIC _int_rtc
PUBLIC _rtc_buf_reflesh
PUBLIC _set_rtc
PUBLIC _rtc_unlock
PUBLIC _int_rtc_int
@@BITS BSEG
_rtc_lock DBIT
_rtc_dirty DBIT
_rtc_alarm_dirty 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)
@@R_INIT CSEG UNIT64KP
@@INIT DSEG BASEP
@@DATA DSEG BASEP
_rtc_work: DS (7)
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
; line 1 : /* ========================================================
; line 2 : RTC
; line 3 : ======================================================== */
; line 4 : #pragma sfr
; line 5 : #pragma inline
; line 6 :
; line 7 :
; line 8 : #include "incs.h"
; line 9 :
; line 10 :
; line 11 :
; line 12 : // ========================================================
; line 13 : u8 rtc_work[7];
; line 14 : bit rtc_lock;
; line 15 : bit rtc_dirty;
; line 16 : bit rtc_alarm_dirty;
; line 17 :
; line 18 : /* ========================================================
; line 19 : ペリフェラルの初期化
; line 20 : レジスタの電池交換ビットのセット
; line 21 : ======================================================== */
; line 22 : void RTC_init( void )
; line 23 : {
ROM_CODE CSEG BASE
_RTC_init:
$DGL 1,67
push hl ;[INF] 1, 1
??bf_RTC_init:
; line 24 :
; line 25 : if( !RTCEN ) // ビットが立っていたらリブート
$DGL 0,3
movw hl,#0F0H ; 240 ;[INF] 3, 1
mov1 CY,[hl].7 ;[INF] 2, 1
bc $?L0003 ;[INF] 2, 4
; line 26 : {
??bb00_RTC_init:
; line 27 : RTCEN = 1; // モジュールON
$DGL 0,5
set1 !PER0.7 ;[INF] 4, 2
; line 28 :
; line 29 : // RTC設定
; line 30 : RTCC0 = 0b00001000; /* 動作停止、24時間制、32k出力「ま
; だなし」、定周期割り込みなし */
$DGL 0,8
mov RTCC0,#08H ; 8 ;[INF] 3, 1
; line 31 : RTCC1 = 0b11000000; /* アラーム割り込み有効&動作開始
; */
$DGL 0,9
mov RTCC1,#0C0H ; 192 ;[INF] 3, 1
; line 32 : RTCC2 = 0b10000000; /* インターバル:32k/2^6=2ms、RTCD
; IV出力なし */
$DGL 0,10
mov RTCC2,#080H ; 128 ;[INF] 3, 1
; line 33 :
; line 34 : SEC = 0x00;
$DGL 0,12
clrb !SEC ;[INF] 3, 1
; line 35 : MIN = 0x00;
$DGL 0,13
clrb !MIN ;[INF] 3, 1
; line 36 : HOUR = 0x15;
$DGL 0,14
mov HOUR,#015H ; 21 ;[INF] 3, 1
; line 37 : DAY = 0x01;
$DGL 0,15
oneb !DAY ;[INF] 3, 1
; line 38 : WEEK = 0x00;
$DGL 0,16
clrb !WEEK ;[INF] 3, 1
; line 39 : MONTH = 0x11;
$DGL 0,17
mov MONTH,#011H ; 17 ;[INF] 3, 1
; line 40 : YEAR = 0x09;
$DGL 0,18
mov YEAR,#09H ; 9 ;[INF] 3, 1
; line 41 :
; line 42 : ALARMWW = 0x7F;
$DGL 0,20
mov ALARMWW,#07FH ; 127 ;[INF] 3, 1
; line 43 :
; line 44 : vreg_ctr[VREG_C_MCU_STATUS] |= REG_BIT_RTC_BLACKOUT;
$DGL 0,22
set1 !_vreg_ctr+2.0 ;[INF] 4, 2
??eb00_RTC_init:
; line 45 : }
?L0003:
; line 46 : // 割り込み設定
; line 47 : RTCIF = 0;
$DGL 0,25
clr1 IF1H.1 ;[INF] 3, 2
; line 48 : RTCIIF = 0;
$DGL 0,26
clr1 IF1H.2 ;[INF] 3, 2
; line 49 : RTCMK = 1; /* 割り込み(定周期)禁止 */
$DGL 0,27
set1 MK1H.1 ;[INF] 3, 2
; line 50 : RTCIMK = 0; /* 割り込み(アラーム&インターバル
; )許可 */
$DGL 0,28
clr1 MK1H.2 ;[INF] 3, 2
; line 51 :
; line 52 : RTCE = 1; /* 動作開始 */
$DGL 0,30
set1 RTCC0.7 ;[INF] 3, 2
; line 53 :
; line 54 : RWAIT = 1;
$DGL 0,32
set1 RTCC1.0 ;[INF] 3, 2
; line 55 : while( !RWST )
$DGL 0,33
?L0005:
bt RTCC1.1,$?L0006 ;[INF] 4, 5
; line 56 : {;
??bb01_RTC_init:
??eb01_RTC_init:
; line 57 : }
$DGL 0,35
br $?L0005 ;[INF] 2, 3
?L0006:
; line 58 : RWAIT = 0;
$DGL 0,36
clr1 RTCC1.0 ;[INF] 3, 2
; line 59 :
; line 60 : rtc_lock = 0;
$DGL 0,38
clr1 _rtc_lock ;[INF] 3, 2
; line 61 : rtc_dirty = 0;
$DGL 0,39
clr1 _rtc_dirty ;[INF] 3, 2
; line 62 : rtc_alarm_dirty = 0;
$DGL 0,40
clr1 _rtc_alarm_dirty ;[INF] 3, 2
; line 63 : }
$DGL 0,41
??ef_RTC_init:
pop hl ;[INF] 1, 1
ret ;[INF] 1, 6
??ee_RTC_init:
; line 64 :
; line 65 :
; line 66 :
; line 67 : /* ========================================================
; line 68 : RTC アラーム割り込み
; line 69 : 2^6/fXT1.953125 ms
; line 70 : ======================================================== */
; line 71 : __interrupt void int_rtc( )
; line 72 : {
@@BASE CSEG BASE
_int_rtc:
$DGL 1,81
push ax ;[INF] 1, 1
??bf_int_rtc:
; line 73 : // 日付も指定日で
; line 74 : if( ( vreg_ctr[VREG_C_RTC_ALARM_DAY] == DAY )
; line 75 : && ( vreg_ctr[VREG_C_RTC_ALARM_MONTH] == MONTH )
; line 76 : && ( vreg_ctr[VREG_C_RTC_ALARM_YEAR] == YEAR ) )
$DGL 0,5
mov a,!_vreg_ctr+58 ;[INF] 3, 1
cmp a,!DAY ;[INF] 3, 1
bnz $?L0013 ;[INF] 2, 4
mov a,!_vreg_ctr+59 ;[INF] 3, 1
cmp a,!MONTH ;[INF] 3, 1
bnz $?L0013 ;[INF] 2, 4
mov a,!_vreg_ctr+60 ;[INF] 3, 1
cmp a,!YEAR ;[INF] 3, 1
bnz $?L0013 ;[INF] 2, 4
; line 77 : {
??bb00_int_rtc:
; line 78 : if( ( vreg_ctr[VREG_C_IRQ_MASK1] & REG_BIT_RTC_ALARM ) =
; = 0 )
$DGL 0,7
mov a,!_vreg_ctr+25 ;[INF] 3, 1
and a,#04H ; 4 ;[INF] 2, 1
cmp0 a ;[INF] 1, 1
bnz $?L0013 ;[INF] 2, 4
; line 79 : {
??bb01_int_rtc:
; line 80 : vreg_ctr[VREG_C_IRQ1] |= REG_BIT_RTC_ALARM;
$DGL 0,9
set1 !_vreg_ctr+17.2 ;[INF] 4, 2
; line 81 : IRQ0_ast;
$DGL 0,10
??bb02_int_rtc:
clr1 P7.6 ;[INF] 3, 2
clr1 PM7.6 ;[INF] 3, 2
??eb02_int_rtc:
; line 82 : // マスクをしてあったら、電源を入れません
; line 83 : if(( system_status.pwr_state == BT_CHARGE ) ||
$DGL 0,12
cmp !_system_status,#06H ; 6 ;[INF] 4, 1
bz $?L0015 ;[INF] 2, 4
; line 84 : ( system_status.pwr_state == OFF ))
$DGL 0,13
cmp !_system_status,#01H ; 1 ;[INF] 4, 1
sknz ;[INF] 2, 1
?L0015:
; line 85 : {
??bb03_int_rtc:
; line 86 : system_status.poweron_reason = RTC_ALARM;
$DGL 0,15
mov !_system_status+1,#02H ; 2 ;[INF] 4, 1
??eb03_int_rtc:
; line 87 : }
?L0013:
??eb01_int_rtc:
; line 88 : }
??eb00_int_rtc:
; line 89 : }
; line 90 : }
$DGL 0,19
??ef_int_rtc:
pop ax ;[INF] 1, 1
reti ;[INF] 2, 6
??ee_int_rtc:
; line 91 :
; line 92 :
; line 93 :
; line 94 : /* ========================================================
; line 95 : RTC のリード
; line 96 : レジスタは、sec,min,hour,week,day,month,year の順
; line 97 : ======================================================== */
; line 98 : void rtc_buf_reflesh( )
; line 99 : {
ROM_CODE CSEG BASE
_rtc_buf_reflesh:
$DGL 1,103
push hl ;[INF] 1, 1
??bf_rtc_buf_reflesh:
; line 100 : if( rtc_lock == 0 )
$DGL 0,2
bt _rtc_lock,$?L0018 ;[INF] 4, 5
; line 101 : {
??bb00_rtc_buf_reflesh:
; line 102 : rtc_lock = 1;
$DGL 0,4
set1 _rtc_lock ;[INF] 3, 2
; line 103 : RWAIT = 1;
$DGL 0,5
set1 RTCC1.0 ;[INF] 3, 2
; line 104 : while( !RWST )
$DGL 0,6
?L0020:
bt RTCC1.1,$?L0021 ;[INF] 4, 5
; line 105 : {;
??bb01_rtc_buf_reflesh:
??eb01_rtc_buf_reflesh:
; line 106 : }
$DGL 0,8
br $?L0020 ;[INF] 2, 3
?L0021:
; line 107 :
; line 108 : memcpy( &vreg_ctr[VREG_C_RTC_SEC], &SEC, 7 );
$DGL 0,10
movw de,#loww (_vreg_ctr+48) ;[INF] 3, 1
movw hl,#0FF92H ; -110 ;[INF] 3, 1
mov c,#07H ; 7 ;[INF] 2, 1
?L0022:
mov a,[hl] ;[INF] 1, 1
mov [de],a ;[INF] 1, 1
incw de ;[INF] 1, 1
incw hl ;[INF] 1, 1
dec c ;[INF] 1, 1
bnz $?L0022 ;[INF] 2, 4
; line 109 : RWAIT = 0;
$DGL 0,11
clr1 RTCC1.0 ;[INF] 3, 2
??eb00_rtc_buf_reflesh:
; line 110 : // renge_task_immed_add( tski_rtc_close );
; line 111 : }
?L0018:
; line 112 : }
$DGL 0,14
??ef_rtc_buf_reflesh:
pop hl ;[INF] 1, 1
ret ;[INF] 1, 6
??ee_rtc_buf_reflesh:
; line 113 :
; line 114 :
; line 115 :
; line 116 : /* ========================================================
; line 117 : RTC のライト
; line 118 : set_rtc_close と対で使って下さい。
; line 119 : こいつはバッファにコピーするだけで、
; line 120 : 実際にRTCにセットするのはset_rtc_close()です。
; line 121 : ======================================================== */
; line 122 : void set_rtc( u8 adrs, u8 data )
; line 123 : {
_set_rtc:
$DGL 1,117
push hl ;[INF] 1, 1
mov a,[sp+6] ;[INF] 2, 1
movw hl,ax ;[INF] 1, 1
??bf_set_rtc:
; line 124 : if( rtc_dirty == 0 )
$DGL 0,2
bt _rtc_dirty,$?L0026 ;[INF] 4, 5
; line 125 : {
??bb00_set_rtc:
; line 126 : rtc_dirty = 1;
$DGL 0,4
set1 _rtc_dirty ;[INF] 3, 2
; line 127 : memcpy( rtc_work, &SEC, 7 );
$DGL 0,5
push hl ;[INF] 1, 1
movw de,#loww (_rtc_work) ;[INF] 3, 1
movw ax,#0FF92H ; -110 ;[INF] 3, 1
movw hl,ax ;[INF] 1, 1
mov c,#07H ; 7 ;[INF] 2, 1
?L0028:
mov a,[hl] ;[INF] 1, 1
mov [de],a ;[INF] 1, 1
incw de ;[INF] 1, 1
incw hl ;[INF] 1, 1
dec c ;[INF] 1, 1
bnz $?L0028 ;[INF] 2, 4
pop hl ;[INF] 1, 1
??eb00_set_rtc:
; line 128 : // renge_task_immed_add( tski_rtc_close ); // I2C終了時に行う
; line 129 : }
?L0026:
; line 130 : rtc_work[adrs] = data;
$DGL 0,8
mov a,l ;[INF] 1, 1
mov b,a ;[INF] 1, 1
mov a,h ;[INF] 1, 1
mov _rtc_work[b],a ;[INF] 3, 1
; line 131 : }
$DGL 0,9
??ef_set_rtc:
pop hl ;[INF] 1, 1
ret ;[INF] 1, 6
??ee_set_rtc:
; line 132 :
; line 133 :
; line 134 :
; line 135 : /* ========================================================
; line 136 : 必要ならば、RTCレジスタの更新
; line 137 : ======================================================== */
; line 138 : // task_status_immed tski_rtc_close(){
; line 139 : void rtc_unlock( )
; line 140 : {
_rtc_unlock:
$DGL 1,129
push hl ;[INF] 1, 1
??bf_rtc_unlock:
; line 141 : // リードロック
; line 142 : // if( rtc_lock != 0 ){
; line 143 : rtc_lock = 0;
$DGL 0,4
clr1 _rtc_lock ;[INF] 3, 2
; line 144 : // }
; line 145 :
; line 146 : // ライトロック
; line 147 : if( rtc_dirty != 0 )
$DGL 0,8
bf _rtc_dirty,$?L0032 ;[INF] 4, 5
; line 148 : {
??bb00_rtc_unlock:
; line 149 : rtc_dirty = 0;
$DGL 0,10
clr1 _rtc_dirty ;[INF] 3, 2
; line 150 : RWAIT = 1;
$DGL 0,11
set1 RTCC1.0 ;[INF] 3, 2
; line 151 : while( !RWST )
$DGL 0,12
?L0034:
bt RTCC1.1,$?L0035 ;[INF] 4, 5
; line 152 : {;
??bb01_rtc_unlock:
??eb01_rtc_unlock:
; line 153 : }
$DGL 0,14
br $?L0034 ;[INF] 2, 3
?L0035:
; line 154 : memcpy( &SEC, rtc_work, 7 );
$DGL 0,15
movw de,#0FF92H ; -110 ;[INF] 3, 1
movw hl,#loww (_rtc_work) ;[INF] 3, 1
mov c,#07H ; 7 ;[INF] 2, 1
?L0036:
mov a,[hl] ;[INF] 1, 1
mov [de],a ;[INF] 1, 1
incw de ;[INF] 1, 1
incw hl ;[INF] 1, 1
dec c ;[INF] 1, 1
bnz $?L0036 ;[INF] 2, 4
; line 155 : RWAIT = 0;
$DGL 0,16
clr1 RTCC1.0 ;[INF] 3, 2
??eb00_rtc_unlock:
; line 156 : }
?L0032:
; line 157 :
; line 158 : // アラームセット
; line 159 : if( rtc_alarm_dirty )
$DGL 0,20
bf _rtc_alarm_dirty,$?L0038 ;[INF] 4, 5
; line 160 : {
??bb02_rtc_unlock:
; line 161 : WALE = 0;
$DGL 0,22
clr1 RTCC1.7 ;[INF] 3, 2
; line 162 : ALARMWM = vreg_ctr[VREG_C_RTC_ALARM_MIN];
$DGL 0,23
mov a,!_vreg_ctr+56 ;[INF] 3, 1
mov ALARMWM,a ;[INF] 2, 1
; line 163 : ALARMWH = vreg_ctr[VREG_C_RTC_ALARM_HOUR];
$DGL 0,24
mov a,!_vreg_ctr+57 ;[INF] 3, 1
mov ALARMWH,a ;[INF] 2, 1
; line 164 : rtc_dirty = 0;
$DGL 0,25
clr1 _rtc_dirty ;[INF] 3, 2
; line 165 : WALE = 1;
$DGL 0,26
set1 RTCC1.7 ;[INF] 3, 2
??eb02_rtc_unlock:
; line 166 : }
?L0038:
; line 167 : }
$DGL 0,28
??ef_rtc_unlock:
pop hl ;[INF] 1, 1
ret ;[INF] 1, 6
??ee_rtc_unlock:
; line 168 :
; line 169 :
; line 170 :
; line 171 :
; line 172 :
; line 173 : /* ========================================================
; line 174 : RTC システムチックタイマ割り込みベクタ
; line 175 : 2^6/fXT1.953125 ms
; line 176 : ======================================================== */
; line 177 : __interrupt void int_rtc_int( )
; line 178 : {
@@BASE CSEG BASE
_int_rtc_int:
$DGL 1,147
??bf_int_rtc_int:
; line 179 : renge_flg_interval = 1;
$DGL 0,2
set1 _renge_flg_interval ;[INF] 3, 2
; line 180 : }
$DGL 0,3
??ef_int_rtc_int:
reti ;[INF] 2, 6
??ee_int_rtc_int:
@@CODEL CSEG
END
; *** Code Information ***
;
; $FILE C:\78k_data\yav-mcu-basara\branches\0.10(fix)\rtc.c
;
; $FUNC RTC_init(23)
; void=(void)
; CODE SIZE= 87 bytes, CLOCK_SIZE= 57 clocks, STACK_SIZE= 2 bytes
;
; $FUNC int_rtc(72)
; void=(void)
; CODE SIZE= 62 bytes, CLOCK_SIZE= 47 clocks, STACK_SIZE= 2 bytes
;
; $FUNC rtc_buf_reflesh(99)
; void=(void)
; CODE SIZE= 37 bytes, CLOCK_SIZE= 39 clocks, STACK_SIZE= 2 bytes
;
; $FUNC set_rtc(123)
; void=(unsigned char adrs:x, unsigned char data:[sp+6])
; CODE SIZE= 37 bytes, CLOCK_SIZE= 36 clocks, STACK_SIZE= 4 bytes
;
; $FUNC rtc_unlock(140)
; void=(void)
; CODE SIZE= 63 bytes, CLOCK_SIZE= 56 clocks, STACK_SIZE= 2 bytes
;
; $FUNC int_rtc_int(178)
; void=(void)
; CODE SIZE= 5 bytes, CLOCK_SIZE= 8 clocks, STACK_SIZE= 0 bytes
; Target chip : uPD79F0104
; Device file : E1.00b

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,859 @@
; 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 sw.c
; In-file : sw.c
; Asm-file : inter_asm\sw.asm
; Para-file :
$PROCESSOR(9F0104)
$DEBUG
$NODEBUGA
$KANJICODE SJIS
$TOL_INF 03FH, 0210H, 00H, 00H, 00H, 00H, 00H
$DGS FIL_NAM, .file, 0CDH, 0FFFEH, 03FH, 067H, 01H, 00H
$DGS AUX_FIL, sw.c
$DGS MOD_NAM, sw, 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 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 LAB_SYM, bs_F0060, U, U, 00H, 06H, 00H, 00H
$DGS LAB_SYM, es_F0060, 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, _tsk_sw, U, U, 01H, 026H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 0CDH, 00H, 00H
$DGS BEG_FUN, ??bf_tsk_sw, U, U, 00H, 065H, 01H, 00H
$DGS AUX_BEG, 038H, 02H, 04BH
$DGS STA_SYM, _cnt_force_off, ?L0003, U, 0CH, 03H, 00H, 00H
$DGS STA_SYM, _task_interval, ?L0004, U, 0CH, 03H, 00H, 00H
$DGS BEG_BLK, ??bb00_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 06H, 00H, 04FH
$DGS END_BLK, ??eb00_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 014H
$DGS BEG_BLK, ??bb01_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 017H, 00H, 053H
$DGS END_BLK, ??eb01_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 019H
$DGS BEG_BLK, ??bb02_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 01BH, 00H, 057H
$DGS END_BLK, ??eb02_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 01DH
$DGS BEG_BLK, ??bb03_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 021H, 00H, 059H
$DGS BEG_BLK, ??bb04_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 028H, 00H, 05BH
$DGS BEG_BLK, ??bb05_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 02AH, 00H, 061H
$DGS END_BLK, ??eb05_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 030H
$DGS END_BLK, ??eb04_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 031H
$DGS BEG_BLK, ??bb06_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 033H, 00H, 065H
$DGS END_BLK, ??eb06_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 039H
$DGS BEG_BLK, ??bb07_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 03BH, 00H, 069H
$DGS END_BLK, ??eb07_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 03FH
$DGS BEG_BLK, ??bb08_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 043H, 00H, 06BH
$DGS BEG_BLK, ??bb09_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 046H, 00H, 071H
$DGS END_BLK, ??eb09_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 04AH
$DGS END_BLK, ??eb08_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 04BH
$DGS BEG_BLK, ??bb0A_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 04DH, 00H, 075H
$DGS END_BLK, ??eb0A_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 04FH
$DGS BEG_BLK, ??bb0B_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 053H, 00H, 079H
$DGS END_BLK, ??eb0B_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 05FH
$DGS BEG_BLK, ??bb0C_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 062H, 00H, 07BH
$DGS BEG_BLK, ??bb0D_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 064H, 00H, 081H
$DGS END_BLK, ??eb0D_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 066H
$DGS END_BLK, ??eb0C_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 067H
$DGS BEG_BLK, ??bb0E_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 069H, 00H, 085H
$DGS END_BLK, ??eb0E_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 06BH
$DGS BEG_BLK, ??bb0F_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 06FH, 00H, 08BH
$DGS END_BLK, ??eb0F_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 071H
$DGS END_BLK, ??eb03_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 074H
$DGS BEG_BLK, ??bb10_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 07DH, 00H, 08DH
$DGS BEG_BLK, ??bb11_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 07EH, 00H, 08FH
$DGS BEG_BLK, ??bb12_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 07EH, 00H, 093H
$DGS END_BLK, ??eb12_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 07EH
$DGS BEG_BLK, ??bb13_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 07EH, 00H, 095H
$DGS BEG_BLK, ??bb14_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 07EH, 00H, 099H
$DGS END_BLK, ??eb14_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 07EH
$DGS BEG_BLK, ??bb15_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 07EH, 00H, 0A1H
$DGS END_BLK, ??eb15_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 07EH
$DGS END_BLK, ??eb13_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 07EH
$DGS END_BLK, ??eb11_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 07EH
$DGS BEG_BLK, ??bb16_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 080H, 00H, 0A3H
$DGS BEG_BLK, ??bb17_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 080H, 00H, 0A7H
$DGS END_BLK, ??eb17_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 080H
$DGS BEG_BLK, ??bb18_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 080H, 00H, 0A9H
$DGS BEG_BLK, ??bb19_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 080H, 00H, 0ADH
$DGS END_BLK, ??eb19_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 080H
$DGS BEG_BLK, ??bb1A_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 080H, 00H, 0B5H
$DGS END_BLK, ??eb1A_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 080H
$DGS END_BLK, ??eb18_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 080H
$DGS END_BLK, ??eb16_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 080H
$DGS BEG_BLK, ??bb1B_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 082H, 00H, 0B7H
$DGS BEG_BLK, ??bb1C_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 082H, 00H, 0BBH
$DGS END_BLK, ??eb1C_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 082H
$DGS BEG_BLK, ??bb1D_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 082H, 00H, 0BDH
$DGS BEG_BLK, ??bb1E_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 082H, 00H, 0C1H
$DGS END_BLK, ??eb1E_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 082H
$DGS BEG_BLK, ??bb1F_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 082H, 00H, 00H
$DGS END_BLK, ??eb1F_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 082H
$DGS END_BLK, ??eb1D_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 082H
$DGS END_BLK, ??eb1B_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 082H
$DGS END_BLK, ??eb10_tsk_sw, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 083H
$DGS END_FUN, ??ef_tsk_sw, U, U, 00H, 065H, 01H, 00H
$DGS AUX_END, 086H
$DGS GLV_SYM, _SW_pow_count, U, U, 0CH, 026H, 00H, 00H
$DGS GLV_SYM, _SW_home_count, U, U, 0CH, 026H, 00H, 00H
$DGS GLV_SYM, _SW_wifi_count, U, U, 0CH, 026H, 00H, 00H
$DGS GLV_SYM, _SW_pow_mask, U, U, 034CH, 027H, 00H, 00H
$DGS GLV_SYM, _SW_home_mask, U, U, 034CH, 027H, 00H, 00H
$DGS GLV_SYM, _SW_wifi_mask, U, U, 034CH, 027H, 00H, 00H
$DGS GLV_SYM, _SW_HOME_n, U, U, 034CH, 027H, 00H, 00H
$DGS GLV_SYM, _set_irq, 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, _renge_task_interval_run_force, U, U, 034CH, 02H, 00H, 00H
EXTRN _set_irq
EXTRN _system_status
EXTRN _vreg_ctr
EXTBIT _renge_task_interval_run_force
PUBLIC _SW_pow_count
PUBLIC _SW_home_count
PUBLIC _SW_wifi_count
PUBLIC _SW_pow_mask
PUBLIC _SW_home_mask
PUBLIC _SW_wifi_mask
PUBLIC _SW_HOME_n
PUBLIC _tsk_sw
@@BITS BSEG
_SW_pow_mask DBIT
_SW_home_mask DBIT
_SW_wifi_mask DBIT
_SW_HOME_n 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)
@@R_INIT CSEG UNIT64KP
DB 00H ; 0
DB 00H ; 0
@@INIT DSEG BASEP
?L0003: DS (1)
?L0004: DS (1)
@@DATA DSEG BASEP
_SW_pow_count: DS (1)
_SW_home_count: DS (1)
_SW_wifi_count: 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_F0060:
push ax ;[INF] 1, 1
mov x,#010H ; 16 ;[INF] 2, 1
call !_set_irq ;[INF] 3, 3
pop ax ;[INF] 1, 1
ret ;[INF] 1, 6
es_F0060:
; *** Sub-Routine Information ***
;
; $SUB bs_F0060
; CODE SIZE= 8 bytes
; End of Sub-Routines
; line 1 : #pragma SFR
; line 2 : #pragma NOP
; line 3 : #pragma HALT
; line 4 : #pragma STOP
; line 5 :
; line 6 : #include "incs.h"
; line 7 :
; line 8 : #include "i2c_twl.h"
; line 9 : #include "i2c_ctr.h"
; line 10 : #include "led.h"
; line 11 : #include "accero.h"
; line 12 : #include "pm.h"
; line 13 : #include "rtc.h"
; line 14 :
; line 15 :
; line 16 :
; line 17 : //=========================================================
; line 18 : #define INTERVAL_TSK_SW 16
; line 19 : #define CLICK_THRESHOLD 1
; line 20 : #define HOLD_THREASHOLD (u8)( 600 / INTERVAL_TSK_SW )
; line 21 :
; line 22 :
; line 23 :
; line 24 : //=========================================================
; line 25 : u8 SW_pow_count, SW_home_count, SW_wifi_count;
; line 26 : bit SW_pow_mask, SW_home_mask, SW_wifi_mask;
; line 27 :
; line 28 : bit SW_HOME_n;
; line 29 :
; line 30 :
; line 31 : //=========================================================
; line 32 : // 押した時間を数える。押しっぱなしでも0に戻らない
; line 33 : // maskが非0の時は、一度離すまで無視する
; line 34 : #define count_sw_n( sw, counter, mask ) \
; line 35 : { \
; line 36 : if( sw ){ \
; line 37 : mask = 0; \
; line 38 : counter = 0; \
; line 39 : }else{ \
; line 40 : if( mask != 0 ){ \
; line 41 : counter = 0; \
; line 42 : }else{ \
; line 43 : counter += 1; \
; line 44 : if( counter == 0 ) counter = 255; \
; line 45 : } \
; line 46 : } \
; line 47 : }
; line 48 :
; line 49 :
; line 50 :
; line 51 : /* ========================================================
; line 52 : スイッチの監視
; line 53 :  チャタリングをはねたり、長押しや、押したトリガなどの検出など
; line 54 : ======================================================== */
; line 55 : void tsk_sw( )
; line 56 : {
ROM_CODE CSEG BASE
_tsk_sw:
$DGL 1,69
push hl ;[INF] 1, 1
??bf_tsk_sw:
; line 57 : static u8 cnt_force_off = 0;
; line 58 : static u8 task_interval = 0;
; line 59 :
; line 60 : switch ( system_status.pwr_state )
$DGL 0,5
mov a,!_system_status ;[INF] 3, 1
sarw ax,8 ;[INF] 2, 1
clrw bc ;[INF] 1, 1
subw ax,bc ;[INF] 1, 1
bz $?L0006 ;[INF] 2, 4
subw ax,#02H ; 2 ;[INF] 3, 1
bz $?L0007 ;[INF] 2, 4
br $?L0005 ;[INF] 2, 3
; line 61 : {
??bb00_tsk_sw:
; line 62 : case ( OFF_TRIG ):
?L0006:
; line 63 : SW_pow_count = 0;
$DGL 0,8
clrb !_SW_pow_count ;[INF] 3, 1
; line 64 : SW_wifi_count = 0;
$DGL 0,9
clrb !_SW_wifi_count ;[INF] 3, 1
; line 65 : SW_home_count = 0;
$DGL 0,10
clrb !_SW_home_count ;[INF] 3, 1
; line 66 : cnt_force_off = 0;
$DGL 0,11
clrb !?L0003 ; cnt_force_off ;[INF] 3, 1
; line 67 : break;
$DGL 0,12
br $?L0005 ;[INF] 2, 3
; line 68 :
; line 69 : case ( ON_TRIG ):
?L0007:
; line 70 : // 電源投入
; line 71 : SW_pow_mask = 1;
$DGL 0,16
set1 _SW_pow_mask ;[INF] 3, 2
; line 72 : SW_home_mask = 1;
$DGL 0,17
set1 _SW_home_mask ;[INF] 3, 2
; line 73 : SW_wifi_mask = 1;
$DGL 0,18
set1 _SW_wifi_mask ;[INF] 3, 2
; line 74 : break;
??eb00_tsk_sw:
; line 75 : }
?L0005:
; line 76 :
; line 77 : if( task_interval-- != 0 )
$DGL 0,22
mov a,!?L0004 ; task_interval ;[INF] 3, 1
dec !?L0004 ; task_interval ;[INF] 3, 2
cmp0 a ;[INF] 1, 1
skz ;[INF] 2, 1
br !?L0058 ;[INF] 3, 3
; line 78 : {
??bb01_tsk_sw:
; line 79 : return;
??eb01_tsk_sw:
; line 80 : }
; line 81 : else
; line 82 : {
??bb02_tsk_sw:
; line 83 : task_interval = (u8)( INTERVAL_TSK_SW / SYS_INTERVAL_TIC
; K );
$DGL 0,28
mov !?L0004,#08H ; task_interval,8 ;[INF] 4, 1
??eb02_tsk_sw:
; line 84 : }
; line 85 :
; line 86 :
; line 87 : switch ( system_status.pwr_state )
$DGL 0,32
mov a,!_system_status ;[INF] 3, 1
sarw ax,8 ;[INF] 2, 1
onew bc ;[INF] 1, 1
movw de,#02H ; 2 ;[INF] 3, 1
subw ax,bc ;[INF] 1, 1
bz $?L0013 ;[INF] 2, 4
subw ax,de ;[INF] 1, 1
bz $?L0013 ;[INF] 2, 4
subw ax,de ;[INF] 1, 1
subw ax,bc ;[INF] 1, 1
sknh ;[INF] 2, 1
br !?L0012 ;[INF] 3, 3
; line 88 : {
??bb03_tsk_sw:
; line 89 : case ( ON ):
?L0013:
; line 90 : case ( SLEEP ):
; line 91 : case ( BT_CHARGE ):
; line 92 : case ( OFF ):
; line 93 : // 電源スイッチの監視 //
; line 94 : if( SW_POW_n )
$DGL 0,39
bf P7.3,$?L0016 ;[INF] 4, 5
; line 95 : {
??bb04_tsk_sw:
; line 96 : if( ( CLICK_THRESHOLD < SW_pow_count ) && ( SW_pow_c
; ount <= HOLD_THREASHOLD ) )
$DGL 0,41
cmp !_SW_pow_count,#02H ; 2 ;[INF] 4, 1
bc $?L0022 ;[INF] 2, 4
cmp !_SW_pow_count,#026H ; 38 ;[INF] 4, 1
bnc $?L0022 ;[INF] 2, 4
; line 97 : {
??bb05_tsk_sw:
; line 98 : #ifdef _SW_HOME_ENABLE_
; line 99 : set_irq( VREG_C_IRQ0, REG_BIT_SW_POW_CLICK );
$DGL 0,44
onew ax ;[INF] 1, 1
call !bs_F0060 ;[INF] 3, 3
??eb05_tsk_sw:
; line 100 : #else
; line 101 : set_irq( VREG_C_IRQ0, REG_BIT_SW_HOME_CLICK );
; line 102 : #endif
; line 103 : }
; line 104 : }
$DGL 0,49
??eb04_tsk_sw:
br $?L0022 ;[INF] 2, 3
?L0016:
; line 105 : else if( SW_pow_count == HOLD_THREASHOLD )
$DGL 0,50
cmp !_SW_pow_count,#025H ; 37 ;[INF] 4, 1
bnz $?L0020 ;[INF] 2, 4
; line 106 : {
??bb06_tsk_sw:
; line 107 : #ifdef _SW_HOME_ENABLE_
; line 108 : set_irq( VREG_C_IRQ0, REG_BIT_SW_POW_HOLD );
$DGL 0,53
onew ax ;[INF] 1, 1
incw ax ;[INF] 1, 1
call !bs_F0060 ;[INF] 3, 3
??eb06_tsk_sw:
; line 109 : #else
; line 110 : set_irq( VREG_C_IRQ0, REG_BIT_SW_HOME_HOLD );
; line 111 : #endif
; line 112 : }
$DGL 0,57
br $?L0022 ;[INF] 2, 3
?L0020:
; line 113 : else if( SW_pow_count == ( HOLD_THREASHOLD * 4 ) )
$DGL 0,58
cmp !_SW_pow_count,#094H ; 148 ;[INF] 4, 1
bnz $?L0022 ;[INF] 2, 4
; line 114 : { // todo
??bb07_tsk_sw:
; line 115 : vreg_ctr[ VREG_C_LED_POW ] = LED_POW_ILM_ONLY_RED;
$DGL 0,60
mov !_vreg_ctr+41,#04H ; 4 ;[INF] 4, 1
; line 116 : system_status.pwr_state = OFF_TRIG;
$DGL 0,61
clrb !_system_status ;[INF] 3, 1
; line 117 : renge_task_interval_run_force = 1;
$DGL 0,62
set1 _renge_task_interval_run_force ;[INF] 3, 2
??eb07_tsk_sw:
; line 118 : }
?L0022:
; line 119 :
; line 120 : // 電源OFF割り込みを入れたが…
; line 121 : if( ( vreg_ctr[VREG_C_IRQ0] & REG_BIT_SW_POW_HOLD ) != 0
; )
$DGL 0,66
mov a,!_vreg_ctr+16 ;[INF] 3, 1
and a,#02H ; 2 ;[INF] 2, 1
cmp0 a ;[INF] 1, 1
bz $?L0024 ;[INF] 2, 4
; line 122 : {
??bb08_tsk_sw:
; line 123 : cnt_force_off += 1;
$DGL 0,68
inc !?L0003 ; cnt_force_off ;[INF] 3, 2
; line 124 : if( cnt_force_off >= 13 )
$DGL 0,69
cmp !?L0003,#0DH ; cnt_force_off,13 ;[INF] 4, 1
bc $?L0025 ;[INF] 2, 4
; line 125 : { // …返事がない。強制的に切る。
??bb09_tsk_sw:
; line 126 : vreg_ctr[ VREG_C_LED_POW ] = LED_POW_ILM_ONLY_RE
; D;
$DGL 0,71
mov !_vreg_ctr+41,#04H ; 4 ;[INF] 4, 1
; line 127 : system_status.pwr_state = OFF_TRIG;
$DGL 0,72
clrb !_system_status ;[INF] 3, 1
; line 128 : renge_task_interval_run_force = 1;
$DGL 0,73
set1 _renge_task_interval_run_force ;[INF] 3, 2
??eb09_tsk_sw:
; line 129 : }
; line 130 : }
$DGL 0,75
??eb08_tsk_sw:
br $?L0025 ;[INF] 2, 3
?L0024:
; line 131 : else
; line 132 : {
??bb0A_tsk_sw:
; line 133 : cnt_force_off = 0;
$DGL 0,78
clrb !?L0003 ; cnt_force_off ;[INF] 3, 1
??eb0A_tsk_sw:
; line 134 : }
?L0025:
; line 135 :
; line 136 : // HOME スイッチ //
; line 137 : switch( system_status.model )
$DGL 0,82
mov a,!_system_status+3 ;[INF] 3, 1
sarw ax,8 ;[INF] 2, 1
onew bc ;[INF] 1, 1
subw ax,#00H ; 0 ;[INF] 3, 1
bz $?L0029 ;[INF] 2, 4
decw ax ;[INF] 1, 1
subw ax,bc ;[INF] 1, 1
bnh $?L0030 ;[INF] 3, 4
br $?L0031 ;[INF] 2, 3
; line 138 : {
??bb0B_tsk_sw:
; line 139 : #ifdef _MODEL_CTR_
; line 140 : case( MODEL_JIKKI ):
?L0029:
; line 141 : SW_HOME_n = SW_HOME_n_JIKKI;
$DGL 0,86
movw hl,#0510H ; 1296 ;[INF] 3, 1
mov1 CY,[hl].4 ;[INF] 2, 1
mov1 _SW_HOME_n,CY ;[INF] 3, 2
; line 142 : break;
$DGL 0,87
br $?L0028 ;[INF] 2, 3
; line 143 : #endif
; line 144 : case( MODEL_TS_BOARD ):
?L0030:
; line 145 : case( MODEL_SHIROBAKO ):
; line 146 : SW_HOME_n = SW_HOME_n_TSBOARD;
$DGL 0,91
mov1 CY,P2.0 ;[INF] 3, 1
mov1 _SW_HOME_n,CY ;[INF] 3, 2
; line 147 : break;
$DGL 0,92
br $?L0028 ;[INF] 2, 3
; line 148 : default:
?L0031:
; line 149 : SW_HOME_n = 1;
$DGL 0,94
set1 _SW_HOME_n ;[INF] 3, 2
??eb0B_tsk_sw:
; line 150 : }
?L0028:
; line 151 :
; line 152 : if( SW_HOME_n )
$DGL 0,97
bf _SW_HOME_n,$?L0034 ;[INF] 4, 5
; line 153 : {
??bb0C_tsk_sw:
; line 154 : if( ( CLICK_THRESHOLD < SW_home_count ) && ( SW_home
; _count <= HOLD_THREASHOLD ) )
$DGL 0,99
cmp !_SW_home_count,#02H ; 2 ;[INF] 4, 1
bc $?L0038 ;[INF] 2, 4
cmp !_SW_home_count,#026H ; 38 ;[INF] 4, 1
bnc $?L0038 ;[INF] 2, 4
; line 155 : {
??bb0D_tsk_sw:
; line 156 : set_irq( VREG_C_IRQ0, REG_BIT_SW_HOME_CLICK );
$DGL 0,101
movw ax,#04H ; 4 ;[INF] 3, 1
call !bs_F0060 ;[INF] 3, 3
??eb0D_tsk_sw:
; line 157 : }
; line 158 : }
$DGL 0,103
??eb0C_tsk_sw:
br $?L0038 ;[INF] 2, 3
?L0034:
; line 159 : else if( SW_home_count == HOLD_THREASHOLD )
$DGL 0,104
cmp !_SW_home_count,#025H ; 37 ;[INF] 4, 1
bnz $?L0038 ;[INF] 2, 4
; line 160 : {
??bb0E_tsk_sw:
; line 161 : set_irq( VREG_C_IRQ0, REG_BIT_SW_HOME_HOLD );
$DGL 0,106
movw ax,#08H ; 8 ;[INF] 3, 1
call !bs_F0060 ;[INF] 3, 3
??eb0E_tsk_sw:
; line 162 : }
?L0038:
; line 163 :
; line 164 : // wifi sw //
; line 165 : if( SW_wifi_count == CLICK_THRESHOLD )
$DGL 0,110
cmp !_SW_wifi_count,#01H ; 1 ;[INF] 4, 1
bnz $?L0012 ;[INF] 2, 4
; line 166 : {
??bb0F_tsk_sw:
; line 167 : set_irq( VREG_C_IRQ0, REG_BIT_SW_WIFI_CLICK );
$DGL 0,112
movw ax,#010H ; 16 ;[INF] 3, 1
push ax ;[INF] 1, 1
call !_set_irq ;[INF] 3, 3
pop ax ;[INF] 1, 1
??eb0F_tsk_sw:
; line 168 : }
; line 169 :
; line 170 : break;
??eb03_tsk_sw:
; line 171 : }
?L0012:
; line 172 :
; line 173 : // ボタン押し時間のカウント
; line 174 : /*
; line 175 : if( ( system_status.pwr_state == ON )
; line 176 : || ( system_status.pwr_state == OFF )
; line 177 : || ( system_status.pwr_state == BT_CHARGE ) )
; line 178 : */
; line 179 :
; line 180 : {
??bb10_tsk_sw:
; line 181 : count_sw_n( SW_POW_n, SW_pow_count, SW_pow_mask );
$DGL 0,126
??bb11_tsk_sw:
bf P7.3,$?L0042 ;[INF] 4, 5
??bb12_tsk_sw:
clr1 _SW_pow_mask ;[INF] 3, 2
clrb !_SW_pow_count ;[INF] 3, 1
??eb12_tsk_sw:
br $?L0046 ;[INF] 2, 3
?L0042:
??bb13_tsk_sw:
bf _SW_pow_mask,$?L0044 ;[INF] 4, 5
??bb14_tsk_sw:
clrb !_SW_pow_count ;[INF] 3, 1
??eb14_tsk_sw:
br $?L0046 ;[INF] 2, 3
?L0044:
??bb15_tsk_sw:
inc !_SW_pow_count ;[INF] 3, 2
cmp0 !_SW_pow_count ;[INF] 3, 1
sknz ;[INF] 2, 1
mov !_SW_pow_count,#0FFH ; 255 ;[INF] 4, 1
?L0046:
??eb15_tsk_sw:
??eb13_tsk_sw:
??eb11_tsk_sw:
; line 182 : #ifdef _SW_HOME_ENABLE_
; line 183 : count_sw_n( SW_HOME_n, SW_home_count, SW_home_mask );
$DGL 0,128
??bb16_tsk_sw:
bf _SW_HOME_n,$?L0048 ;[INF] 4, 5
??bb17_tsk_sw:
clr1 _SW_home_mask ;[INF] 3, 2
clrb !_SW_home_count ;[INF] 3, 1
??eb17_tsk_sw:
br $?L0052 ;[INF] 2, 3
?L0048:
??bb18_tsk_sw:
bf _SW_home_mask,$?L0050 ;[INF] 4, 5
??bb19_tsk_sw:
clrb !_SW_home_count ;[INF] 3, 1
??eb19_tsk_sw:
br $?L0052 ;[INF] 2, 3
?L0050:
??bb1A_tsk_sw:
inc !_SW_home_count ;[INF] 3, 2
cmp0 !_SW_home_count ;[INF] 3, 1
sknz ;[INF] 2, 1
mov !_SW_home_count,#0FFH ; 255 ;[INF] 4, 1
?L0052:
??eb1A_tsk_sw:
??eb18_tsk_sw:
??eb16_tsk_sw:
; line 184 : #endif
; line 185 : count_sw_n( SW_WIFI_n, SW_wifi_count, SW_wifi_mask );
$DGL 0,130
??bb1B_tsk_sw:
bf P7.4,$?L0054 ;[INF] 4, 5
??bb1C_tsk_sw:
clr1 _SW_wifi_mask ;[INF] 3, 2
clrb !_SW_wifi_count ;[INF] 3, 1
??eb1C_tsk_sw:
br $?L0058 ;[INF] 2, 3
?L0054:
??bb1D_tsk_sw:
bf _SW_wifi_mask,$?L0056 ;[INF] 4, 5
??bb1E_tsk_sw:
clrb !_SW_wifi_count ;[INF] 3, 1
??eb1E_tsk_sw:
br $?L0058 ;[INF] 2, 3
?L0056:
??bb1F_tsk_sw:
inc !_SW_wifi_count ;[INF] 3, 2
cmp0 !_SW_wifi_count ;[INF] 3, 1
sknz ;[INF] 2, 1
mov !_SW_wifi_count,#0FFH ; 255 ;[INF] 4, 1
?L0058:
??eb1F_tsk_sw:
??eb1D_tsk_sw:
??eb1B_tsk_sw:
??eb10_tsk_sw:
; line 186 : }
; line 187 :
; line 188 : return;
; line 189 : }
$DGL 0,134
??ef_tsk_sw:
pop hl ;[INF] 1, 1
ret ;[INF] 1, 6
??ee_tsk_sw:
@@CODEL CSEG
@@BASE CSEG BASE
END
; *** Code Information ***
;
; $FILE C:\78k_data\yav-mcu-basara\branches\0.10(fix)\sw.c
;
; $FUNC tsk_sw(56)
; void=(void)
; CODE SIZE= 351 bytes, CLOCK_SIZE= 329 clocks, STACK_SIZE= 12 bytes
;
; $CALL set_irq(99)
; void=(int:ax, int:[sp+4])
;
; $CALL set_irq(108)
; void=(int:ax, int:[sp+4])
;
; $CALL set_irq(156)
; void=(int:ax, int:[sp+4])
;
; $CALL set_irq(161)
; void=(int:ax, int:[sp+4])
;
; $CALL set_irq(167)
; void=(int:ax, int:[sp+4])
; Target chip : uPD79F0104
; Device file : E1.00b

View File

@ -0,0 +1,369 @@
; 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 task_debug.c
; In-file : task_debug.c
; Asm-file : inter_asm\task_debug.asm
; Para-file :
$PROCESSOR(9F0104)
$DEBUG
$NODEBUGA
$KANJICODE SJIS
$TOL_INF 03FH, 0210H, 00H, 00H, 00H, 00H, 00H
$DGS FIL_NAM, .file, 05CH, 0FFFEH, 03FH, 067H, 01H, 00H
$DGS AUX_FIL, task_debug.c
$DGS MOD_NAM, task_debug, 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 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 STA_SYM, _lpf_coeff, U, U, 05002H, 03H, 01H, 03H
$DGS AUX_STR, 00H, 00H, 02FH, 02FH, 00H, 00H, 00H, 00H
$DGS GLV_SYM, _tsk_debug, U, U, 01H, 026H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 050H, 00H, 00H
$DGS BEG_FUN, ??bf_tsk_debug, U, U, 00H, 065H, 01H, 00H
$DGS AUX_BEG, 010H, 02H, 04AH
$DGS REG_VAR, _temp, 06H, 0FFFFH, 010CH, 04H, 00H, 00H
$DGS STA_SYM, _count, ?L0003, U, 0CH, 03H, 00H, 00H
$DGS STA_SYM, _task_interval, ?L0004, U, 0CH, 03H, 00H, 00H
$DGS BEG_BLK, ??bb00_tsk_debug, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 06H, 00H, 00H
$DGS END_BLK, ??eb00_tsk_debug, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 015H
$DGS END_FUN, ??ef_tsk_debug, U, U, 00H, 065H, 01H, 00H
$DGS AUX_END, 017H
$DGS GLV_SYM, _tsk_debug2, U, U, 01H, 026H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 05CH, 00H, 00H
$DGS BEG_FUN, ??bf_tsk_debug2, U, U, 00H, 065H, 01H, 00H
$DGS AUX_BEG, 02BH, 04H, 056H
$DGS AUT_VAR, _str, 00H, 0FFFFH, 0CH, 01H, 01H, 03H
$DGS AUX_STR, 00H, 00H, 04H, 04H, 00H, 00H, 00H, 00H
$DGS BEG_BLK, ??bb00_tsk_debug2, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 05H, 00H, 00H
$DGS END_BLK, ??eb00_tsk_debug2, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 01CH
$DGS END_FUN, ??ef_tsk_debug2, U, U, 00H, 065H, 01H, 00H
$DGS AUX_END, 01EH
$DGS GLV_SYM, _temp_debug_3, U, U, 0CH, 026H, 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, _iic_mcu_write, U, U, 0CH, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
EXTRN _system_status
EXTRN _vreg_ctr
EXTRN _iic_mcu_write
PUBLIC _tsk_debug
PUBLIC _temp_debug_3
PUBLIC _tsk_debug2
@@BITS BSEG
@@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)
@@R_INIT CSEG UNIT64KP
DB 00H ; 0
DB (1)
@@INIT DSEG BASEP
?L0003: DS (1)
DS (1)
@@DATA DSEG BASEP
?L0004: DS (1)
_temp_debug_3: 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
; line 1 : #pragma SFR
; line 2 : #pragma NOP
; line 3 : #pragma HALT
; line 4 : #pragma STOP
; line 5 :
; line 6 : #include "incs.h"
; line 7 : #include "renge.h"
; line 8 : #include "pm.h"
; line 9 :
; line 10 : #include "accero.h"
; line 11 :
; line 12 :
; line 13 : /* ========================================================
; line 14 : ======================================================== */
; line 15 : void tsk_debug( )
; line 16 : {
ROM_CODE CSEG BASE
_tsk_debug:
$DGL 1,67
push hl ;[INF] 1, 1
??bf_tsk_debug:
; line 17 : u8 temp;
; line 18 : static u8 count = 0;
; line 19 : static u8 task_interval;
; line 20 :
; line 21 : if( system_status.pwr_state == ON_TRIG ){
$DGL 0,6
cmp !_system_status,#02H ; 2 ;[INF] 4, 1
??bb00_tsk_debug:
??eb00_tsk_debug:
; line 22 :
; line 23 : #ifdef _MODEL_WM0_
; line 24 : PM_CHG_TIMEOUT_DISABLE(); //
; /WL_RST に配線されています
; line 25 : #endif
; line 26 : #ifndef _MODEL_CTR_
; line 27 : iic_mcu_write_a_byte( IIC_SLA_DCP, 0x08, 0x80 ); //
; ACR←0x80 揮発モードへ
; line 28 : #endif
; line 29 :
; line 30 : /*
; line 31 : temp = iic_mcu_read_a_byte( IIC_SLA_8LEDS, IIC_8LEDS_REG_
; DO );
; line 32 : count += 1;
; line 33 : iic_mcu_write_a_byte( IIC_SLA_8LEDS, IIC_8LEDS_REG_DO, co
; unt );
; line 34 : iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 3, count );
; line 35 : */
; line 36 : }
; line 37 : return;
; line 38 : }
$DGL 0,23
??ef_tsk_debug:
pop hl ;[INF] 1, 1
ret ;[INF] 1, 6
??ee_tsk_debug:
; line 39 :
; line 40 : u8 temp_debug_3;
; line 41 :
; line 42 : void tsk_debug2( )
; line 43 : {
_tsk_debug2:
$DGL 1,80
push hl ;[INF] 1, 1
subw sp,#04H ;[INF] 2, 1
movw hl,sp ;[INF] 3, 1
??bf_tsk_debug2:
; line 44 : u8 str[4];
; line 45 :
; line 46 : if( ( system_status.pwr_state == ON ) || ( system_status.pwr
; _state == SLEEP ) )
$DGL 0,4
cmp !_system_status,#03H ; 3 ;[INF] 4, 1
bz $?L0011 ;[INF] 2, 4
cmp !_system_status,#05H ; 5 ;[INF] 4, 1
bnz $?L0009 ;[INF] 2, 4
?L0011:
; line 47 : {
??bb00_tsk_debug2:
; line 48 : /*
; line 49 : str[3] = vreg_ctr[ VREG_C_FREE0 ];
; line 50 : str[2] = vreg_ctr[ VREG_C_FREE1 ];
; line 51 : str[1] = vreg_ctr[ VREG_C_STATUS ];
; line 52 : str[0] = vreg_ctr[ VREG_C_RTC_SEC ];
; line 53 : */
; line 54 : str[3] = vreg_ctr[ VREG_C_SND_VOL ];
$DGL 0,12
mov a,!_vreg_ctr+9 ;[INF] 3, 1
mov [hl+3],a ; str ;[INF] 2, 1
; line 55 : str[2] = vreg_ctr[ VREG_C_TUNE ];
$DGL 0,13
mov a,!_vreg_ctr+8 ;[INF] 3, 1
mov [hl+2],a ; str ;[INF] 2, 1
; line 56 : str[1] = vreg_ctr[ VREG_C_ACC_CONFIG ];
$DGL 0,14
mov a,!_vreg_ctr+64 ;[INF] 3, 1
mov [hl+1],a ; str ;[INF] 2, 1
; line 57 : str[0] = SEC;
$DGL 0,15
mov a,SEC ;[INF] 2, 1
mov [hl],a ; str ;[INF] 1, 1
; line 58 :
; line 59 : // iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 2, vreg_ctr[ VR
; EG_C_IRQ1 ] );
; line 60 : // iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 1, boot_ura );
; line 61 : // iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 1, vreg_ctr[ VR
; EG_C_SND_VOL ] );
; line 62 : // iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 1, vreg_ctr[ VR
; EG_TUNE ] );
; line 63 : // iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 0, vreg_ctr[ VR
; EG_C_ACC_ZH ] );
; line 64 : // iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 3, vreg_ctr[ VR
; EG_C_TUNE ] );
; line 65 : // iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 2, vreg_ctr[ VR
; EG_C_SND_VOL ] );
; line 66 : // iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 1, vreg_ctr[ VR
; EG_C_STATUS ] );
; line 67 : // iic_mcu_write_a_byte( IIC_SLA_DBG_MONITOR, 0, vreg_ctr[ VR
; EG_C_ACC_ZH ] );
; line 68 :
; line 69 : iic_mcu_write( IIC_SLA_DBG_MONITOR, 0, 4, &str[0] );
$DGL 0,27
movw ax,hl ;[INF] 1, 1
push ax ;[INF] 1, 1
movw ax,#04H ; 4 ;[INF] 3, 1
push ax ;[INF] 1, 1
clrw ax ;[INF] 1, 1
push ax ;[INF] 1, 1
mov x,#044H ; 68 ;[INF] 2, 1
call !_iic_mcu_write ;[INF] 3, 3
addw sp,#06H ; 6 ;[INF] 2, 1
??eb00_tsk_debug2:
; line 70 : }
?L0009:
; line 71 : return;
; line 72 : }
$DGL 0,30
??ef_tsk_debug2:
addw sp,#04H ;[INF] 2, 1
pop hl ;[INF] 1, 1
ret ;[INF] 1, 6
??ee_tsk_debug2:
@@CODEL CSEG
@@BASE CSEG BASE
END
; *** Code Information ***
;
; $FILE C:\78k_data\yav-mcu-basara\branches\0.10(fix)\task_debug.c
;
; $FUNC tsk_debug(16)
; void=(void)
; CODE SIZE= 7 bytes, CLOCK_SIZE= 9 clocks, STACK_SIZE= 2 bytes
;
; $FUNC tsk_debug2(43)
; void=(void)
; CODE SIZE= 55 bytes, CLOCK_SIZE= 40 clocks, STACK_SIZE= 16 bytes
;
; $CALL iic_mcu_write(69)
; bc=(int:ax, int:[sp+4], int:[sp+6], pointer:[sp+8])
; Target chip : uPD79F0104
; Device file : E1.00b

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,738 @@
; 78K0R C Compiler V2.10 Assembler Source Date:13 Jun 2010 Time:19:31:24
; 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 vreg_twl.c
; In-file : vreg_twl.c
; Asm-file : inter_asm\vreg_twl.asm
; Para-file :
$PROCESSOR(9F0104)
$DEBUG
$NODEBUGA
$KANJICODE SJIS
$TOL_INF 03FH, 0210H, 02H, 00H, 00H, 00H, 00H
$DGS FIL_NAM, .file, 062H, 0FFFEH, 03FH, 067H, 01H, 00H
$DGS AUX_FIL, vreg_twl.c
$DGS MOD_NAM, vreg_twl, 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_S0051, U, U, 00H, 06H, 00H, 00H
$DGS LAB_SYM, es_S0051, 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 STA_SYM, _tasks, U, U, 01H, 03H, 01H, 027H
$DGS AUX_STR, 00H, 00H, 016H, 0BH, 00H, 00H, 00H, 04H
$DGS GLV_SYM, _vreg_twl_init, U, U, 01H, 026H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 01FH, 00H, 00H
$DGS BEG_FUN, ??bf_vreg_twl_init, U, U, 00H, 065H, 01H, 00H
$DGS AUX_BEG, 019H, 00H, 01FH
$DGS END_FUN, ??ef_vreg_twl_init, U, U, 00H, 065H, 01H, 00H
$DGS AUX_END, 03H
$DGS GLV_SYM, _vreg_twl_write, U, U, 01H, 026H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 033H, 00H, 00H
$DGS BEG_FUN, ??bf_vreg_twl_write, U, U, 00H, 065H, 01H, 00H
$DGS AUX_BEG, 023H, 02H, 025H
$DGS REG_PAR, _adrs, 06H, 0FFFFH, 010CH, 011H, 00H, 00H
$DGS REG_PAR, _data, 07H, 0FFFFH, 010CH, 011H, 00H, 00H
$DGS BEG_BLK, ??bb00_vreg_twl_write, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 03H, 00H, 027H
$DGS BEG_BLK, ??bb01_vreg_twl_write, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 05H, 00H, 02BH
$DGS END_BLK, ??eb01_vreg_twl_write, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 08H
$DGS BEG_BLK, ??bb02_vreg_twl_write, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 027H, 00H, 00H
$DGS END_BLK, ??eb02_vreg_twl_write, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 02AH
$DGS END_BLK, ??eb00_vreg_twl_write, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 02BH
$DGS END_FUN, ??ef_vreg_twl_write, U, U, 00H, 065H, 01H, 00H
$DGS AUX_END, 02DH
$DGS GLV_SYM, _vreg_twl_read, U, U, 0CH, 026H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 057H, 00H, 00H
$DGS BEG_FUN, ??bf_vreg_twl_read, U, U, 00H, 065H, 01H, 00H
$DGS AUX_BEG, 059H, 02H, 039H
$DGS REG_PAR, _phy_adrs, 06H, 0FFFFH, 010CH, 011H, 00H, 00H
$DGS REG_VAR, _temp, 07H, 0FFFFH, 010CH, 04H, 00H, 00H
$DGS BEG_BLK, ??bb00_vreg_twl_read, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 04H, 00H, 03BH
$DGS BEG_BLK, ??bb01_vreg_twl_read, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 09H, 00H, 03FH
$DGS END_BLK, ??eb01_vreg_twl_read, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 0BH
$DGS BEG_BLK, ??bb02_vreg_twl_read, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 0BH, 00H, 043H
$DGS END_BLK, ??eb02_vreg_twl_read, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 0DH
$DGS BEG_BLK, ??bb03_vreg_twl_read, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 0DH, 00H, 047H
$DGS END_BLK, ??eb03_vreg_twl_read, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 0FH
$DGS BEG_BLK, ??bb04_vreg_twl_read, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 0FH, 00H, 04BH
$DGS END_BLK, ??eb04_vreg_twl_read, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 011H
$DGS BEG_BLK, ??bb05_vreg_twl_read, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 011H, 00H, 04FH
$DGS END_BLK, ??eb05_vreg_twl_read, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 013H
$DGS BEG_BLK, ??bb06_vreg_twl_read, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 013H, 00H, 00H
$DGS END_BLK, ??eb06_vreg_twl_read, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 015H
$DGS END_BLK, ??eb00_vreg_twl_read, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 023H
$DGS END_FUN, ??ef_vreg_twl_read, U, U, 00H, 065H, 01H, 00H
$DGS AUX_END, 024H
$DGS GLV_SYM, _adrs_table_twl_ext2int, U, U, 0CH, 026H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 062H, 00H, 00H
$DGS BEG_FUN, ??bf_adrs_table_twl_ext2int, U, U, 00H, 065H, 01H, 00H
$DGS AUX_BEG, 084H, 02H, 05CH
$DGS REG_PAR, _img, 06H, 0FFFFH, 010CH, 011H, 00H, 00H
$DGS BEG_BLK, ??bb00_adrs_table_twl_ext2int, U, U, 00H, 064H, 01H, 00H
$DGS AUX_BEG, 02H, 00H, 00H
$DGS END_BLK, ??eb00_adrs_table_twl_ext2int, U, U, 00H, 064H, 01H, 00H
$DGS AUX_END, 0EH
$DGS END_FUN, ??ef_adrs_table_twl_ext2int, U, U, 00H, 065H, 01H, 00H
$DGS AUX_END, 0FH
$DGS GLV_SYM, _vreg_twl, U, U, 0CH, 026H, 01H, 03H
$DGS AUX_STR, 00H, 00H, 0FH, 0FH, 00H, 00H, 00H, 00H
$DGS GLV_SYM, _tsk_sw, U, U, 01H, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
$DGS GLV_SYM, _tsk_adc, U, U, 01H, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
$DGS GLV_SYM, _tsk_batt, U, U, 01H, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
$DGS GLV_SYM, _tsk_led_pow, U, U, 01H, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
$DGS GLV_SYM, _tsk_led_wifi, U, U, 01H, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
$DGS GLV_SYM, _tsk_led_notify, U, U, 01H, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
$DGS GLV_SYM, _tsk_led_cam, U, U, 01H, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
$DGS GLV_SYM, _tsk_misc_stat, U, U, 01H, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
$DGS GLV_SYM, _tsk_debug, U, U, 01H, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
$DGS GLV_SYM, _tsk_debug2, U, U, 01H, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
$DGS GLV_SYM, _tsk_sys, U, U, 01H, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
$DGS GLV_SYM, _set_irq, U, U, 01H, 02H, 01H, 02H
$DGS AUX_FUN, 00H, U, U, 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
EXTRN _tsk_sw
EXTRN _tsk_adc
EXTRN _tsk_batt
EXTRN _tsk_led_pow
EXTRN _tsk_led_wifi
EXTRN _tsk_led_notify
EXTRN _tsk_led_cam
EXTRN _tsk_misc_stat
EXTRN _tsk_debug
EXTRN _tsk_debug2
EXTRN _tsk_sys
EXTRN _set_irq
EXTRN _vreg_ctr
PUBLIC _vreg_twl
PUBLIC _vreg_twl_init
PUBLIC _vreg_twl_write
PUBLIC _vreg_twl_read
PUBLIC _adrs_table_twl_ext2int
@@BITS BSEG
@@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)
@@R_INIT CSEG UNIT64KP
DW loww (_tsk_sw)
DW loww (_tsk_adc)
DW loww (_tsk_batt)
DW loww (_tsk_led_pow)
DW loww (_tsk_led_wifi)
DW loww (_tsk_led_notify)
DW loww (_tsk_led_cam)
DW loww (_tsk_misc_stat)
DW loww (_tsk_debug)
DW loww (_tsk_debug2)
DW loww (_tsk_sys)
@@INIT DSEG BASEP
_tasks: DS (22)
@@DATA DSEG BASEP
_vreg_twl: DS (15)
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_S0051:
mov a,h ;[INF] 1, 1
and a,#03H ; 3 ;[INF] 2, 1
mov c,a ;[INF] 1, 1
mov a,l ;[INF] 1, 1
mov b,a ;[INF] 1, 1
mov a,c ;[INF] 1, 1
mov _vreg_twl[b],a ;[INF] 3, 1
ret ;[INF] 1, 6
es_S0051:
; *** Sub-Routine Information ***
;
; $SUB bs_S0051
; CODE SIZE= 11 bytes
; End of Sub-Routines
; line 1 : /* ========================================================
; line 2 :
; line 3 : TWL互換側のI2Cレジスタ
; line 4 :
; line 5 : ======================================================== */
; line 6 : #include "incs.h"
; line 7 : #include "jhl_defs.h"
; line 8 : #include "vreg_twl.h"
; line 9 :
; line 10 : #include "vreg_ctr.h"
; line 11 : #include "renge\renge_task_intval.h"
; line 12 :
; line 13 : // ========================================================
; line 14 : #define TWL_REG_VER_INFO 0x35
; line 15 : #define NON_EXIST_REG 0xFF
; line 16 :
; line 17 : // ========================================================
; line 18 : u8 vreg_twl[_REG_TWL_INT_ADRS_ENDMARK];
; line 19 :
; line 20 :
; line 21 : /* ========================================================
; line 22 : 仮想レジスタの初期化
; line 23 : ======================================================== */
; line 24 : void vreg_twl_init( )
; line 25 : {
ROM_CODE CSEG BASE
_vreg_twl_init:
$DGL 1,25
??bf_vreg_twl_init:
; line 26 : vreg_twl[ REG_TWL_INT_ADRS_MODE ] = 0x03;
$DGL 0,2
mov !_vreg_twl+3,#03H ; 3 ;[INF] 4, 1
; line 27 : }
$DGL 0,3
??ef_vreg_twl_init:
ret ;[INF] 1, 6
??ee_vreg_twl_init:
; line 28 :
; line 29 :
; line 30 : // ========================================================
; line 31 : // I2C仮想レジスタに書く・何かアクションする
; line 32 : // 引数 adrs は内部アドレス
; line 33 : //  存在しないアドレスにアクセスした場合、何もしません。
; line 34 : void vreg_twl_write( u8 adrs, u8 data )
; line 35 : {
_vreg_twl_write:
$DGL 1,31
push hl ;[INF] 1, 1
mov a,[sp+6] ;[INF] 2, 1
movw hl,ax ;[INF] 1, 1
??bf_vreg_twl_write:
; line 36 : switch ( adrs )
$DGL 0,2
movw ax,hl ;[INF] 1, 1
clrb a ;[INF] 1, 1
onew bc ;[INF] 1, 1
movw de,#02H ; 2 ;[INF] 3, 1
subw ax,de ;[INF] 1, 1
bz $?L0010 ;[INF] 2, 4
subw ax,bc ;[INF] 1, 1
bz $?L0007 ;[INF] 2, 4
subw ax,de ;[INF] 1, 1
bz $?L0008 ;[INF] 2, 4
subw ax,bc ;[INF] 1, 1
bz $?L0006 ;[INF] 2, 4
subw ax,bc ;[INF] 1, 1
bz $?L0009 ;[INF] 2, 4
br $?L0013 ;[INF] 2, 3
; line 37 : {
??bb00_vreg_twl_write:
; line 38 : case ( REG_TWL_INT_ADRS_VOL ):
?L0006:
; line 39 : {
??bb01_vreg_twl_write:
; line 40 : set_irq( VREG_C_IRQ2, REG_BIT_TWL_SNDVOL_CHANGE );
$DGL 0,6
movw ax,#040H ; 64 ;[INF] 3, 1
push ax ;[INF] 1, 1
mov x,#012H ; 18 ;[INF] 2, 1
call !_set_irq ;[INF] 3, 3
pop ax ;[INF] 1, 1
; line 41 : break;
$DGL 0,7
br $?L0013 ;[INF] 2, 3
??eb01_vreg_twl_write:
; line 42 : }
; line 43 :
; line 44 : case ( REG_TWL_INT_ADRS_MODE ):
?L0007:
; line 45 : vreg_twl[adrs] = ( data & 0x03 );
$DGL 0,11
call !bs_S0051 ;[INF] 3, 3
; line 46 : break;
$DGL 0,12
br $?L0013 ;[INF] 2, 3
; line 47 :
; line 48 : case ( REG_TWL_INT_ADRS_CAM ):
?L0008:
; line 49 : vreg_twl[adrs] = ( data & 0x03 );
$DGL 0,15
call !bs_S0051 ;[INF] 3, 3
; line 50 : tsk_led_cam(); // todo 大丈夫?
$DGL 0,16
call !_tsk_led_cam ;[INF] 3, 3
; line 51 : break;
$DGL 0,17
br $?L0013 ;[INF] 2, 3
; line 52 :
; line 53 : case ( REG_TWL_INT_ADRS_TEMP0 ):
?L0009:
; line 54 : vreg_twl[adrs] = data;
$DGL 0,20
mov a,l ;[INF] 1, 1
mov b,a ;[INF] 1, 1
mov a,h ;[INF] 1, 1
mov _vreg_twl[b],a ;[INF] 3, 1
; line 55 : break;
$DGL 0,21
br $?L0013 ;[INF] 2, 3
; line 56 :
; line 57 : case ( REG_TWL_INT_ADRS_COMMAND ):
?L0010:
; line 58 : /*
; line 59 : if( data <= 2 ){
; line 60 : if( ( data & REG_BIT_TWL_OFF_REQ ) != 0 )
; line 61 : {
; line 62 : set_irq( VREG_C_IRQ2, REG_BIT_TWL_OFF_REQ );
; // OFFも実装していたらしい。
; line 63 : break;
; line 64 : }
; line 65 : else if( ( data & REG_BIT_TWL_RESET_REQ ) != 0 )
; line 66 : {
; line 67 : set_irq( VREG_C_IRQ2, REG_BIT_TWL_RESET_REQ );
; //リセットしかない。他のは、SPIから来ます。
; line 68 : break;
; line 69 : }
; line 70 : }
; line 71 : */
; line 72 : if( data == REG_BIT_TWL_RESET_REQ )
$DGL 0,38
mov a,h ;[INF] 1, 1
dec a ;[INF] 1, 1
bnz $?L0013 ;[INF] 2, 4
; line 73 : {
??bb02_vreg_twl_write:
; line 74 : set_irq( VREG_C_IRQ2, REG_BIT_TWL_RESET_REQ );
; //リセットしかない。他のは、SPIから来ます。
$DGL 0,40
onew ax ;[INF] 1, 1
push ax ;[INF] 1, 1
mov x,#012H ; 18 ;[INF] 2, 1
call !_set_irq ;[INF] 3, 3
pop ax ;[INF] 1, 1
; line 75 : break;
??eb02_vreg_twl_write:
; line 76 : }
?L0013:
??eb00_vreg_twl_write:
; line 77 : }
; line 78 : return;
; line 79 : }
$DGL 0,45
??ef_vreg_twl_write:
pop hl ;[INF] 1, 1
ret ;[INF] 1, 6
??ee_vreg_twl_write:
; line 80 :
; line 81 :
; line 82 :
; line 83 : // ========================================================
; line 84 : // I2C仮想レジスタから読みます。
; line 85 : // 引数 adrs 外から見たときの、アドレス
; line 86 : // 戻り xx データ
; line 87 : //  存在しないアドレスにアクセスした場合、戻り値は0x5A
; line 88 : u8 vreg_twl_read( u8 phy_adrs )
; line 89 : {
_vreg_twl_read:
$DGL 1,51
push hl ;[INF] 1, 1
movw hl,ax ;[INF] 1, 1
??bf_vreg_twl_read:
; line 90 : u8 temp;
; line 91 :
; line 92 : switch( phy_adrs ){
$DGL 0,4
movw ax,hl ;[INF] 1, 1
clrb a ;[INF] 1, 1
onew bc ;[INF] 1, 1
subw ax,#00H ; 0 ;[INF] 3, 1
bz $?L0018 ;[INF] 2, 4
subw ax,bc ;[INF] 1, 1
bz $?L0020 ;[INF] 2, 4
subw ax,#03H ; 3 ;[INF] 3, 1
bz $?L0019 ;[INF] 2, 4
subw ax,#0FBH ; 251 ;[INF] 3, 1
bz $?L0022 ;[INF] 2, 4
br $?L0021 ;[INF] 2, 3
??bb00_vreg_twl_read:
; line 93 : case( REG_TWL_INT_ADRS_VER_INFO ):
?L0018:
; line 94 : return( TWL_REG_VER_INFO );
$DGL 0,6
movw bc,#035H ; 53 ;[INF] 3, 1
br $?L0017 ;[INF] 2, 3
; line 95 :
; line 96 : case( REG_TWL_INT_ADRS_POWER_INFO ):
?L0019:
; line 97 : if( vreg_ctr[ VREG_C_BT_REMAIN ] > 90 ){
$DGL 0,9
cmp !_vreg_ctr+11,#05BH ; 91 ;[INF] 4, 1
bc $?L0025 ;[INF] 2, 4
??bb01_vreg_twl_read:
; line 98 : vreg_twl[ REG_TWL_INT_ADRS_POWER_INFO ] = 0x0F;
$DGL 0,10
mov !_vreg_twl+4,#0FH ; 15 ;[INF] 4, 1
??eb01_vreg_twl_read:
; line 99 : }else if( vreg_ctr[ VREG_C_BT_REMAIN ] > 75 ){
$DGL 0,11
br $?L0034 ;[INF] 2, 3
?L0025:
cmp !_vreg_ctr+11,#04CH ; 76 ;[INF] 4, 1
bc $?L0027 ;[INF] 2, 4
??bb02_vreg_twl_read:
; line 100 : vreg_twl[ REG_TWL_INT_ADRS_POWER_INFO ] = 0x0B;
$DGL 0,12
mov !_vreg_twl+4,#0BH ; 11 ;[INF] 4, 1
??eb02_vreg_twl_read:
; line 101 : }else if( vreg_ctr[ VREG_C_BT_REMAIN ] > 50 ){
$DGL 0,13
br $?L0034 ;[INF] 2, 3
?L0027:
cmp !_vreg_ctr+11,#033H ; 51 ;[INF] 4, 1
bc $?L0029 ;[INF] 2, 4
??bb03_vreg_twl_read:
; line 102 : vreg_twl[ REG_TWL_INT_ADRS_POWER_INFO ] = 0x07;
$DGL 0,14
mov !_vreg_twl+4,#07H ; 7 ;[INF] 4, 1
??eb03_vreg_twl_read:
; line 103 : }else if( vreg_ctr[ VREG_C_BT_REMAIN ] > 25 ){
$DGL 0,15
br $?L0034 ;[INF] 2, 3
?L0029:
cmp !_vreg_ctr+11,#01AH ; 26 ;[INF] 4, 1
bc $?L0031 ;[INF] 2, 4
??bb04_vreg_twl_read:
; line 104 : vreg_twl[ REG_TWL_INT_ADRS_POWER_INFO ] = 0x03;
$DGL 0,16
mov !_vreg_twl+4,#03H ; 3 ;[INF] 4, 1
??eb04_vreg_twl_read:
; line 105 : }else if( vreg_ctr[ VREG_C_BT_REMAIN ] > 5 ){
$DGL 0,17
br $?L0034 ;[INF] 2, 3
?L0031:
cmp !_vreg_ctr+11,#06H ; 6 ;[INF] 4, 1
bc $?L0033 ;[INF] 2, 4
??bb05_vreg_twl_read:
; line 106 : vreg_twl[ REG_TWL_INT_ADRS_POWER_INFO ] = 0x01;
$DGL 0,18
oneb !_vreg_twl+4 ;[INF] 3, 1
??eb05_vreg_twl_read:
; line 107 : }else{
$DGL 0,19
br $?L0034 ;[INF] 2, 3
?L0033:
??bb06_vreg_twl_read:
; line 108 : vreg_twl[ REG_TWL_INT_ADRS_POWER_INFO ] = 0x00;
$DGL 0,20
clrb !_vreg_twl+4 ;[INF] 3, 1
??eb06_vreg_twl_read:
; line 109 : }
?L0034:
; line 110 :
; line 111 : return( vreg_twl[ REG_TWL_INT_ADRS_POWER_INFO ] | ( !B
; T_CHG_n ? 0x80: 0x00 ) ); // アダプタbit
$DGL 0,23
bt P5.1,$?L0035 ;[INF] 4, 5
movw ax,#080H ; 128 ;[INF] 3, 1
br $?L0036 ;[INF] 2, 3
?L0035:
clrw ax ;[INF] 1, 1
?L0036:
xch a,x ;[INF] 1, 1
or a,!_vreg_twl+4 ;[INF] 3, 1
xch a,x ;[INF] 1, 1
movw bc,ax ;[INF] 1, 1
br $?L0017 ;[INF] 2, 3
; line 112 :
; line 113 : case( REG_TWL_INT_ADRS_IRQ ):
?L0020:
; line 114 : temp = vreg_twl[ REG_TWL_INT_ADRS_IRQ ];
$DGL 0,26
mov a,!_vreg_twl+1 ;[INF] 3, 1
; line 115 : vreg_twl[ REG_TWL_INT_ADRS_IRQ ]= 0;
$DGL 0,27
clrb !_vreg_twl+1 ;[INF] 3, 1
; line 116 : return( temp );
$DGL 0,28
shrw ax,8 ;[INF] 2, 1
movw bc,ax ;[INF] 1, 1
br $?L0017 ;[INF] 2, 3
; line 117 :
; line 118 : default:
?L0021:
; line 119 : return( vreg_twl[ phy_adrs ] );
$DGL 0,31
mov a,l ;[INF] 1, 1
mov b,a ;[INF] 1, 1
mov a,_vreg_twl[b] ;[INF] 3, 1
shrw ax,8 ;[INF] 2, 1
movw bc,ax ;[INF] 1, 1
br $?L0017 ;[INF] 2, 3
; line 120 :
; line 121 : case( REG_TWL_ADRS_NON_EXIST ):
?L0022:
; line 122 : return( 0x00 );
$DGL 0,34
clrw bc ;[INF] 1, 1
??eb00_vreg_twl_read:
; line 123 : }
?L0017:
; line 124 : }
$DGL 0,36
??ef_vreg_twl_read:
pop hl ;[INF] 1, 1
ret ;[INF] 1, 6
??ee_vreg_twl_read:
; line 125 :
; line 126 :
; line 127 :
; line 128 : // ========================================================
; line 129 : // 外部から見える虫食いアドレスを、内部の連続アドレスに読み替える
; line 130 : // 0xFFは存在しないアドレス。
; line 131 : u8 adrs_table_twl_ext2int( u8 img )
; line 132 : {
_adrs_table_twl_ext2int:
$DGL 1,87
push hl ;[INF] 1, 1
movw hl,ax ;[INF] 1, 1
??bf_adrs_table_twl_ext2int:
; line 133 : switch( img ){
$DGL 0,2
movw ax,hl ;[INF] 1, 1
clrb a ;[INF] 1, 1
onew bc ;[INF] 1, 1
subw ax,#00H ; 0 ;[INF] 3, 1
bz $?L0046 ;[INF] 2, 4
subw ax,#010H ; 16 ;[INF] 3, 1
bz $?L0040 ;[INF] 2, 4
subw ax,bc ;[INF] 1, 1
bz $?L0041 ;[INF] 2, 4
subw ax,bc ;[INF] 1, 1
bz $?L0047 ;[INF] 2, 4
subw ax,#0EH ; 14 ;[INF] 3, 1
bz $?L0042 ;[INF] 2, 4
subw ax,#011H ; 17 ;[INF] 3, 1
bz $?L0043 ;[INF] 2, 4
subw ax,#0FH ; 15 ;[INF] 3, 1
bz $?L0044 ;[INF] 2, 4
subw ax,#030H ; 48 ;[INF] 3, 1
bz $?L0045 ;[INF] 2, 4
br $?L0048 ;[INF] 2, 3
??bb00_adrs_table_twl_ext2int:
; line 134 : case( REG_TWL_ADRS_IRQ ): return( REG_TWL_INT_ADRS_
; IRQ );
$DGL 0,3
?L0040:
onew bc ;[INF] 1, 1
br $?L0039 ;[INF] 2, 3
; line 135 : case( REG_TWL_ADRS_COMMAND ): return( REG_TWL_INT_ADRS_
; COMMAND );
$DGL 0,4
?L0041:
onew bc ;[INF] 1, 1
incw bc ;[INF] 1, 1
br $?L0039 ;[INF] 2, 3
; line 136 : case( REG_TWL_ADRS_POWER_INFO ): return( REG_TWL_INT_ADRS_
; POWER_INFO );
$DGL 0,5
?L0042:
movw bc,#04H ; 4 ;[INF] 3, 1
br $?L0039 ;[INF] 2, 3
; line 137 : case( REG_TWL_ADRS_CAM ): return( REG_TWL_INT_ADRS_
; CAM );
$DGL 0,6
?L0043:
movw bc,#05H ; 5 ;[INF] 3, 1
br $?L0039 ;[INF] 2, 3
; line 138 : case( REG_TWL_ADRS_VOL ): return( REG_TWL_INT_ADRS_
; VOL );
$DGL 0,7
?L0044:
movw bc,#06H ; 6 ;[INF] 3, 1
br $?L0039 ;[INF] 2, 3
; line 139 : case( REG_TWL_ADRS_TEMP0 ): return( REG_TWL_INT_ADRS_
; TEMP0 );
$DGL 0,8
?L0045:
movw bc,#07H ; 7 ;[INF] 3, 1
br $?L0039 ;[INF] 2, 3
; line 140 : case( REG_TWL_ADRS_VER_INFO ): return( REG_TWL_INT_ADRS_
; VER_INFO );
$DGL 0,9
?L0046:
clrw bc ;[INF] 1, 1
br $?L0039 ;[INF] 2, 3
; line 141 : case( REG_TWL_ADRS_MODE ): return( REG_TWL_INT_ADRS_
; MODE );
$DGL 0,10
?L0047:
movw bc,#03H ; 3 ;[INF] 3, 1
br $?L0039 ;[INF] 2, 3
; line 142 : default: return( REG_TWL_ADRS_NON_
; EXIST );
$DGL 0,11
?L0048:
clrw bc ;[INF] 1, 1
dec c ;[INF] 1, 1
??eb00_adrs_table_twl_ext2int:
; line 143 : // 0が読めればよい、書けなくて良い
; line 144 : // case( REG_TWL_ADRS_WIFI ): return( REG_TWL_INT_ADR
; S_WIFI );
; line 145 : }
?L0039:
; line 146 : }
$DGL 0,15
??ef_adrs_table_twl_ext2int:
pop hl ;[INF] 1, 1
ret ;[INF] 1, 6
??ee_adrs_table_twl_ext2int:
@@CODEL CSEG
@@BASE CSEG BASE
END
; *** Code Information ***
;
; $FILE C:\78k_data\yav-mcu-basara\branches\0.10(fix)\vreg_twl.c
;
; $FUNC vreg_twl_init(25)
; void=(void)
; CODE SIZE= 5 bytes, CLOCK_SIZE= 7 clocks, STACK_SIZE= 0 bytes
;
; $FUNC vreg_twl_write(35)
; void=(unsigned char adrs:x, unsigned char data:[sp+6])
; CODE SIZE= 74 bytes, CLOCK_SIZE= 113 clocks, STACK_SIZE= 8 bytes
;
; $CALL set_irq(40)
; void=(int:ax, int:[sp+4])
;
; $CALL tsk_led_cam(50)
; void=(void)
;
; $CALL set_irq(74)
; void=(int:ax, int:[sp+4])
;
; $FUNC vreg_twl_read(89)
; bc=(unsigned char phy_adrs:x)
; CODE SIZE= 134 bytes, CLOCK_SIZE= 118 clocks, STACK_SIZE= 2 bytes
;
; $FUNC adrs_table_twl_ext2int(132)
; bc=(unsigned char img:x)
; CODE SIZE= 82 bytes, CLOCK_SIZE= 90 clocks, STACK_SIZE= 2 bytes
; Target chip : uPD79F0104
; Device file : E1.00b

View File

@ -0,0 +1,26 @@
#ifndef __jhl_defs_h__
#define __jhl_defs_h__
typedef unsigned char u8;
typedef signed char s8;
typedef unsigned short u16;
typedef signed short s16;
typedef unsigned char err;
#include "config.h"
#define set_bit( cond, reg, pos ) \
{ \
if( cond ){ \
reg |= pos; \
}else{ \
reg &= ~pos; \
} \
}
#endif

618
branches/0.10(X3)/led.c Normal file
View File

@ -0,0 +1,618 @@
/* ========================================================
LED.c
======================================================== */
#pragma sfr
#include "incs.h"
#include "led.h"
// ========================================================
// TPS0
#define BIT_PRS012 ( 1 << 2 )
#define BIT_PRS002 ( 1 << 6 )
// TMR0
#define BIT_CKS0 15
#define BIT_CCS0 12
#define BIT_MASTER0 11
#define BIT_STS0 8
#define BIT_CIS0 6
#define BIT_MD123 1
#define BIT_MD0 0
// ========================================================
static void led_pow_normal( );
static void led_pow_hotaru( );
// ========================================================
static const char MSG_MAIL[] = { 0b11110110, 0b11011010, 0b01101110, 0b10010100 };
#define MSG_SPD 60
// ↑255/3以下であること
// ========================================================
void LED_init( )
{
/**
PWMのセット
 (P01:/reset2) 
     ( )
         
         WiFi
         (32kHz out 使)
         
         
         
*/
TAU0EN = 1;
TPS0 = BIT_PRS012 | BIT_PRS002; // マスタークロックはCK01,8M/2 /2^4 = 250kHz
TMR00 =
1 << BIT_CKS0 | 0 << BIT_CCS0 | 1 << BIT_MASTER0 | 0 << BIT_STS0 | 0
<< BIT_CIS0 | 0 << BIT_MD123 | 1 << BIT_MD0;
TMR01 = TMR02 = TMR03 = TMR04 = TMR05 = TMR06 = TMR07 =
1 << BIT_CKS0 | 0 << BIT_CCS0 | 0 << BIT_MASTER0 | 4 << BIT_STS0 | 0
<< BIT_CIS0 | 4 << BIT_MD123 | 1 << BIT_MD0;
ISC = 0;
TOM0 = 0b0000000011111110; // 出力モード。4はPWM出力しないが1にしないとTO5以降にクロックが届かない
#ifdef _MCU_BSR_
TOL0 = 0b0000000000000000; // 出力を反転させるかフラグ
#else
TOL0 = 0b0000000000000100; // 出力を反転させるかフラグ
#endif
TO0 = 0; // タイマー動作中で、タイマー出力にしてないときのピンのラッチ。タイマー出力を使わないなら0
TOE0 = 0b0000000011101110; // TOxをタイマーモジュールが制御
TS0 = 0b0000000011101111; // 動作開始
TDR00 = LED_BRIGHT_MAX - 1; // 10bit, 周期
if( system_status.reboot )
{
vreg_ctr[VREG_C_LED_POW] = LED_POW_ILM_AUTO;
LED_duty_pow_H = LED_BRIGHT_MAX;
}
}
void LED_stop( )
{
TT0 = 0b0000000011101111; // 一斉停止(しないとだめ)
TOE0 = 0b0000000000000000; // TOxをタイマーモジュールが制御(GPIOになる)
TAU0EN = 0;
}
/* ========================================================
// 電源LED
LED_POW_B,R 6,7
TDR00 (0x03FFTPS0で250kHzでカウントアップ10bitなら250Hz位になる)
TDR0x Duty 0TDR00( =0x03FF)
enum pwr_state_{
OFF_TRIG = 0,
OFF,
ON_TRIG,
ON,
SLEEP_TRIG,
SLEEP
};
enum LED_ILUM_MODE{
LED_POW_ILM_AUTO,
LED_POW_ILM_ON,
LED_POW_ILM_HOTARU,
LED_POW_ILM_CEOFF
};
======================================================== */
void tsk_led_pow( )
{
switch ( vreg_ctr[VREG_C_LED_POW] )
{
// 自動切り替え
case ( LED_POW_ILM_AUTO ):
switch ( system_status.pwr_state )
{
case SLEEP:
led_pow_hotaru( );
break;
case ON:
led_pow_normal( );
break;
default:
break;
}
break;
// 強制
case ( LED_POW_ILM_OFF ):
LED_duty_pow_H -= ( LED_duty_pow_H == 0x0000 ) ? 0 : 1;
LED_duty_pow_L -= ( LED_duty_pow_L == 0x0000 ) ? 0 : 1;
break;
case ( LED_POW_ILM_HOTARU ):
led_pow_hotaru( );
break;
case ( LED_POW_ILM_ON ):
default:
led_pow_normal( );
break;
case ( LED_POW_ILM_ONLY_RED ):
LED_duty_pow_H = 0x0000;
LED_duty_pow_L = LED_BRIGHT_MAX;
break;
case ( LED_POW_ILM_ONLY_BLUE ):
LED_duty_pow_H = LED_BRIGHT_MAX;
LED_duty_pow_L = 0x0000;
break;
}
}
/* ========================================================
 
======================================================== */
static void led_pow_normal( )
{
static u8 state;
if( vreg_ctr[VREG_C_BT_REMAIN] < 3 )
{
// 赤点滅
state++;
if( state < 127 )
{
LED_duty_pow_H = 0x0000;
LED_duty_pow_L = 0x0000;
}
else
{
LED_duty_pow_L = vreg_ctr[VREG_C_LED_BRIGHT];
}
return;
}
else if( vreg_ctr[VREG_C_BT_REMAIN] < 12 )
{
// 赤点灯
if( LED_duty_pow_H != 0x0000 )
{ // 青フェードアウト
LED_duty_pow_H -= 1;
}
if( LED_duty_pow_L != vreg_ctr[VREG_C_LED_BRIGHT] )
{ // 赤フェードイン
LED_duty_pow_L += ( LED_duty_pow_L < vreg_ctr[VREG_C_LED_BRIGHT] ) ? 1 : -1;
}
return;
}
else
{
// 青点灯
if( LED_duty_pow_H != vreg_ctr[VREG_C_LED_BRIGHT] )
{
LED_duty_pow_H += ( LED_duty_pow_H < vreg_ctr[VREG_C_LED_BRIGHT] ) ? 1 : -1;
}
if( LED_duty_pow_L != 0x0000 )
{
LED_duty_pow_L -= 1;
}
}
return;
}
/* ========================================================
======================================================== */
static void led_pow_hotaru( )
{
static u8 delay;
static u8 state;
static u16 blue_to;
static u16 red_to;
if( delay != 0 )
{
delay -= 1;
return;
}
else
{
delay = 10;
}
if( LED_duty_pow_L != red_to )
{
if( LED_duty_pow_L > red_to )
{
LED_duty_pow_L -= 1;
}
else
{
LED_duty_pow_L += 2;
}
}
if( LED_duty_pow_H != blue_to )
{
if( LED_duty_pow_H > blue_to )
{
LED_duty_pow_H -= 1;
}
else
{
LED_duty_pow_H += 2;
}
}
switch ( state )
{
// フェードイン
case ( 0 ):
case ( 2 ):
case ( 4 ):
if( vreg_ctr[VREG_C_BT_REMAIN] < 12 )
{
// 赤いとき
blue_to = 0;
red_to = vreg_ctr[VREG_C_LED_BRIGHT];
}
else
{
blue_to = vreg_ctr[VREG_C_LED_BRIGHT];
red_to = 0;
}
break;
default:
// フェードアウト
if( vreg_ctr[VREG_C_BT_REMAIN] < 12 )
{
red_to = 2;
}
else
{
blue_to = 2;
}
break;
}
if( ( LED_duty_pow_H == blue_to ) && ( LED_duty_pow_L == red_to ) )
{
state += 1;
}
return;
}
/* ========================================================
* 使 *
LED_Wifi 3
todo
======================================================== */
void tsk_led_wifi( )
{
static u8 task_interval;
static u8 remain_wifi_tx;
static u8 state_wifi_tx;
static u8 flag_wifi_TX;
if( task_interval-- != 0 )
{
return;
}
// 送信パルスのラッチ
if( vreg_ctr[VREG_C_LED_WIFI] == WIFI_LED_TXAUTO )
{
if( WIFI_txLatch )
{
WIFI_txLatch = 0;
flag_wifi_TX = 2;
}
}
else
{
flag_wifi_TX = 0;
}
switch ( vreg_ctr[VREG_C_LED_WIFI] )
{
case ( WIFI_LED_OFF ):
default:
LED_duty_WiFi = 0;
state_wifi_tx = 0;
remain_wifi_tx = 0;
break;
case ( WIFI_LED_ON ):
LED_duty_WiFi = vreg_ctr[VREG_C_LED_BRIGHT];
state_wifi_tx = 0;
remain_wifi_tx = 0;
break;
case ( WIFI_LED_TXAUTO ):
if( flag_wifi_TX != 0 ) // 短いパルスを捕まえるために、割り込みフラグを見る
{
// 送信パターン
switch ( state_wifi_tx )
{
case ( 1 ):
case ( 3 ):
case ( 5 ):
LED_duty_WiFi = 0;
break;
default:
LED_duty_WiFi = vreg_ctr[VREG_C_LED_BRIGHT];
}
state_wifi_tx++;
if( state_wifi_tx == 32 )
{
state_wifi_tx = 0;
flag_wifi_TX -= 1;
}
task_interval = 22;
return;
}
else
{
// 送信フラグ待ち
LED_duty_WiFi = vreg_ctr[VREG_C_LED_BRIGHT];
task_interval = 200;
return;
}
break;
}
}
/* ========================================================
* 使 *
LED_Wifi2 P24
======================================================== */
void tsk_led_notify( )
{
static u8 task_interval;
static u8 flg_char_space;
static u8 state_notify_led; // 点灯パターンの進行具合
static u8 flag_wifi_TX;
if( task_interval-- != 0 )
{
return;
}
switch ( vreg_ctr[VREG_C_LED_NOTIFY] )
{
case ( NOTIFY_LED_OFF ):
default:
LED_duty_NOTIFY = 0;
state_notify_led = 0;
flg_char_space = 0;
break;
case ( NOTIFY_LED_ON ):
LED_duty_NOTIFY = vreg_ctr[VREG_C_LED_BRIGHT];
state_notify_led = 0;
flg_char_space = 0;
break;
case ( NOTIFY_LED_PTN0 ):
// ゆっくりバースト
switch ( state_notify_led )
{
case ( 1 ):
case ( 3 ):
case ( 5 ):
LED_duty_NOTIFY = vreg_ctr[VREG_C_LED_BRIGHT];
break;
default:
LED_duty_NOTIFY = 0;
}
state_notify_led++;
if( state_notify_led == 16 )
{
state_notify_led = 0;
}
task_interval = 50;
return;
case ( NOTIFY_LED_PTN1 ):
// データテーブルに従って点滅
{
u8 dat;
task_interval = MSG_SPD; // 共通のため。場合によって上書き
if( flg_char_space != 0 )
{
LED_duty_NOTIFY = 0;
flg_char_space = 0;
return;
}
// データバッファの見る位置の更新
dat = ( MSG_MAIL[state_notify_led / 4] << ( ( state_notify_led % 4 ) * 2 ) ) & 0xC0;
if( dat == 0 )
{
state_notify_led = 0;
}
else
{
state_notify_led += 1;
}
flg_char_space = 1;
if(( dat & 0b10000000 ) != 0 )
{
// 点灯はさせる
LED_duty_NOTIFY = vreg_ctr[VREG_C_LED_BRIGHT];
if(( dat & 0b01000000 ) == 0 )
{
// 短
// nothing to do
}
else
{
// 長
task_interval = ( MSG_SPD * 3 );
}
// 次は単語間休み、とかの判定をさせたかったが
/// 1バイトに2ビットずつデータが並んでおり、次のバイトに
/// またがるようなときが面倒なのでやめる
return;
}
else
{
if(( dat & 0b01000000 ) == 0 )
{
// 一文終了
task_interval = ( MSG_SPD * 3 );
}
else
{
// 単語間
// nothing to do
}
return;
}
}
}
}
/******************************************************//**
LED_Cam TO02
\n BLINK,*_PLUSE 1
\n OFFBLINK OFFが無視されます
*********************************************************/
void tsk_led_cam( )
{
static u8 state_led_cam = 0;
static u8 task_interval;
static u8 state_led_cam_twl;
if( task_interval != 0 )
{
task_interval -= 1;
return;
}
// ブリンクのように待たせたいとき以外は毎週起動する
// (レジスタの変更にすぐに反応する)
switch ( vreg_ctr[VREG_C_LED_CAM] )
{
case ( CAM_LED_OFF ):
default:
LED_duty_CAM = 0;
state_led_cam = 0;
break;
case ( CAM_LED_ON ):
LED_duty_CAM = vreg_ctr[VREG_C_LED_BRIGHT];
state_led_cam = 0;
break;
case ( CAM_LED_BLINK ):
if( state_led_cam == 0 )
{
LED_duty_CAM = vreg_ctr[VREG_C_LED_BRIGHT];
state_led_cam = 1;
}
else
{
LED_duty_CAM = 0;
state_led_cam = 0;
}
task_interval = 250;
break;
case ( CAM_LED_ON_PLUSE ):
if( state_led_cam == 0 )
{
LED_duty_CAM = vreg_ctr[VREG_C_LED_BRIGHT];
state_led_cam = 1;
task_interval = 250;
}
else
{
vreg_ctr[VREG_C_LED_CAM] = CAM_LED_OFF;
}
break;
case ( CAM_LED_OFF_PLUSE ):
if( state_led_cam == 0 )
{
LED_duty_CAM = 0;
state_led_cam = 1;
task_interval = 250;
}
else
{
vreg_ctr[VREG_C_LED_CAM] = CAM_LED_ON;
}
break;
case ( CAM_LED_BY_TWL ):
switch ( vreg_twl[ REG_TWL_INT_ADRS_CAM ] ){ // switchのネストとか…
case( TWL_CAMLED_OFF ):
LED_duty_CAM = 0;
state_led_cam = 0;
break;
case( TWL_CAMLED_BLINK ):
if( state_led_cam == 0 )
{
LED_duty_CAM = vreg_ctr[VREG_C_LED_BRIGHT];
state_led_cam = 1;
}
else
{
LED_duty_CAM = 0;
state_led_cam = 0;
}
task_interval = 250;
break;
case( TWL_CAMLED_ON ):
case( TWL_CAMLED_DEF_ON ):
default:
LED_duty_CAM = vreg_ctr[VREG_C_LED_BRIGHT];
state_led_cam = 1;
break;
}
}
return;
}

90
branches/0.10(X3)/led.h Normal file
View File

@ -0,0 +1,90 @@
#ifndef __led__
#define __led__
// ====================================
// LED_DUTY
#define LED_duty_pow_L TDR07
#define LED_duty_pow_H TDR06
#define LED_duty_WiFi TDR03
#define LED_duty_NOTIFY TDR05
#define LED_duty_CAM TDR02
#define LED_duty_TUNE TDR01
// wifi2はPWMできません。
#define LED_BRIGHT_MAX 0x00FF
// ====================================
#ifdef _MCU_BSR_ // 電波送信パルス
#define WIFI_txLatch PIF21
#else
#define WIFI_txLatch PIF7
#endif
// ====================================
enum LED_ILUM_MODE
{
LED_POW_ILM_AUTO = 0,
LED_POW_ILM_ON,
LED_POW_ILM_HOTARU,
LED_POW_ILM_OFF,
LED_POW_ILM_ONLY_RED,
LED_POW_ILM_ONLY_BLUE
};
enum LED_MODE_TUNE
{
LED_TUNE_ILM_OFF = 0,
LED_TUNE_ILM_ON,
LED_TUNE_ILM_SVR
};
// VREG_C_WIFI_LED
enum
{
WIFI_LED_OFF = 0,
WIFI_LED_ON,
WIFI_LED_TXAUTO,
WIFI_LED_PTN0,
WIFI_LED_PTN1
};
// VREG_C_WIFI_NOTIFY
enum
{
NOTIFY_LED_OFF = 0,
NOTIFY_LED_ON,
NOTIFY_LED_PTN0,
NOTIFY_LED_PTN1,
NOTIFY_LED_PTN2
};
// VREG_C_CAM_LED
enum
{
CAM_LED_OFF = 0,
CAM_LED_BLINK,
CAM_LED_ON,
CAM_LED_BY_TWL,
CAM_LED_ON_PLUSE,
CAM_LED_OFF_PLUSE
};
// ====================================
void LED_init( );
void LED_stop( );
#endif

2185
branches/0.10(X3)/led.prn Normal file

File diff suppressed because it is too large Load Diff

BIN
branches/0.10(X3)/led.rel Normal file

Binary file not shown.

396
branches/0.10(X3)/loader.c Normal file
View File

@ -0,0 +1,396 @@
/* ========================================================
MCU CTR BSR
2009/03/30
======================================================== */
#pragma SFR
#pragma di
#pragma ei
#pragma nop
#pragma stop
#pragma halt
#pragma opc
#include "incs_loader.h"
#include "fsl.h"
#include "fsl_user.h"
#include "i2c_ctr.h"
#include "i2c_mcu.h"
#include "pm.h"
#include "rtc.h"
#include "reboot.h"
// ========================================================
#if (FSL_DATA_BUFFER_SIZE>0)
fsl_u08 fsl_data_buffer[FSL_DATA_BUFFER_SIZE];
#endif
#ifdef FSL_INT_BACKUP
static fsl_u08 fsl_MK0L_bak_u08; /* if (interrupt backup required) */
static fsl_u08 fsl_MK0H_bak_u08; /* { */
static fsl_u08 fsl_MK1L_bak_u08; /* reserve space for backup information */
static fsl_u08 fsl_MK1H_bak_u08; /* of interrupt mask flags */
static fsl_u08 fsl_MK2L_bak_u08; /* */
static fsl_u08 fsl_MK2H_bak_u08; /* } */
#endif
// magic.c の記述と違わないように注意!
#define MGC_LOAD 0x0FF6
#define MGC_FOOT 0x4FF6
// ========================================================
void FSL_Open( void );
void FSL_Close( void );
void hdwinit( void );
void power_save( );
static void hdwinit2( );
extern void main_loop( );
// ========================================================
void main( )
{
while( 1 )
{
WDT_Restart( );
if( RTCEN )
{
system_status.reboot = 1;
}
else if( ( RESF & 0x10 ) != 0) // WDRF,WDTでリセット
{
system_status.reboot = 1;
#ifdef _PMIC_TWL_
// 暴走してしまうので再起動させる
PM_reset_ast();
/// hdwinit2ないでリセット解除される。続きに続行してよい頭痛が痛い的
#endif
vreg_ctr[ VREG_C_MCU_STATUS ] |= REG_BIT_STATUS_WDT_RESET;
// set_irq( VREG_C_IRQ0, REG_BIT_IRQ_WDT_RESET );
// ↑I2Cの初期化後に行う
hdwinit2( );
}
else
{
u8 pwup_delay0 = 0;
u8 pwup_delay1 = 0;
do
{ // 電池接続時、16ms待ってみる(チャタリング対策)
pwup_delay0 += 1;
do
{
pwup_delay1 += 1;
}
while( pwup_delay1 != 0 ); // u16にするとコンパイラが怒るんだが…。
}
while( pwup_delay0 != 0 );
hdwinit2( );
}
// ファームの整合性チェック //
{
u8 i;
u8 comp = 0;
// ローダーと本体は同じバージョンか?
/// 次へのアップデートの途中で終わってないか?
for( i = 0; i < sizeof( __TIME__ ); i++ ) // sizeof( __TIME__ ) = 8 らし
{
comp += ( *( __far u8 * )( MGC_LOAD + i ) == *( u8 * )( MGC_FOOT + i ) ) ? 0 : 1;
}
if( comp != 0 )
{
// ファームリストアを試みる
firm_restore( );
// 帰ってこない。リセットをかける。
}
}
// 通常運転
main_loop( );
}
}
/* ========================================================
======================================================== */
__interrupt void int_kr( )
{
}
/* ========================================================
ext dc
======================================================== */
__interrupt void intp4( )
{
}
/* ========================================================
shell close
======================================================== */
__interrupt void intp5( )
{
}
// ========================================================
void hdwinit( void )
{ // スタートアップルーチンが勝手に呼びます
DI( ); /* マスタ割り込み禁止 */
CMC = 0b00010110; /* X1発振せず(入力ポート)、XT1使用、推奨の推奨で超低電力発振 */
CSC = 0b10000000; /* X1発振なし、XT1発振あり、高速内蔵発振動作 */
#ifdef _MCU_BSR_
OSMC = 0x01; /* 隠しレジスタ */
#endif
#ifdef _OVERCLOCK_
CKC = 0b00001000; /* CPU/周辺クロック=fMAIN、fMAIN=fMX、fCLK=fMX */
#else
// CKC デフォルトでよい
#endif
/*--- 低電圧検出回路の設定 ---*/
/* リセット解除時のデフォルトは、オプション・バイトにて指定される */
LVIS = 0b00000000; /* VLVI = 4.22±0.1V */
LVIM = 0b00000000; /* LVI動作禁止 */
/* 電源電圧(VDD)<検出電圧(VLVI)時に割込発生 */
/* 電源電圧(VDD)≧検出電圧<VLVI)、または動作禁止時に低電圧検出 */
}
void hdwinit2( )
{
// ポート設定 /////////////////////////////////////////
if( system_status.reboot ) // リセットピンだけはすぐにセットする
{
#ifdef _MODEL_TEG2_
P0 = 0b00000011;
P3 = 0b00000110; // 簡易I2Cは出力ラッチを1にする
P14 = 0b00000001;
#endif
#ifdef _MODEL_WM0_
P0 = 0b00000011;
P3 = 0b00000110; // 簡易I2Cは出力ラッチを1にする
P14 = 0b00000001;
#endif
#ifdef _MODEL_TS0_
P0 = 0b00000001;
P3 = 0b00000111; // 簡易I2Cは出力ラッチを1にする
P14 = 0b00000000;
#endif
#ifdef _MODEL_CTR_
P0 = 0b00000001;
P3 = 0b00000111; // 簡易I2Cは出力ラッチを1にする
P14 = 0b00000000;
#endif
}
else
{
P0 = 0b00000000;
P3 = 0b00000110; // 簡易I2Cは出力ラッチを1にする
P14 = 0b00000000;
}
#ifdef _MCU_BSR_
PM0 = 0b11111111; // BSRマイコンでは、reset1は監視のみになる。
#else
PM0 = 0b00000000; // 0で出力
#endif
PM3 = 0b11110000; // P31,32は簡易I2C
PM14 = 0b11111100; // debugger[1] とりあえず出力
P1 = 0b00000000;
P2 = 0b00000000;
P4 = 0b00000000;
P5 = 0b00000000;
P6 = 0b00000000;
P7 = 0b01000000;
P12 = 0b00000000;
#ifdef _MCU_BSR_
P20 = 0b00000000;
#else
P8 = 0b00000000;
#endif
P15 = 0b00000000;
PM1 = 0b00000000;
PM2 = 0b11101001;
#ifdef _PMIC_CTR_
PM4 = 0b11110111;
#else
PM4 = 0b11111011;
#endif
PM5 = 0b11110011;
PM6 = 0b11111100; // I2CのラインがL出力になってしまうが、システムがOFFなのでかまわない
#ifdef _MODEL_CTR_
PM7 = 0b01011111;
#else
PM7 = 0b00011111;
#endif
PM12 = 0b11111111; // 32kHzクロックのピン設定はどっちでもよい
PM15 = 0b11111111;
#ifdef _MCU_BSR_
#ifdef _MODEL_CTR_
PM20 = 0b11111101;
#else
PM20 = 0b11111100;
#endif
#else
PM8 = 0b11111111;
#endif
// プルアップ /////////////////////////////////////////
PU0 = 0b00000000; // バッテリ認証後にそれぞれセット
PU1 = 0b00000000;
PU3 = 0b00000000; // 外部でプルアップしないと具合が悪い。CPUがプルアップする
PU4 = 0b00000000; // 外部でプルアップしてほしいtool0,1)
PU5 = 0b00000011;
PU7 = 0b00011001;
PU12 = 0b00000000;
PU14 = 0b00000000;
#ifdef _MCU_BSR_
#ifdef _MODEL_CTR_
#ifdef _SW_HOME_ENABLE_
PU20 = 0b00010001;
#else
PU20 = 0b00000001;
#endif
#else
PU20 = 0b00000000;
#endif
#endif
// ポート入力モード・レジスタ設定 /////////////////////
// [0:通常入力バッファ 1:TTL入力バッファ]
PIM3 = 0b00000000;
PIM7 = 0b00000000;
// ポート出力モード・レジスタ設定
// [0:通常出力モード 1:N-chオープン・ドレーン出力]
POM3 = 0b00000110;
POM7 = 0b00000000;
/*--- 割り込み設定 ---------*/
IF0 = 0x0000; /* 割り込み要求フラグクリア */
IF1 = 0x0000;
#ifdef _MCU_BSR_
IF2 = 0x0000;
#else
IF2L = 0x00;
#endif
MK0 = 0xFFFF; /* 割り込み禁止 */
MK1 = 0xFFFF;
#ifdef _MCU_BSR_
MK2 = 0xFFFF;
#else
MK2L = 0xFF;
#endif
PR00L = 0b11111111; /* 割り込み優先順位、全て低位(LV3) */
PR10L = 0b11111111;
PR00H = 0b11111111;
PR10H = 0b11111111;
PR01L = 0b11111111;
PR11L = 0b11111110;
PR01H = 0b11111111;
PR11H = 0b11111111;
PR02L = 0b11111111;
PR12L = 0b11111111;
/*--- 外部割込の有効エッジ設定 ---*/
#ifdef _MCU_BSR_
EGP0 = 0b00110001;
EGN0 = 0b01110001;
EGP2 = 0b00001010;
EGN2 = 0b00000000;
#else
EGP0 = 0b10110001;
EGN0 = 0b01110001;
#endif
/*--- キー割り込み設定 ---*/
KRM = 0b00000000; /* 全キー割り込み信号を検出しない */
/*--- タイマ・アレイ・ユニットの動作停止 ---*/
TAU0EN = 0; /* タイマ・アレイ・ユニットへのクロック供給停止 */
TT0 = 0x00ff; /* 全タイマ・チャネルの動作停止 */
/*--- RTCの動作停止 ---*/
// RTCEN = 0; /* RTCへのクロック供給停止 */
// RTCC0 = 0b00000000; /* カウンタ動作停止 */
// 別途初期化関数
#ifndef _MCU_BSR_
/*--- コンパレータ/プログラマブル・ゲイン・アップの動作停止 ---*/
OACMPEN = 0; /* クロック供給停止 */
OAM = 0x00; /* プログラマブル・ゲイン・アップの動作停止 */
C0CTL = 0x00; /* コンパレータ0動作停止 */
C1CTL = 0x00; /* コンパレータ1動作停止 */
#endif
/*--- クロック出力/ブザー出力停止 ---*/
CKS0 = 0b00000000;
CKS1 = 0b00000000;
/*--- ADCの動作停止 ---*/
ADCEN = 0; /* ADCへのクロック供給停止 */
ADM = 0b00000000; /* 変換動作停止 */
/*--- シリアル・アレイ・ユニットの動作停止 ---*/
SAU0EN = 0; /* シリアル・アレイ・ユニット0へのクロック供給停止 */
SCR00 = 0x0087; /* 各チャンネルの通信禁止 */
SCR01 = 0x0087;
SCR02 = 0x0087;
SCR03 = 0x0087;
#ifdef _MCU_BSR_
// IICの動作停止
IICA0EN = 0; /* IICA0(CTR)へのクロック供給停止 */
IICCTL00 = 0x00; /* IICA1動作停止 */
IICA1EN = 0; // IICA1(TWL)へのクロック供給停止
IICCTL01 = 0x00; // IICA1動作停止
#else
/*--- IICAの動作停止 ---*/
IICAEN = 0; /* IICAへのクロック供給停止 */
IICCTL0 = 0x00; /* IICA動作停止 */
#endif
/*--- DMAの動作停止 ---*/
DRC0 = 0b00000000; /* DMAチャネル0の動作禁止 */
DRC1 = 0b00000000; /* DMAチャネル1の動作禁止 */
}

View File

@ -0,0 +1,4 @@
#include "jhl_defs.h"
err firm_update( );

1087
branches/0.10(X3)/loader.prn Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

65
branches/0.10(X3)/magic.c Normal file
View File

@ -0,0 +1,65 @@
/*****************************************************************************
(touchしてね)
****************************************************************************/
#include "config.h"
// V0.5 (ニセ0.1改)
#pragma section @@CNSTL MGC_LOAD AT 0x0FF6
__far static const unsigned char MGC_LOAD[] = __TIME__;
#pragma section @@CNST MGC_MIMI AT 0x2100
static const unsigned char MGC_HEAD[] = __TIME__;
#pragma section @@CNST MGC_TAIL AT 0x4FF6
static const unsigned char MGC_TAIL[] = __TIME__;
// 0Dまでこれを使用
// #define SIG { 0x30, 0x38, 0x3A, 0x34, 0x35, 0x3A, 0x33, 0x39, 0x00, 0x00 }
// あーあ。
/*
// V0.5 (ニセ0.1改)
#define SIG { 0x30, 0x38, 0x3A, 0x34, 0x35, 0x3A, 0x33, 0x39, 0x00, 0x00 }
*/
/*
(使)
V0.2 31 34 3A 33 35 3A 33 35 00 00
#define SIG { 0x31, 0x34, 0x3A, 0x33, 0x35, 0x3A, 0x33, 0x35, 0x00, 0x00 };
ctr_wm0
31373A30353A32310000
#define SIG { 0x31, 0x37, 0x3A, 0x30, 0x35, 0x3A, 0x32, 0x31, 0x00, 0x00 };
ctr_wm0_2
31303A34393A35390000
#define SIG { 0x31, 0x30, 0x3A, 0x34, 0x39, 0x3A, 0x35, 0x39, 0x00, 0x00 };
bsr_V0.2_090828_WM2
31323A35393A32350000
#define SIG { 0x31, 0x32, 0x3A, 0x35, 0x39, 0x3A, 0x32, 0x35, 0x00, 0x00 };
*/
/*
// V0.1の署名(日付) 30 38 3A 34 35 3A 33 39 00 00
#pragma section @@CNSTL MGC_LOAD AT 0x0FF6
__far static const unsigned char MGC_LOAD[] =
#define SIG { 0x30, 0x38, 0x3A, 0x34, 0x35, 0x3A, 0x33, 0x39, 0x00, 0x00 }
// V0.4以降
#pragma section @@CNSTL MGC_LOAD AT 0x0FF6
__far static const unsigned char MGC_LOAD[] = __TIME__;
#pragma section @@CNST MGC_MIMI AT 0x2100
static const unsigned char MGC_HEAD[] = __TIME__;
#pragma section @@CNST MGC_TAIL AT 0x47F6
static const unsigned char MGC_TAIL[] = __TIME__;
*/

163
branches/0.10(X3)/magic.prn Normal file
View File

@ -0,0 +1,163 @@
78K0R Assembler W1.31 Date:13 Jun 2010 Page: 1
Command: -c9F0104 -yC:\Program Files\NEC Electronics Tools\DEV -_msgoff inter_asm\magic.asm
Para-file:
In-file: inter_asm\magic.asm
Obj-file: magic.rel
Prn-file: magic.prn
Assemble list
ALNO STNO ADRS OBJECT M I SOURCE STATEMENT
1 1 ; 78K0R C Compiler V2.10 Assembler Source Date:13 Jun 2010 Time:19:31:47
2 2
3 3 ; Command : -c9F0104 -yC:\Program Files\NEC Electronics Tools\DEV -_msgoff -i
4 4 ; renge -iC:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\
5 5 ; V1.20\inc78k0r -ms -qvjl3wt -sainter_asm -zp -no magic.c
6 6 ; In-file : magic.c
7 7 ; Asm-file : inter_asm\magic.asm
8 8 ; Para-file :
9 9
10 10 $PROCESSOR(9F0104)
11 11 $DEBUG
12 12 $NODEBUGA
13 13 $KANJICODE SJIS
14 14 $TOL_INF 03FH, 0210H, 00H, 00H, 00H, 00H, 00H
15 15
16 16 $DGS FIL_NAM, .file, 01BH, 0FFFEH, 03FH, 067H, 01H, 00H
17 17 $DGS AUX_FIL, magic.c
18 18 $DGS MOD_NAM, magic, 00H, 0FFFEH, 00H, 077H, 00H, 00H
19 19 $DGS SEC_NAM, @@BITS, U, U, 00H, 078H, 00H, 00H
20 20 $DGS SEC_NAM, @@CNST, U, U, 00H, 078H, 00H, 00H
21 21 $DGS SEC_NAM, MGC_MIMI, U, U, 00H, 078H, 00H, 00H
22 22 $DGS SEC_NAM, MGC_TAIL, U, U, 00H, 078H, 00H, 00H
23 23 $DGS SEC_NAM, @@R_INIT, U, U, 00H, 078H, 00H, 00H
24 24 $DGS SEC_NAM, @@INIT, U, U, 00H, 078H, 00H, 00H
25 25 $DGS SEC_NAM, @@DATA, U, U, 00H, 078H, 00H, 00H
26 26 $DGS SEC_NAM, @@R_INIS, U, U, 00H, 078H, 00H, 00H
27 27 $DGS SEC_NAM, @@INIS, U, U, 00H, 078H, 00H, 00H
28 28 $DGS SEC_NAM, @@DATS, U, U, 00H, 078H, 00H, 00H
29 29 $DGS SEC_NAM, MGC_LOAD, U, U, 00H, 078H, 00H, 00H
30 30 $DGS SEC_NAM, @@RLINIT, U, U, 00H, 078H, 00H, 00H
31 31 $DGS SEC_NAM, @@INITL, U, U, 00H, 078H, 00H, 00H
32 32 $DGS SEC_NAM, @@DATAL, U, U, 00H, 078H, 00H, 00H
33 33 $DGS SEC_NAM, @@CALT, U, U, 00H, 078H, 00H, 00H
34 34 $DGS SEC_NAM, @@CODE, U, U, 00H, 078H, 00H, 00H
35 35 $DGS SEC_NAM, @@CODEL, U, U, 00H, 078H, 00H, 00H
36 36 $DGS SEC_NAM, @@BASE, U, U, 00H, 078H, 00H, 00H
37 37 $DGS STA_SYM, _MGC_LOAD, U, U, 0D00CH, 03H, 01H, 03H
38 38 $DGS AUX_STR, 00H, 00H, 09H, 09H, 00H, 00H, 00H, 00H
39 39 $DGS STA_SYM, _MGC_HEAD, U, U, 0500CH, 03H, 01H, 03H
40 40 $DGS AUX_STR, 00H, 00H, 09H, 09H, 00H, 00H, 00H, 00H
41 41 $DGS STA_SYM, _MGC_TAIL, U, U, 0500CH, 03H, 01H, 03H
42 42 $DGS AUX_STR, 00H, 00H, 09H, 09H, 00H, 00H, 00H, 00H
43 43
44 44
45 45 ----- @@BITS BSEG
46 46
47 47 ----- MGC_MIMI CSEG AT 2100H
48 48 02100 31393A33 _MGC_HEAD: DB '19:31:47'
02104 313A3437
49 49 02108 00 DB 00H
50 50 02109 00 DB (1)
51 51
52 52 ----- MGC_TAIL CSEG AT 4FF6H
53 53 04FF6 31393A33 _MGC_TAIL: DB '19:31:47'
04FFA 313A3437
54 54 04FFE 00 DB 00H
55 55 04FFF 00 DB (1)
56 56
57 57 ----- @@R_INIT CSEG UNIT64KP
58 58
59 59 ----- @@INIT DSEG BASEP
60 60
61 61 ----- @@DATA DSEG BASEP
62 62
63 63 ----- @@R_INIS CSEG UNIT64KP
64 64
65 65 ----- @@INIS DSEG SADDRP
66 66
67 67 ----- @@DATS DSEG SADDRP
68 68
69 69 ----- MGC_LOAD CSEG AT 0FF6H
70 70 00FF6 31393A33 _MGC_LOAD: DB '19:31:47'
00FFA 313A3437
71 71 00FFE 00 DB 00H
72 72 00FFF 00 DB (1)
73 73
74 74 ----- @@RLINIT CSEG UNIT64KP
75 75
76 76 ----- @@INITL DSEG UNIT64KP
77 77
78 78 ----- @@DATAL DSEG UNIT64KP
79 79
80 80 ----- @@CALT CSEG CALLT0
81 81
82 82 ; line 1 : /***************************************************************
83 83 ; **************
84 84 ; line 2 : ビルド時刻を埋め込みます。
85 85 ; line 3 : ビルドの度に更新されるようにする必要があります。
86 86 ; line 4 : (touchしてね)
87 87 ; line 5 : ***************************************************************
88 88 ; *************/
89 89 ; line 6 : #include "config.h"
90 90 ; line 7 :
91 91 ; line 8 : // V0.5 (ニセ0.1改)
92 92 ; line 9 : #pragma section @@CNSTL MGC_LOAD AT 0x0FF6
93 93 ; line 10 : __far static const unsigned char MGC_LOAD[] = __TIME__;
94 94 ; line 11 :
95 95 ; line 12 : #pragma section @@CNST MGC_MIMI AT 0x2100
96 96 ; line 13 : static const unsigned char MGC_HEAD[] = __TIME__;
97 97 ; line 14 :
98 98 ; line 15 : #pragma section @@CNST MGC_TAIL AT 0x4FF6
99 99 ; line 16 : static const unsigned char MGC_TAIL[] = __TIME__;
100 100
101 101 ----- @@CODE CSEG BASE
102 102
103 103 ----- @@CODEL CSEG
104 104
105 105 ----- @@BASE CSEG BASE
106 106
107 107 ----- @@CNST CSEG MIRRORP
108 108
109 109 END
110 110
111 111
112 112 ; *** Code Information ***
113 113
114 114 ; Target chip : uPD79F0104
115 115 ; Device file : E1.00b
Segment informations:
ADRS LEN NAME
00000 00000H.0 @@BITS
02100 0000AH MGC_MIMI
04FF6 0000AH MGC_TAIL
00000 00000H @@R_INIT
00000 00000H @@INIT
00000 00000H @@DATA
00000 00000H @@R_INIS
00000 00000H @@INIS
00000 00000H @@DATS
00FF6 0000AH MGC_LOAD
00000 00000H @@RLINIT
00000 00000H @@INITL
00000 00000H @@DATAL
00000 00000H @@CALT
00000 00000H @@CODE
00000 00000H @@CODEL
00000 00000H @@BASE
00000 00000H @@CNST
Target chip : uPD79F0104
Device file : E1.00b
Assembly complete, 0 error(s) and 0 warning(s) found. ( 0)


BIN
branches/0.10(X3)/magic.rel Normal file

Binary file not shown.

103
branches/0.10(X3)/main.c Normal file
View File

@ -0,0 +1,103 @@
/* ========================================================
MCU CTR BSR
2008,2009 nintendo
 
======================================================== */
// ========================================================
#include "incs_loader.h"
#include "WDT.h"
#include "rtc.h"
#include "pm.h"
#include "accero.h"
#include "led.h"
#include "adc.h"
// ========================================================
static void read_dipsw( );
// ========================================================
system_status_ system_status;
bit update;
u16 pool[256]; // アップデート時のワークエリア 兼 歩数計データ
/* ========================================================
loader.c
======================================================== */
void main_loop( void )
{
// 電池投入時、ファームアップデート後のみ
RTC_init( ); // 内部でリブートか判定しています
renge_init( );
iic_mcu_start( );
EI( );
PM_init();
if( system_status.reboot )
{
#ifdef _PMIC_TWL_
if( RESET1_n )
#else
if( PM_chk_LDSW() != 0 )
#endif
{
system_status.pwr_state = ON_TRIG;
}
}
else
{
// リブート時は実行されない
system_status.pwr_state = OFF_TRIG;
}
#ifdef _PARRADIUM_
system_status.pwr_state = OFF;
#endif
vreg_ctr_init( );
vreg_twl_init( );
read_dipsw( ); // 特定スイッチで何かするか?
clear_hosu_hist(); // 履歴クリア
renge_task_interval_run_force = 1;
RTCIMK = 0; /* 割り込み(アラーム&インターバル)許可 */
// メインループ //
while( 1 )
{ // システムtick、または割り込みで廻ります。
WDT_Restart( );
renge_task_interval_run( ); // 内部で、システムtickまたは強制起動します
while( renge_task_interval_run_force != 0 )
{
renge_task_interval_run( );
}
WDT_Restart( );
while( renge_task_immed_run( ) != ERR_SUCCESS ); // ここのループが廻る度に実行されます
HALT( );
}
}
/* ========================================================
======================================================== */
static void read_dipsw( )
{
// ソフトディップスイッチ読み込み
// PU4 |= 0x03; // dip sw 0,1
system_status.dipsw0 = ( DIPSW_0 == 0 ) ? 0 : 1;
system_status.dipsw1 = ( DIPSW_1 == 0 ) ? 0 : 1;
// PU4 &= ~0x03;
}

568
branches/0.10(X3)/main.prn Normal file
View File

@ -0,0 +1,568 @@
78K0R Assembler W1.31 Date:13 Jun 2010 Page: 1
Command: -c9F0104 -yC:\Program Files\NEC Electronics Tools\DEV -_msgoff inter_asm\main.asm
Para-file:
In-file: inter_asm\main.asm
Obj-file: main.rel
Prn-file: main.prn
Assemble list
ALNO STNO ADRS OBJECT M I SOURCE STATEMENT
1 1 ; 78K0R C Compiler V2.10 Assembler Source Date:13 Jun 2010 Time:19:31:23
2 2
3 3 ; Command : -c9F0104 -yC:\Program Files\NEC Electronics Tools\DEV -_msgoff -i
4 4 ; renge -iC:\Program Files\NEC Electronics Tools\FSL78K0R_Type02ES\
5 5 ; V1.20\inc78k0r -ms -qvjl3wt -sainter_asm -zp -no main.c
6 6 ; In-file : main.c
7 7 ; Asm-file : inter_asm\main.asm
8 8 ; Para-file :
9 9
10 10 $PROCESSOR(9F0104)
11 11 $DEBUG
12 12 $NODEBUGA
13 13 $KANJICODE SJIS
14 14 $TOL_INF 03FH, 0210H, 00H, 00H, 00H, 00H, 00H
15 15
16 16 $DGS FIL_NAM, .file, 063H, 0FFFEH, 03FH, 067H, 01H, 00H
17 17 $DGS AUX_FIL, main.c
18 18 $DGS MOD_NAM, main, 00H, 0FFFEH, 00H, 077H, 00H, 00H
19 19 $DGS SEC_NAM, @@BITS, U, U, 00H, 078H, 00H, 00H
20 20 $DGS SEC_NAM, @@CNST, U, U, 00H, 078H, 00H, 00H
21 21 $DGS SEC_NAM, @@R_INIT, U, U, 00H, 078H, 00H, 00H
22 22 $DGS SEC_NAM, @@INIT, U, U, 00H, 078H, 00H, 00H
23 23 $DGS SEC_NAM, @@DATA, U, U, 00H, 078H, 00H, 00H
24 24 $DGS SEC_NAM, @@R_INIS, U, U, 00H, 078H, 00H, 00H
25 25 $DGS SEC_NAM, @@INIS, U, U, 00H, 078H, 00H, 00H
26 26 $DGS SEC_NAM, @@DATS, U, U, 00H, 078H, 00H, 00H
27 27 $DGS SEC_NAM, LDR_CNSL, U, U, 00H, 078H, 00H, 00H
28 28 $DGS SEC_NAM, @@RLINIT, U, U, 00H, 078H, 00H, 00H
29 29 $DGS SEC_NAM, @@INITL, U, U, 00H, 078H, 00H, 00H
30 30 $DGS SEC_NAM, @@DATAL, U, U, 00H, 078H, 00H, 00H
31 31 $DGS SEC_NAM, @@CALT, U, U, 00H, 078H, 00H, 00H
32 32 $DGS SEC_NAM, LDR_CODE, U, U, 00H, 078H, 00H, 00H
33 33 $DGS SEC_NAM, LDR_CODL, U, U, 00H, 078H, 00H, 00H
34 34 $DGS SEC_NAM, @@BASE, U, U, 00H, 078H, 00H, 00H
35 35 $DGS ENM_TAG, _pwr_state_, 00H, 0FFFEH, 0AH, 0FH, 01H, 00H
36 36 $DGS AUX_TAG, 01H, 01EH
37 37 $DGS MEB_ENM, _OFF_TRIG, 00H, 0FFFFH, 04H, 010H, 00H, 00H
38 38 $DGS MEB_ENM, _OFF, 01H, 0FFFFH, 04H, 010H, 00H, 00H
39 39 $DGS MEB_ENM, _ON_TRIG, 02H, 0FFFFH, 04H, 010H, 00H, 00H
40 40 $DGS MEB_ENM, _ON, 03H, 0FFFFH, 04H, 010H, 00H, 00H
41 41 $DGS MEB_ENM, _SLEEP_TRIG, 04H, 0FFFFH, 04H, 010H, 00H, 00H
42 42 $DGS MEB_ENM, _SLEEP, 05H, 0FFFFH, 04H, 010H, 00H, 00H
43 43 $DGS MEB_ENM, _BT_CHARGE, 06H, 0FFFFH, 04H, 010H, 00H, 00H
44 44 $DGS END_STR, .eos, 01H, 0FFFFH, 00H, 066H, 01H, 00H
45 45 $DGS AUX_EOS, 013H, 01H
46 46 $DGS ENM_TAG, _poweron_reason_, 00H, 0FFFEH, 0AH, 0FH, 01H, 00H
47 47 $DGS AUX_TAG, 01H, 025H
48 48 $DGS MEB_ENM, _NONE, 00H, 0FFFFH, 04H, 010H, 00H, 00H
49 49 $DGS MEB_ENM, _PWSW, 01H, 0FFFFH, 04H, 010H, 00H, 00H
50 50 $DGS MEB_ENM, _RTC_ALARM, 02H, 0FFFFH, 04H, 010H, 00H, 00H
51 51 $DGS END_STR, .eos, 01H, 0FFFFH, 00H, 066H, 01H, 00H
52 52 $DGS AUX_EOS, 01EH, 01H
53 53 $DGS ENM_TAG, _model_, 00H, 0FFFEH, 0AH, 0FH, 01H, 00H
54 54 $DGS AUX_TAG, 01H, 02FH
55 55 $DGS MEB_ENM, _MODEL_JIKKI, 00H, 0FFFFH, 04H, 010H, 00H, 00H
56 56 $DGS MEB_ENM, _MODEL_TS_BOARD, 01H, 0FFFFH, 04H, 010H, 00H, 00H
57 57 $DGS MEB_ENM, _MODEL_SHIROBAKO, 02H, 0FFFFH, 04H, 010H, 00H, 00H
58 58 $DGS MEB_ENM, _MODEL_RESERVED1, 03H, 0FFFFH, 04H, 010H, 00H, 00H
59 59 $DGS MEB_ENM, _MODEL_RESERVED2, 04H, 0FFFFH, 04H, 010H, 00H, 00H
60 60 $DGS MEB_ENM, _MODEL_RESERVED3, 05H, 0FFFFH, 04H, 010H, 00H, 00H
61 61 $DGS END_STR, .eos, 01H, 0FFFFH, 00H, 066H, 01H, 00H
62 62 $DGS AUX_EOS, 025H, 01H
63 63 $DGS STR_STR, .0fake, 00H, 0FFFEH, 08H, 0AH, 01H, 00H
64 64 $DGS AUX_TAG, 04H, 041H
65 65 $DGS MEB_STR, _pwr_state, 00H, 0FFFFH, 0AH, 08H, 01H, 00H
66 66 $DGS AUX_STR, 013H, 00H, 01H, 00H, 00H, 00H, 00H, 00H
67 67 $DGS MEB_STR, _poweron_reason, 01H, 0FFFFH, 0AH, 08H, 01H, 00H
68 68 $DGS AUX_STR, 01EH, 00H, 01H, 00H, 00H, 00H, 00H, 00H
69 69 $DGS BIT_FLD, _dipsw0, 010H, 0FFFFH, 0CH, 012H, 01H, 00H
70 70 $DGS AUX_BIT, 00H, 01H
71 71 $DGS BIT_FLD, _dipsw1, 011H, 0FFFFH, 0CH, 012H, 01H, 00H
72 72 $DGS AUX_BIT, 00H, 01H
73 73 $DGS BIT_FLD, _dipsw2, 012H, 0FFFFH, 0CH, 012H, 01H, 00H
74 74 $DGS AUX_BIT, 00H, 01H
75 75 $DGS BIT_FLD, _reboot, 013H, 0FFFFH, 0CH, 012H, 01H, 00H
76 76 $DGS AUX_BIT, 00H, 01H
77 77 $DGS MEB_STR, _model, 03H, 0FFFFH, 0AH, 08H, 01H, 00H
78 78 $DGS AUX_STR, 025H, 00H, 01H, 00H, 00H, 00H, 00H, 00H
79 79 $DGS END_STR, .eos, 04H, 0FFFFH, 00H, 066H, 01H, 00H
80 80 $DGS AUX_EOS, 02FH, 04H
81 81 $DGS STA_SYM, _lpf_coeff, U, U, 05002H, 03H, 01H, 03H
82 82 $DGS AUX_STR, 00H, 00H, 02FH, 02FH, 00H, 00H, 00H, 00H
83 83 $DGS GLV_SYM, _main_loop, U, U, 01H, 026H, 01H, 02H
84 84 $DGS AUX_FUN, 00H, U, U, 05DH, 00H, 00H
85 85 $DGS BEG_FUN, ??bf_main_loop, U, U, 00H, 065H, 01H, 00H
86 86 $DGS AUX_BEG, 021H, 00H, 047H
87 87 $DGS BEG_BLK, ??bb00_main_loop, U, U, 00H, 064H, 01H, 00H
88 88 $DGS AUX_BEG, 0EH, 00H, 049H
89 89 $DGS BEG_BLK, ??bb01_main_loop, U, U, 00H, 064H, 01H, 00H
90 90 $DGS AUX_BEG, 014H, 00H, 04FH
91 91 $DGS END_BLK, ??eb01_main_loop, U, U, 00H, 064H, 01H, 00H
92 92 $DGS AUX_END, 016H
93 93 $DGS END_BLK, ??eb00_main_loop, U, U, 00H, 064H, 01H, 00H
94 94 $DGS AUX_END, 017H
95 95 $DGS BEG_BLK, ??bb02_main_loop, U, U, 00H, 064H, 01H, 00H
96 96 $DGS AUX_BEG, 019H, 00H, 053H
97 97 $DGS END_BLK, ??eb02_main_loop, U, U, 00H, 064H, 01H, 00H
98 98 $DGS AUX_END, 01CH
99 99 $DGS BEG_BLK, ??bb03_main_loop, U, U, 00H, 064H, 01H, 00H
100 100 $DGS AUX_BEG, 02EH, 00H, 055H
101 101 $DGS BEG_BLK, ??bb04_main_loop, U, U, 00H, 064H, 01H, 00H
102 102 $DGS AUX_BEG, 032H, 00H, 00H
103 103 $DGS END_BLK, ??eb04_main_loop, U, U, 00H, 064H, 01H, 00H
104 104 $DGS AUX_END, 034H
105 105 $DGS END_BLK, ??eb03_main_loop, U, U, 00H, 064H, 01H, 00H
106 106 $DGS AUX_END, 038H
107 107 $DGS END_FUN, ??ef_main_loop, U, U, 00H, 065H, 01H, 00H
108 108 $DGS AUX_END, 039H
109 109 $DGS STA_SYM, _read_dipsw, U, U, 01H, 03H, 01H, 02H
110 110 $DGS AUX_FUN, 00H, U, U, 063H, 00H, 00H
111 111 $DGS BEG_FUN, ??bf_read_dipsw, U, U, 00H, 065H, 01H, 00H
112 112 $DGS AUX_BEG, 05FH, 00H, 063H
113 113 $DGS END_FUN, ??ef_read_dipsw, U, U, 00H, 065H, 01H, 00H
114 114 $DGS AUX_END, 07H
115 115 $DGS GLV_SYM, _system_status, U, U, 08H, 026H, 01H, 00H
116 116 $DGS AUX_STR, 02FH, 00H, 04H, 00H, 00H, 00H, 00H, 00H
117 117 $DGS GLV_SYM, _update, U, U, 034CH, 027H, 00H, 00H
118 118 $DGS GLV_SYM, _pool, U, U, 0DH, 026H, 01H, 03H
119 119 $DGS AUX_STR, 00H, 00H, 0200H, 0100H, 00H, 00H, 00H, 00H
120 120 $DGS GLV_SYM, _RTC_init, U, U, 01H, 02H, 01H, 02H
121 121 $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
122 122 $DGS GLV_SYM, _renge_init, U, U, 01H, 02H, 01H, 02H
123 123 $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
124 124 $DGS GLV_SYM, _iic_mcu_start, U, U, 01H, 02H, 01H, 02H
125 125 $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
126 126 $DGS GLV_SYM, _PM_init, U, U, 01H, 02H, 01H, 02H
127 127 $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
128 128 $DGS GLV_SYM, _iic_mcu_read_a_byte, U, U, 0CH, 02H, 01H, 02H
129 129 $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
130 130 $DGS GLV_SYM, _vreg_ctr_init, U, U, 01H, 02H, 01H, 02H
131 131 $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
132 132 $DGS GLV_SYM, _vreg_twl_init, U, U, 01H, 02H, 01H, 02H
133 133 $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
134 134 $DGS GLV_SYM, _clear_hosu_hist, U, U, 01H, 02H, 01H, 02H
135 135 $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
136 136 $DGS GLV_SYM, _renge_task_interval_run_force, U, U, 034CH, 02H, 00H, 00H
137 137 $DGS GLV_SYM, _WDT_Restart, U, U, 01H, 02H, 01H, 02H
138 138 $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
139 139 $DGS GLV_SYM, _renge_task_interval_run, U, U, 0CH, 02H, 01H, 02H
140 140 $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
141 141 $DGS GLV_SYM, _renge_task_immed_run, U, U, 0CH, 02H, 01H, 02H
142 142 $DGS AUX_FUN, 00H, U, U, 00H, 00H, 00H
143 143
144 144 EXTRN _RTC_init
145 145 EXTRN _renge_init
146 146 EXTRN _iic_mcu_start
147 147 EXTRN _PM_init
148 148 EXTRN _iic_mcu_read_a_byte
149 149 EXTRN _vreg_ctr_init
150 150 EXTRN _vreg_twl_init
151 151 EXTRN _clear_hosu_hist
152 152 EXTRN _WDT_Restart
153 153 EXTRN _renge_task_interval_run
154 154 EXTRN _renge_task_immed_run
155 155 EXTBIT _renge_task_interval_run_force
156 156 PUBLIC _system_status
157 157 PUBLIC _update
158 158 PUBLIC _pool
159 159 PUBLIC _main_loop
160 160
161 161 ----- @@BITS BSEG
162 162 00000.0 _update DBIT
163 163
164 164 ----- @@CNST CSEG MIRRORP
165 165 00000 01 _lpf_coeff: DB 01H ; 1
166 166 00001 02 DB 02H ; 2
167 167 00002 02 DB 02H ; 2
168 168 00003 03 DB 03H ; 3
169 169 00004 03 DB 03H ; 3
170 170 00005 02 DB 02H ; 2
171 171 00006 00 DB 00H ; 0
172 172 00007 FE DB 0FEH ; 254
173 173 00008 FB DB 0FBH ; 251
174 174 00009 F7 DB 0F7H ; 247
175 175 0000A F3 DB 0F3H ; 243
176 176 0000B F0 DB 0F0H ; 240
177 177 0000C F0 DB 0F0H ; 240
178 178 0000D F3 DB 0F3H ; 243
179 179 0000E FA DB 0FAH ; 250
180 180 0000F 04 DB 04H ; 4
181 181 00010 12 DB 012H ; 18
182 182 00011 25 DB 025H ; 37
183 183 00012 38 DB 038H ; 56
184 184 00013 4D DB 04DH ; 77
185 185 00014 5F DB 05FH ; 95
186 186 00015 6E DB 06EH ; 110
187 187 00016 77 DB 077H ; 119
188 188 00017 7A DB 07AH ; 122
189 189 00018 77 DB 077H ; 119
190 190 00019 6E DB 06EH ; 110
191 191 0001A 5F DB 05FH ; 95
192 192 0001B 4D DB 04DH ; 77
193 193 0001C 38 DB 038H ; 56
194 194 0001D 25 DB 025H ; 37
195 195 0001E 12 DB 012H ; 18
196 196 0001F 04 DB 04H ; 4
197 197 00020 FA DB 0FAH ; 250
198 198 00021 F3 DB 0F3H ; 243
199 199 00022 F0 DB 0F0H ; 240
200 200 00023 F0 DB 0F0H ; 240
201 201 00024 F3 DB 0F3H ; 243
202 202 00025 F7 DB 0F7H ; 247
203 203 00026 FB DB 0FBH ; 251
204 204 00027 FE DB 0FEH ; 254
205 205 00028 00 DB 00H ; 0
206 206 00029 02 DB 02H ; 2
207 207 0002A 03 DB 03H ; 3
208 208 0002B 03 DB 03H ; 3
209 209 0002C 02 DB 02H ; 2
210 210 0002D 02 DB 02H ; 2
211 211 0002E 01 DB 01H ; 1
212 212 0002F 00 DB (1)
213 213
214 214 ----- @@R_INIT CSEG UNIT64KP
215 215
216 216 ----- @@INIT DSEG BASEP
217 217
218 218 ----- @@DATA DSEG BASEP
219 219 00000 _system_status: DS (4)
220 220 00004 _pool: DS (512)
221 221
222 222 ----- @@R_INIS CSEG UNIT64KP
223 223
224 224 ----- @@INIS DSEG SADDRP
225 225
226 226 ----- @@DATS DSEG SADDRP
227 227
228 228 ----- LDR_CNSL CSEG PAGE64KP
229 229
230 230 ----- @@RLINIT CSEG UNIT64KP
231 231
232 232 ----- @@INITL DSEG UNIT64KP
233 233
234 234 ----- @@DATAL DSEG UNIT64KP
235 235
236 236 ----- @@CALT CSEG CALLT0
237 237
238 238 ; line 1 : /* ========================================================
239 239 ; line 2 : MCU CTR BSR
240 240 ; line 3 : 2008,2009 nintendo
241 241 ; line 4 : 開発技術部 藤田
242 242 ; line 5 : ======================================================== */
243 243 ; line 6 :
244 244 ; line 7 :
245 245 ; line 8 : // ========================================================
246 246 ; line 9 : #include "incs_loader.h"
247 247 ; line 10 :
248 248 ; line 11 : #include "WDT.h"
249 249 ; line 12 : #include "rtc.h"
250 250 ; line 13 : #include "pm.h"
251 251 ; line 14 : #include "accero.h"
252 252 ; line 15 : #include "led.h"
253 253 ; line 16 : #include "adc.h"
254 254 ; line 17 :
255 255 ; line 18 :
256 256 ; line 19 : // ========================================================
257 257 ; line 20 : static void read_dipsw( );
258 258 ; line 21 :
259 259 ; line 22 :
260 260 ; line 23 : // ========================================================
261 261 ; line 24 : system_status_ system_status;
262 262 ; line 25 : bit update;
263 263 ; line 26 :
264 264 ; line 27 :
265 265 ; line 28 : u16 pool[256]; // アップデート時のワークエリア
266 266 ; 兼 歩数計データ
267 267 ; line 29 : /* ========================================================
268 268 ; line 30 : 本当のエントリ関数は loader.c にあります
269 269 ; line 31 : ======================================================== */
270 270 ; line 32 : void main_loop( void )
271 271 ; line 33 : {
272 272
273 273 ----- LDR_CODE CSEG BASE
274 274 00000 _main_loop:
275 275 $DGL 1,67
276 276 00000 ??bf_main_loop:
277 277 ; line 34 :
278 278 ; line 35 : // 電池投入時、ファームアップデート後のみ
279 279 ; line 36 : RTC_init( ); // 内部でリブートか判定しています
280 280 $DGL 0,4
281 281 00000 RFD0000 call !_RTC_init ;[INF] 3, 3
282 282 ; line 37 :
283 283 ; line 38 : renge_init( );
284 284 $DGL 0,6
285 285 00003 RFD0000 call !_renge_init ;[INF] 3, 3
286 286 ; line 39 :
287 287 ; line 40 : iic_mcu_start( );
288 288 $DGL 0,8
289 289 00006 RFD0000 call !_iic_mcu_start ;[INF] 3, 3
290 290 ; line 41 : EI( );
291 291 $DGL 0,9
292 292 00009 717AFA ei ;[INF] 3, 4
293 293 ; line 42 :
294 294 ; line 43 : PM_init();
295 295 $DGL 0,11
296 296 0000C RFD0000 call !_PM_init ;[INF] 3, 3
297 297 ; line 44 :
298 298 ; line 45 : if( system_status.reboot )
299 299 $DGL 0,13
300 300 0000F R8F0200 mov a,!_system_status+2 ;[INF] 3, 1
301 301 00012 313516 bf a.3,$?L0003 ;[INF] 3, 5
302 302 ; line 46 : {
303 303 00015 ??bb00_main_loop:
304 304 ; line 47 : #ifdef _PMIC_TWL_
305 305 ; line 48 : if( RESET1_n )
306 306 ; line 49 : #else
307 307 ; line 50 : if( PM_chk_LDSW() != 0 )
308 308 $DGL 0,18
309 309 00015 300300 movw ax,#03H ; 3 ;[INF] 3, 1
310 310 00018 C1 push ax ;[INF] 1, 1
311 311 00019 5084 mov x,#084H ; 132 ;[INF] 2, 1
312 312 0001B RFD0000 call !_iic_mcu_read_a_byte ;[INF] 3, 3
313 313 0001E C0 pop ax ;[INF] 1, 1
314 314 0001F 62 mov a,c ;[INF] 1, 1
315 315 00020 5C01 and a,#01H ; 1 ;[INF] 2, 1
316 316 00022 D1 cmp0 a ;[INF] 1, 1
317 317 00023 DD09 bz $?L0004 ;[INF] 2, 4
318 318 ; line 51 : #endif
319 319 ; line 52 : {
320 320 00025 ??bb01_main_loop:
321 321 ; line 53 : system_status.pwr_state = ON_TRIG;
322 322 $DGL 0,21
323 323 00025 RCF000002 mov !_system_status,#02H ; 2 ;[INF] 4, 1
324 324 00029 ??eb01_main_loop:
325 325 ; line 54 : }
326 326 ; line 55 : }
327 327 $DGL 0,23
328 328 00029 ??eb00_main_loop:
329 329 00029 EF03 br $?L0004 ;[INF] 2, 3
330 330 0002B ?L0003:
331 331 ; line 56 : else
332 332 ; line 57 : {
333 333 0002B ??bb02_main_loop:
334 334 ; line 58 : // リブート時は実行されない
335 335 ; line 59 : system_status.pwr_state = OFF_TRIG;
336 336 $DGL 0,27
337 337 0002B RF50000 clrb !_system_status ;[INF] 3, 1
338 338 0002E ??eb02_main_loop:
339 339 ; line 60 : }
340 340 0002E ?L0004:
341 341 ; line 61 :
342 342 ; line 62 : #ifdef _PARRADIUM_
343 343 ; line 63 : system_status.pwr_state = OFF;
344 344 ; line 64 : #endif
345 345 ; line 65 : vreg_ctr_init( );
346 346 $DGL 0,33
347 347 0002E RFD0000 call !_vreg_ctr_init ;[INF] 3, 3
348 348 ; line 66 : vreg_twl_init( );
349 349 $DGL 0,34
350 350 00031 RFD0000 call !_vreg_twl_init ;[INF] 3, 3
351 351 ; line 67 :
352 352 ; line 68 : read_dipsw( ); // 特定スイッチで何かするか?
353 353 $DGL 0,36
354 354 00034 RFD5D00 call !_read_dipsw ;[INF] 3, 3
355 355 ; line 69 :
356 356 ; line 70 : clear_hosu_hist(); // 履歴クリア
357 357 $DGL 0,38
358 358 00037 RFD0000 call !_clear_hosu_hist ;[INF] 3, 3
359 359 ; line 71 :
360 360 ; line 72 : renge_task_interval_run_force = 1;
361 361 $DGL 0,40
362 362 0003A R710200 set1 _renge_task_interval_run_force ;[INF] 3, 2
363 363 ; line 73 :
364 364 ; line 74 : RTCIMK = 0; /* 割り込み(アラーム&インターバル
365 365 ; )許可 */
366 366 $DGL 0,42
367 367 0003D 712BE7 clr1 MK1H.2 ;[INF] 3, 2
368 368 ; line 75 :
369 369 ; line 76 : // メインループ //
370 370 ; line 77 : while( 1 )
371 371 00040 ?L0007:
372 372 ; line 78 : { // システムtick、または割り込みで
373 373 ; 廻ります。
374 374 00040 ??bb03_main_loop:
375 375 ; line 79 : WDT_Restart( );
376 376 $DGL 0,47
377 377 00040 RFD0000 call !_WDT_Restart ;[INF] 3, 3
378 378 ; line 80 : renge_task_interval_run( ); // 内部で、システムtickま
379 379 ; たは強制起動します
380 380 $DGL 0,48
381 381 00043 RFD0000 call !_renge_task_interval_run ;[INF] 3, 3
382 382 ; line 81 : while( renge_task_interval_run_force != 0 )
383 383 $DGL 0,49
384 384 00046 ?L0009:
385 385 00046 R31040005 bf _renge_task_interval_run_force,$?L0010 ;[INF] 4, 5
386 386 ; line 82 : {
387 387 0004A ??bb04_main_loop:
388 388 ; line 83 : renge_task_interval_run( );
389 389 $DGL 0,51
390 390 0004A RFD0000 call !_renge_task_interval_run ;[INF] 3, 3
391 391 0004D ??eb04_main_loop:
392 392 ; line 84 : }
393 393 $DGL 0,52
394 394 0004D EFF7 br $?L0009 ;[INF] 2, 3
395 395 0004F ?L0010:
396 396 ; line 85 : WDT_Restart( );
397 397 $DGL 0,53
398 398 0004F RFD0000 call !_WDT_Restart ;[INF] 3, 3
399 399 ; line 86 : while( renge_task_immed_run( ) != ERR_SUCCESS );
400 400 ; // ここのループが廻る度に実行されます
401 401 $DGL 0,54
402 402 00052 ?L0011:
403 403 00052 RFD0000 call !_renge_task_immed_run ;[INF] 3, 3
404 404 00055 D2 cmp0 c ;[INF] 1, 1
405 405 00056 DFFA bnz $?L0011 ;[INF] 2, 4
406 406 ; line 87 : HALT( );
407 407 $DGL 0,55
408 408 00058 61ED halt ;[INF] 2, 3
409 409 0005A ??eb03_main_loop:
410 410 ; line 88 : }
411 411 $DGL 0,56
412 412 0005A EFE4 br $?L0007 ;[INF] 2, 3
413 413 ; line 89 : }
414 414 $DGL 0,57
415 415 0005C ??ef_main_loop:
416 416 0005C D7 ret ;[INF] 1, 6
417 417 0005D ??ee_main_loop:
418 418 ; line 90 :
419 419 ; line 91 :
420 420 ; line 92 : /* ========================================================
421 421 ; line 93 : ======================================================== */
422 422 ; line 94 : static void read_dipsw( )
423 423 ; line 95 : {
424 424 0005D _read_dipsw:
425 425 $DGL 1,93
426 426 0005D ??bf_read_dipsw:
427 427 ; line 96 : // ソフトディップスイッチ読み込み
428 428 ; line 97 : // PU4 |= 0x03; // dip sw 0,1
429 429 ; line 98 : system_status.dipsw0 = ( DIPSW_0 == 0 ) ? 0 : 1;
430 430 $DGL 0,4
431 431 0005D 31020403 bt P4.0,$?L0015 ;[INF] 4, 5
432 432 00061 F6 clrw ax ;[INF] 1, 1
433 433 00062 EF01 br $?L0016 ;[INF] 2, 3
434 434 00064 ?L0015:
435 435 00064 E6 onew ax ;[INF] 1, 1
436 436 00065 ?L0016:
437 437 00065 60 mov a,x ;[INF] 1, 1
438 438 00066 R340200 movw de,#loww (_system_status+2) ;[INF] 3, 1
439 439 00069 718C mov1 CY,a.0 ;[INF] 2, 1
440 440 0006B 89 mov a,[de] ;[INF] 1, 1
441 441 0006C 7189 mov1 a.0,CY ;[INF] 2, 1
442 442 0006E 99 mov [de],a ;[INF] 1, 1
443 443 ; line 99 : system_status.dipsw1 = ( DIPSW_1 == 0 ) ? 0 : 1;
444 444 $DGL 0,5
445 445 0006F 31120403 bt P4.1,$?L0017 ;[INF] 4, 5
446 446 00073 F6 clrw ax ;[INF] 1, 1
447 447 00074 EF01 br $?L0018 ;[INF] 2, 3
448 448 00076 ?L0017:
449 449 00076 E6 onew ax ;[INF] 1, 1
450 450 00077 ?L0018:
451 451 00077 60 mov a,x ;[INF] 1, 1
452 452 00078 R340200 movw de,#loww (_system_status+2) ;[INF] 3, 1
453 453 0007B 718C mov1 CY,a.0 ;[INF] 2, 1
454 454 0007D 89 mov a,[de] ;[INF] 1, 1
455 455 0007E 7199 mov1 a.1,CY ;[INF] 2, 1
456 456 00080 99 mov [de],a ;[INF] 1, 1
457 457 ; line 100 : // PU4 &= ~0x03;
458 458 ; line 101 : }
459 459 $DGL 0,7
460 460 00081 ??ef_read_dipsw:
461 461 00081 D7 ret ;[INF] 1, 6
462 462 00082 ??ee_read_dipsw:
463 463
464 464 ----- LDR_CODL CSEG
465 465
466 466 ----- @@BASE CSEG BASE
467 467 END
468 468
469 469
470 470 ; *** Code Information ***
471 471 ;
472 472 ; $FILE C:\78k_data\yav-mcu-basara\branches\0.10(fix)\main.c
473 473 ;
474 474 ; $FUNC main_loop(33)
475 475 ; void=(void)
476 476 ; CODE SIZE= 93 bytes, CLOCK_SIZE= 97 clocks, STACK_SIZE= 6 bytes
477 477 ;
478 478 ; $CALL RTC_init(36)
479 479 ; void=(void)
480 480 ;
481 481 ; $CALL renge_init(38)
482 482 ; void=(void)
483 483 ;
484 484 ; $CALL iic_mcu_start(40)
485 485 ; void=(void)
486 486 ;
487 487 ; $CALL PM_init(43)
488 488 ; void=(void)
489 489 ;
490 490 ; $CALL iic_mcu_read_a_byte(50)
491 491 ; bc=(int:ax, int:[sp+4])
492 492 ;
493 493 ; $CALL vreg_ctr_init(65)
494 494 ; void=(void)
495 495 ;
496 496 ; $CALL vreg_twl_init(66)
497 497 ; void=(void)
498 498 ;
499 499 ; $CALL read_dipsw(68)
500 500 ; void=(void)
501 501 ;
502 502 ; $CALL clear_hosu_hist(70)
503 503 ; void=(void)
504 504 ;
505 505 ; $CALL WDT_Restart(79)
506 506 ; void=(void)
507 507 ;
508 508 ; $CALL renge_task_interval_run(80)
509 509 ; bc=(void)
510 510 ;
511 511 ; $CALL renge_task_interval_run(83)
512 512 ; bc=(void)
513 513 ;
514 514 ; $CALL WDT_Restart(85)
515 515 ; void=(void)
516 516 ;
517 517 ; $CALL renge_task_immed_run(86)
518 518 ; bc=(void)
519 519 ;
520 520 ; $FUNC read_dipsw(95)
521 521 ; void=(void)
522 522 ; CODE SIZE= 37 bytes, CLOCK_SIZE= 38 clocks, STACK_SIZE= 0 bytes
523 523
524 524 ; Target chip : uPD79F0104
525 525 ; Device file : E1.00b
Segment informations:
ADRS LEN NAME
00000 00000H.1 @@BITS
00000 00030H @@CNST
00000 00000H @@R_INIT
00000 00000H @@INIT
00000 00204H @@DATA
00000 00000H @@R_INIS
00000 00000H @@INIS
00000 00000H @@DATS
00000 00000H LDR_CNSL
00000 00000H @@RLINIT
00000 00000H @@INITL
00000 00000H @@DATAL
00000 00000H @@CALT
00000 00082H LDR_CODE
00000 00000H LDR_CODL
00000 00000H @@BASE
Target chip : uPD79F0104
Device file : E1.00b
Assembly complete, 0 error(s) and 0 warning(s) found. ( 0)


Some files were not shown because too many files have changed in this diff Show More