Example #1
0
void main( void )
{
    int             i, j;
    unsigned int    u;
    char            c;

    /* マイコン機能の初期化 */
    init();                             /* 初期化                       */
    initI2CEeprom( &P6DDR, &P6DR, 0x90, 6, 5);  /* EEP-ROM初期設定      */
    init_sci1( 0x00, 79 );              /* SCI1初期化                   */
    set_ccr( 0x00 );                    /* 全体割り込み許可             */

    /* マイコンカーの状態初期化 */
    speed_r( 0, 0 );
    speed_f( 0, 0 );
    servoPwmOut( 0 );

    while( 1 ) {
        switch( pattern ) {
        case 0:
            /* メニュー */
            printf( "\n\n" );
            printf( "Motor Drive PCB TypeS Test Program Ver1.00\n" );
            printf( "\n" );
            printf( "1 : LEDのテスト\n" );
            printf( "2 : スイッチのテスト\n" );
            printf( "3 : CN8の入力テスト\n" );
            printf( "4 : ブザーのテスト\n" );
            printf( "5 : エンコーダのテスト\n" );
            printf( "6 : EEP-ROMのテスト\n" );
            printf( "7 : ボリュームのテスト\n" );
            printf( "8 : アナログセンサ基板のテスト\n" );
            printf( "9 : モータのテスト\n" );
            printf( "\n" );
            printf( "1-9の数字を入力してください " );
            pattern = 1;
            break;

        case 1:
            if( get_sci(&c) ) {
                if( c >= '1' && c <= '9' ) {
                    printf( "%c\n\n" , c );
                    cnt1 = 0;
                    pattern = (c - 0x30) * 10 + 1;
                }
            }
            break;

        case 11:
            /* LEDのテスト */
            printf( "現在LED2〜5を順番に点灯中です。" );
            printf( "終わったらどれかキーを押してください。\n" );
            pattern = 12;
            break;

        case 12:
            led_out( 1 << (cnt1 / 500) );
            if( cnt1 >= 2000 ) cnt1 = 0;
            if( get_sci(&c) == 1 ) {
                led_out( 0 );
                pattern = 0;
            }
            break;

        case 21:
            /* スイッチのテスト */
            printf( "現在スイッチの値を表示中です。" );
            printf( "終わったらどれかキーを押してください。\n" );
            pattern = 22;
            break;

        case 22:
            if( get_sci(&c) == 1 ) {
                pattern = 0;
                break;
            }
            if( cnt1 >= 200 ) {
                cnt1 = 0;
                printf( "ディップSW(SW3)の値 : %02x ", dipsw_get2() );
                printf( "プッシュSW(SW2)の値 : %1x\r", pushsw_get() );
            }
            break;

        case 31:
            /* CN8の入力テスト */
            printf( "CN8に入力されている値を表示中です。" );
            printf( "終わったらどれかキーを押してください。\n" );
            pattern = 32;
            break;

        case 32:
            if( get_sci(&c) == 1 ) {
                pattern = 0;
                break;
            }
            if( cnt1 >= 200 ) {
                cnt1 = 0;
                printf( "CN8の入力値 : %1x\r", cn8_get() );
            }
            break;

        case 41:
            /* ブザーのテスト */
            printf( "ブザーをテストします。" );
            printf( "終わったらどれかキーを押してください。\n" );
            pattern = 42;
            break;

        case 42:
            if( get_sci(&c) == 1 ) {
                pattern = 0;
                beep_out( 0 );
                break;
            }
            if( cnt1 <= 1000 ) {
                beep_out( 1 );
            } else if( cnt1 <= 2000 ) {
                beep_out( 0 );
            } else {
                cnt1 = 0;
            }
            break;

        case 51:
            /* エンコーダのテスト */
            printf( "エンコーダの入力パルス数を表示します。" );
            printf( "終わったらどれかキーを押してください。\n" );
            lEncoderTotal = 0;
            pattern = 52;
            break;

        case 52:
            if( get_sci(&c) == 1 ) {
                pattern = 0;
                break;
            }
            if( cnt1 >= 200 ) {
                cnt1 = 0;
                printf( "エンコーダのパルス値 : %8ld\r", lEncoderTotal );
            }
            break;

        case 61:
            /* EEP-ROMのテスト */
            printf( "EEP-ROMが正常に書き込めるかチェックします。" );
            printf( "チェック中はキー入力を受け付けません。" );
            printf( "チェックしますか?(Y or N) " );
            pattern = 62;
            break;

        case 62:
            if( get_sci(&c) == 1 ) {
                switch( c ) {
                case 'Y':
                case 'y':
                    printf( "y\n" );
                    pattern = 63;
                    break;
                case 'N':
                case 'n':
                    printf( "n\n" );
                    pattern = 0;
                    break;
                }
            }
            break;

        case 63:
            for( u=0; u<0x8000 ; u++ ) {
                if( u % 0x80 == 0 ) {
                    printf( "%3ld%%チェック完了...\r",
                                        (long)u * 100 / 0x8000 );
                }
                writeI2CEeprom( u, 0xaa );
                while( !checkI2CEeprom() );
                if( (unsigned char)readI2CEeprom( u ) != 0xaa ) {
                    break;
                }

                writeI2CEeprom( u, 0x55 );
                while( !checkI2CEeprom() );
                if( (unsigned char)readI2CEeprom( u ) != 0x55 ) {
                    break;
                }

                writeI2CEeprom( u, 0x00 );
                while( !checkI2CEeprom() );
                if( (unsigned char)readI2CEeprom( u ) != 0x00 ) {
                    break;
                }
            }
            printf( "\n" );
            if( u == 0x8000 ) {
                printf( "EEP-ROMは正常でした。\n" );
           } else {
                printf( "EEP-ROMに異常がありました。" );
                printf( "半田不良など確認してください。\n" );
            }
            pattern = 64;
            break;

        case 64:
            printf( "どれかキーを押してください。" );
            while( get_sci(&c) );
            pattern = 65;
            break;

        case 65:
            if( get_sci(&c) == 1 ) {
                pattern = 0;
                break;
            }
            break;

        case 71:
            /* ボリュームのテスト */
            printf( "ボリューム電圧を表示中です。" );
            printf( "終わったらどれかキーを押してください。\n" );
            pattern = 72;
            break;

        case 72:
            if( get_sci(&c) == 1 ) {
                pattern = 0;
                break;
            }
            if( cnt1 >= 200 ) {
                cnt1 = 0;
                i =  AD_DRB >> 6;
                j = (long)500 * i / 1023;
                printf( "ボリュームの電圧 : %4d (%01d.%02dV)\r",
                                                i, j/100, j%100 );
            }
            break;

        case 81:
            /* アナログセンサ基板のテスト */
            printf( "アナログセンサ基板の値を表示中です。" );
            printf( "終わったらどれかキーを押してください。\n" );
            pattern = 82;
            break;

        case 82:
            if( get_sci(&c) == 1 ) {
                pattern = 0;
                break;
            }
            if( cnt1 >= 200 ) {
                cnt1 = 0;
                printf( "Left=%4d , Right=%4d , "
                        "Digital=%1x , Center=%1d , Bar=%1d\r",
                            AD_DRD>>6, AD_DRC>>6, sensor_inp(),
                            center_inp(), startbar_get() );
            }
            break;

        case 91:
            /* モータのテスト */
            printf( "モータのテストをします。\n" );
            printf( "1 : 左後ろモータ\n" );
            printf( "2 : 右後ろモータ\n" );
            printf( "3 : サーボモータ\n" );
            printf( "4 : 左前モータ\n" );
            printf( "5 : 右前モータ\n" );
            printf( "0 : 終了\n" );
            printf( "\n" );
            printf( "0-5の数字を入力してください " );
            pattern = 92;
            break;

        case 92:
            if( get_sci(&c) ) {
                if( c == '0' ) {
                    pattern = 0;
                    break;
                } else if( c >= '1' && c <= '5' ) {
                    printf( "%c\n\n" , c );
                    cnt1 = 0;
                    pattern = (c - 0x31) * 10 + 101;
                }
            }
            break;

        case 101:
            printf( "左後ろモータをテストします。\n" );
            printf( "スペースキーを押して動作を変えます。" );
            printf( "0キーで終了です。\n" );
            cnt1 = 0;
            i = 0;
            j = 1;
            pattern = 102;
            break;

        case 102:
            if( get_sci(&c) ) {
                if( c == '0' ) {
                    speed2_r( 0, 0 );
                    motor_mode_r( BRAKE , BRAKE );
                    pattern = 91;
                    break;
                } else if( c == ' ' ) {
                    cnt1 = 0;
                    i++;
                    if( i >= 5 ) i = 0;
                }
            }
            switch( i ) {
            case 0:
                if( i != j ) {
                    printf( "停止中                     \r" );
                    j = i;
                }
                speed2_r( 0, 0 );
                motor_mode_r( BRAKE , BRAKE );
                break;
            case 1:
                if( i != j ) {
                    printf( "正転50%% <-> ブレーキ動作中\r" );
                    j = i;
                }
                if( cnt1 <= 1000 ) {
                    speed2_r( 50, 0 );
                    motor_mode_r( BRAKE , BRAKE );
                } else if(  cnt1 <= 2000 ) {
                    speed2_r( 0, 0 );
                    motor_mode_r( BRAKE , BRAKE );
                } else {
                    cnt1 = 0;
                }
                break;
            case 2:
                if( i != j ) {
                    printf( "逆転50%% <-> ブレーキ動作中\r" );
                    j = i;
                }
                if( cnt1 <= 1000 ) {
                    speed2_r( -50, 0 );
                    motor_mode_r( BRAKE , BRAKE );
                } else if(  cnt1 <= 2000 ) {
                    speed2_r( 0, 0 );
                    motor_mode_r( BRAKE , BRAKE );
                } else {
                    cnt1 = 0;
                }
                break;
            case 3:
                if( i != j ) {
                    printf( "正転50%% <-> フリー 動作中\r" );
                    j = i;
                }
                if( cnt1 <= 1000 ) {
                    speed2_r( 50, 0 );
                    motor_mode_r( FREE , BRAKE );
                } else if(  cnt1 <= 2000 ) {
                    speed2_r( 0, 0 );
                    motor_mode_r( FREE , BRAKE );
                } else {
                    cnt1 = 0;
                }
                break;
            case 4:
                if( i != j ) {
                    printf( "逆転50%% <-> フリー 動作中\r" );
                    j = i;
                }
                if( cnt1 <= 1000 ) {
                    speed2_r( -50, 0 );
                    motor_mode_r( FREE , BRAKE );
                } else if(  cnt1 <= 2000 ) {
                    speed2_r( 0, 0 );
                    motor_mode_r( FREE , BRAKE );
                } else {
                    cnt1 = 0;
                }
                break;
            }
            break;

        case 111:
            printf( "右後ろモータをテストします。\n" );
            printf( "スペースキーを押して動作を変えます。" );
            printf( "0キーで終了です。\n" );
            cnt1 = 0;
            i = 0;
            j = 1;
            pattern = 112;
            break;

        case 112:
            if( get_sci(&c) ) {
                if( c == '0' ) {
                    speed2_r( 0, 0 );
                    motor_mode_r( BRAKE , BRAKE );
                    pattern = 91;
                    break;
                } else if( c == ' ' ) {
                    cnt1 = 0;
                    i++;
                    if( i >= 5 ) i = 0;
                }
            }
            switch( i ) {
            case 0:
                if( i != j ) {
                    printf( "停止中                     \r" );
                    j = i;
                }
                speed2_r( 0, 0 );
                motor_mode_r( BRAKE , BRAKE );
                break;
            case 1:
                if( i != j ) {
                    printf( "正転50%% <-> ブレーキ動作中\r" );
                    j = i;
                }
                if( cnt1 <= 1000 ) {
                    speed2_r( 0, 50 );
                    motor_mode_r( BRAKE , BRAKE );
                } else if(  cnt1 <= 2000 ) {
                    speed2_r( 0, 0 );
                    motor_mode_r( BRAKE , BRAKE );
                } else {
                    cnt1 = 0;
                }
                break;
            case 2:
                if( i != j ) {
                    printf( "逆転50%% <-> ブレーキ動作中\r" );
                    j = i;
                }
                if( cnt1 <= 1000 ) {
                    speed2_r( 0, -50 );
                    motor_mode_r( BRAKE , BRAKE );
                } else if(  cnt1 <= 2000 ) {
                    speed2_r( 0, 0 );
                    motor_mode_r( BRAKE , BRAKE );
                } else {
                    cnt1 = 0;
                }
                break;
            case 3:
                if( i != j ) {
                    printf( "正転50%% <-> フリー 動作中\r" );
                    j = i;
                }
                if( cnt1 <= 1000 ) {
                    speed2_r( 0, 50 );
                    motor_mode_r( BRAKE , FREE );
                } else if(  cnt1 <= 2000 ) {
                    speed2_r( 0, 0 );
                    motor_mode_r( BRAKE , FREE );
                } else {
                    cnt1 = 0;
                }
                break;
            case 4:
                if( i != j ) {
                    printf( "逆転50%% <-> フリー 動作中\r" );
                    j = i;
                }
                if( cnt1 <= 1000 ) {
                    speed2_r( 0, -50 );
                    motor_mode_r( BRAKE , FREE );
                } else if(  cnt1 <= 2000 ) {
                    speed2_r( 0, 0 );
                    motor_mode_r( BRAKE , FREE );
                } else {
                    cnt1 = 0;
                }
                break;
            }
            break;

        case 121:
            printf( "サーボモータをテストします。\n" );
            printf( "スペースキーを押して動作を変えます。" );
            printf( "0キーで終了です。\n" );
            cnt1 = 0;
            i = 0;
            j = 1;
            pattern = 122;
            break;

        case 122:
            if( get_sci(&c) ) {
                if( c == '0' ) {
                    servoPwmOut( 0 );
                    motor_mode_s( BRAKE );
                    pattern = 91;
                    break;
                } else if( c == ' ' ) {
                    cnt1 = 0;
                    i++;
                    if( i >= 5 ) i = 0;
                }
            }
            switch( i ) {
            case 0:
                if( i != j ) {
                    printf( "停止中                     \r" );
                    j = i;
                }
                servoPwmOut( 0 );
                motor_mode_s( BRAKE );
                break;
            case 1:
                if( i != j ) {
                    printf( "正転50%% <-> ブレーキ動作中\r" );
                    j = i;
                }
                if( cnt1 <= 1000 ) {
                    servoPwmOut( 50 );
                    motor_mode_s( BRAKE );
                } else if(  cnt1 <= 2000 ) {
                    servoPwmOut( 0 );
                    motor_mode_s( BRAKE );
                } else {
                    cnt1 = 0;
                }
                break;
            case 2:
                if( i != j ) {
                    printf( "逆転50%% <-> ブレーキ動作中\r" );
                    j = i;
                }
                if( cnt1 <= 1000 ) {
                    servoPwmOut( -50 );
                    motor_mode_s( BRAKE );
                } else if(  cnt1 <= 2000 ) {
                    servoPwmOut( 0 );
                    motor_mode_s( BRAKE );
                } else {
                    cnt1 = 0;
                }
                break;
            case 3:
                if( i != j ) {
                    printf( "正転50%% <-> フリー 動作中\r" );
                    j = i;
                }
                if( cnt1 <= 1000 ) {
                    servoPwmOut( 50 );
                    motor_mode_s( FREE );
                } else if(  cnt1 <= 2000 ) {
                    servoPwmOut( 0 );
                    motor_mode_s( FREE );
                } else {
                    cnt1 = 0;
                }
                break;
            case 4:
                if( i != j ) {
                    printf( "逆転50%% <-> フリー 動作中\r" );
                    j = i;
                }
                if( cnt1 <= 1000 ) {
                    servoPwmOut( -50 );
                    motor_mode_s( FREE );
                } else if(  cnt1 <= 2000 ) {
                    servoPwmOut( 0 );
                    motor_mode_s( FREE );
                } else {
                    cnt1 = 0;
                }
                break;
            }
            break;

        case 131:
            printf( "左前モータをテストします。\n" );
            printf( "スペースキーを押して動作を変えます。" );
            printf( "0キーで終了です。\n" );
            cnt1 = 0;
            i = 0;
            j = 1;
            pattern = 132;
            break;

        case 132:
            if( get_sci(&c) ) {
                if( c == '0' ) {
                    speed2_f( 0, 0 );
                    motor_mode_f( BRAKE , BRAKE );
                    pattern = 91;
                    break;
                } else if( c == ' ' ) {
                    cnt1 = 0;
                    i++;
                    if( i >= 5 ) i = 0;
                }
            }
            switch( i ) {
            case 0:
                if( i != j ) {
                    printf( "停止中                     \r" );
                    j = i;
                }
                speed2_f( 0, 0 );
                motor_mode_f( BRAKE , BRAKE );
                break;
            case 1:
                if( i != j ) {
                    printf( "正転50%% <-> ブレーキ動作中\r" );
                    j = i;
                }
                if( cnt1 <= 1000 ) {
                    speed2_f( 50, 0 );
                    motor_mode_f( BRAKE , BRAKE );
                } else if(  cnt1 <= 2000 ) {
                    speed2_f( 0, 0 );
                    motor_mode_f( BRAKE , BRAKE );
                } else {
                    cnt1 = 0;
                }
                break;
            case 2:
                if( i != j ) {
                    printf( "逆転50%% <-> ブレーキ動作中\r" );
                    j = i;
                }
                if( cnt1 <= 1000 ) {
                    speed2_f( -50, 0 );
                    motor_mode_f( BRAKE , BRAKE );
                } else if(  cnt1 <= 2000 ) {
                    speed2_f( 0, 0 );
                    motor_mode_f( BRAKE , BRAKE );
                } else {
                    cnt1 = 0;
                }
                break;
            case 3:
                if( i != j ) {
                    printf( "正転50%% <-> フリー 動作中\r" );
                    j = i;
                }
                if( cnt1 <= 1000 ) {
                    speed2_f( 50, 0 );
                    motor_mode_f( FREE , BRAKE );
                } else if(  cnt1 <= 2000 ) {
                    speed2_f( 0, 0 );
                    motor_mode_f( FREE , BRAKE );
                } else {
                    cnt1 = 0;
                }
                break;
            case 4:
                if( i != j ) {
                    printf( "逆転50%% <-> フリー 動作中\r" );
                    j = i;
                }
                if( cnt1 <= 1000 ) {
                    speed2_f( -50, 0 );
                    motor_mode_f( FREE , BRAKE );
                } else if(  cnt1 <= 2000 ) {
                    speed2_f( 0, 0 );
                    motor_mode_f( FREE , BRAKE );
                } else {
                    cnt1 = 0;
                }
                break;
            }
            break;

        case 141:
            printf( "右後ろモータをテストします。\n" );
            printf( "スペースキーを押して動作を変えます。" );
            printf( "0キーで終了です。\n" );
            cnt1 = 0;
            i = 0;
            j = 1;
            pattern = 142;
            break;

        case 142:
            if( get_sci(&c) ) {
                if( c == '0' ) {
                    speed2_f( 0, 0 );
                    motor_mode_f( BRAKE , BRAKE );
                    pattern = 91;
                    break;
                } else if( c == ' ' ) {
                    cnt1 = 0;
                    i++;
                    if( i >= 5 ) i = 0;
                }
            }
            switch( i ) {
            case 0:
                if( i != j ) {
                    printf( "停止中                     \r" );
                    j = i;
                }
                speed2_f( 0, 0 );
                motor_mode_f( BRAKE , BRAKE );
                break;
            case 1:
                if( i != j ) {
                    printf( "正転50%% <-> ブレーキ動作中\r" );
                    j = i;
                }
                if( cnt1 <= 1000 ) {
                    speed2_f( 0, 50 );
                    motor_mode_f( BRAKE , BRAKE );
                } else if(  cnt1 <= 2000 ) {
                    speed2_f( 0, 0 );
                    motor_mode_f( BRAKE , BRAKE );
                } else {
                    cnt1 = 0;
                }
                break;
            case 2:
                if( i != j ) {
                    printf( "逆転50%% <-> ブレーキ動作中\r" );
                    j = i;
                }
                if( cnt1 <= 1000 ) {
                    speed2_f( 0, -50 );
                    motor_mode_f( BRAKE , BRAKE );
                } else if(  cnt1 <= 2000 ) {
                    speed2_f( 0, 0 );
                    motor_mode_f( BRAKE , BRAKE );
                } else {
                    cnt1 = 0;
                }
                break;
            case 3:
                if( i != j ) {
                    printf( "正転50%% <-> フリー 動作中\r" );
                    j = i;
                }
                if( cnt1 <= 1000 ) {
                    speed2_f( 0, 50 );
                    motor_mode_f( BRAKE , FREE );
                } else if(  cnt1 <= 2000 ) {
                    speed2_f( 0, 0 );
                    motor_mode_f( BRAKE , FREE );
                } else {
                    cnt1 = 0;
                }
                break;
            case 4:
                if( i != j ) {
                    printf( "逆転50%% <-> フリー 動作中\r" );
                    j = i;
                }
                if( cnt1 <= 1000 ) {
                    speed2_f( 0, -50 );
                    motor_mode_f( BRAKE , FREE );
                } else if(  cnt1 <= 2000 ) {
                    speed2_f( 0, 0 );
                    motor_mode_f( BRAKE , FREE );
                } else {
                    cnt1 = 0;
                }
                break;
            }
            break;

        default:
            break;
        }
Example #2
0
void main(void)
{
	vInitialize();
	myInit();
	
	while(!pushsw_get())
	{
		if(cnt1<100)
			led_out(0x1);
		else if(cnt1<200)
			led_out(0x2);
		else	cnt1 = 0;
	}
	cnt1 = 0;
	while(startbar_get())
	{
		if(cnt1<50)
			led_out(0x1);
		else if(cnt1<100)
			led_out(0x2);
		else	cnt1 = 0;
	}
	
	led_out(0);
	start();
	pattern = 10;	
	while(1)
	{

		switch(pattern)
		{

			case 10:	//直线
					if(check_crossline()){	pattern = 30;break;	}
					if(check_blackArea()){	pattern = 40;break;	}
					
					straight_run();				//直线前行,弯道检测,盲区检测
					break;
			
			case 20:	//弯道
						switch(turn_direction)
						{
							case LEFT:
									handle(-1*midDegree_st4);
									left_turn();
									break;
							case RIGHT:
									handle(midDegree_st4);
									right_turn();
									break;
							default:break;
						}
						break;


			case 30:	//直角

						rightAngle();						
						break;


			case 40:	//盲区
						switch(blackArea_direction)
						{
							case LEFT:
									left_blackArea();
									break;
							case RIGHT:
									right_blackArea();
									break;
							default:break;									
						}
						break;

			default:break;

		}//end switch

	}//end while
	
}
int lcdProcess( void )
{
    int i,n;

    if( pattern != 1 ) {
        if( cnt_lcd >= 250 ) {
            cnt_lcd = 0;
            lcdPosition( 0, 0 );
                     /* 0123456789abcbef 1行16文字 */
            lcdPrintf( "pattern = %3d   ", pattern );
                     /* 01234567..89abcde.f 1行16文字 */
            lcdPrintf( "sensor=%02x bar=%d ",
                        sensor8, startbar_get() );
        }
        return;
    }

    /* スイッチ4 設定値保存 */
    if( getSwFlag(SW_4) ) {
        // パラメータ保存
        writeDataFlashParameter();
    }

    /* スイッチ3 メニュー+1 */
    if( getSwFlag(SW_3) ) {
        lcd_pattern++;
		lcdPosition( 0, 0 );
		lcdPrintf( "                ", i );
		lcdPrintf( "                ", i );
        if( lcd_pattern == 16 ) lcd_pattern = 1;
    }

    /* スイッチ2 メニュー−1 */
    if( getSwFlag(SW_2) ) {
        lcd_pattern--;
		lcdPosition( 0, 0 );
		lcdPrintf( "                ", i );
		lcdPrintf( "                ", i );

        if( lcd_pattern == 0 ) lcd_pattern = 11;
    }

    /* LCD、スイッチ処理 */
    switch( lcd_pattern ) {
    case 1:
        /* サーボセンタ値調整 */
        if( getSwFlag(SW_1) ) {
            servo_center++;
            if( servo_center > 10000 ) servo_center = 10000;
        }
        if( getSwFlag(SW_0) ) {
            servo_center--;
            if( servo_center < 1000 ) servo_center = 1000;
        }
        data_buff[DF_SERVO1] = servo_center >> 8;
        data_buff[DF_SERVO2] = servo_center & 0xff;
        handle( 0 );

        /* LCD処理 */
        lcdPosition( 0, 0 );
                 /* 0123456789ab..f 1行16文字 */
        lcdPrintf( "01 servo = %05d", servo_center );
                 /* 01234567..89abcde.f 1行16文字 */
        lcdPrintf( "sensor=%02x bar=%d ",
                    sensor8, startbar_get() );
        break;

    case 2:
        /* PWM値調整 */
        i = data_buff[DF_PWM];
        if( getSwFlag(SW_1) ) {
            i++;
            if( i > 100 ) i = 100;
        }
        if( getSwFlag(SW_0) ) {
            i--;
            if( i < 0 ) i = 0;
        }
        data_buff[DF_PWM] = i;

        /* LCD処理 */
        lcdPosition( 0, 0 );
                 /* 0123456789..bcdef0123456789..bcdef 1行16文字 */
        lcdPrintf( "02 Max SPEED         %03d        ", i );
                 /* 01234567..89abcde.f 1行16文字 */
        break;

    case 3:
        /* 比例値 Kp */
        i = data_buff[DF_KP];
        if( getSwFlag(SW_1) ) {
            i++;
            if( i > 100 ) i = 100;
        }
        if( getSwFlag(SW_0) ) {
            i--;
            if( i < -100 ) i = -100;
        }
        data_buff[DF_KP] = i;
		
		if(i > 0 ){
			n = i  % 10;
			i /= 10;		
		}else{
			n = -(i  % 10);
			i /= 10;
		}						
			
        /* LCD処理 */
        lcdPosition( 0, 0 );
                 /* 0123456789..bcdef0123456789..bcdef 1行16文字 */
        lcdPrintf( "03 Kp    %d.%d                   ", i,n );
                 /* 01234567..89abcde.f 1行16文字 */
        break;	

    case 4:
        /* 比例値 Kp */
        i = data_buff[DF_KI];
        if( getSwFlag(SW_1) ) {
            i++;
            if( i > 100 ) i = 100;
        }
        if( getSwFlag(SW_0) ) {
            i--;
            if( i < -100 ) i = -100;
        }
        data_buff[DF_KI] = i;
		
		if(i > 0 ){
			n = i  % 10;
			i /= 10;		
		}else{
			n = -(i  % 10);
			i /= 10;
		}						
			
        /* LCD処理 */
        lcdPosition( 0, 0 );
                 /* 0123456789..bcdef0123456789..bcdef 1行16文字 */
        lcdPrintf( "04 Ki    %d.%d                   ", i,n );
                 /* 01234567..89abcde.f 1行16文字 */
        break;	
		
	case 5:
        /* 比例値 Kp */
        i = data_buff[DF_KD];
        if( getSwFlag(SW_1) ) {
            i++;
            if( i > 100 ) i = 100;
        }
        if( getSwFlag(SW_0) ) {
            i--;
            if( i < -100 ) i = -100;
        }
        data_buff[DF_KD] = i;
		
		if(i > 0 ){
			n = i  % 10;
			i /= 10;		
		}else{
			n = -(i  % 10);
			i /= 10;
		}						
			
        /* LCD処理 */
        lcdPosition( 0, 0 );
                 /* 0123456789..bcdef0123456789..bcdef 1行16文字 */
        lcdPrintf( "05 Kd    %d.%d                   ", i,n );
                 /* 01234567..89abcde.f 1行16文字 */
        break;	
		
    case 6:
        /* タイマー値調整 */
		i = ((unsigned char)data_buff[DF_STOP1]*0x100)|(unsigned char)data_buff[DF_STOP2];
        if( getSwFlag(SW_1) ) {
            i+=100;
            if( i > 9000 ) i = 9000;
        }
        if( getSwFlag(SW_0) ) {
            i-=100;
            if( i < 0 ) i = 0;
        }
        data_buff[DF_STOP1] = i >> 8;
        data_buff[DF_STOP2] = i & 0xff;

        /* LCD処理 */
        lcdPosition( 0, 0 );
                 /* 0123456789abcdef0123456789abcdef 1行16文字 */
        lcdPrintf( "06  stop time       %04d mS", i );
        break;
	case 7://クランク時モーター速度
			i = data_buff[DF_crank_motorS];
        	if( getSwFlag(SW_1) ) {
            	i++;
            	if( i > 100 ) i = 100;
        	}
        	if( getSwFlag(SW_0) ) {
            	i--;
            	if( i < 0 ) i = 0;
        	}
        	data_buff[DF_crank_motorS] = i;

        /* LCD処理 */
        lcdPosition( 0, 0 );
                 /* 0123456789abcdef0123456789abcdef 1行16文字 */
        lcdPrintf( "07 Crank Speed      %03d", i );
        break;	
	case 8:
		i = data_buff[DF_crank_handlepwm];
        if( getSwFlag(SW_1) ) {
            i++;
            if( i > 40 ) i = 40;
        }
        if( getSwFlag(SW_0) ) {
           	i--;
           	if( i < 0 ) i = 0;
       	}
        	data_buff[DF_crank_handlepwm] = i;

        /* LCD処理 */
        lcdPosition( 0, 0 );
                 /* 0123456789abcdef0123456789abcdef 1行16文字 */
        lcdPrintf( "08 Crank handle     %03d", i );
        break;
	case 9://クランク時モーター OUT
			i = data_buff[DF_crank_motor1];
        	if( getSwFlag(SW_1) ) {
            	i++;
            	if( i > 100 ) i = 100;
        	}
        	if( getSwFlag(SW_0) ) {
            	i--;
            	if( i < 0 ) i = 0;
        	}
        	data_buff[DF_crank_motor1] = i;

        /* LCD処理 */
        lcdPosition( 0, 0 );
                 /* 0123456789abcdef0123456789abcdef 1行16文字 */
        lcdPrintf( "09 Crank motor  OUT   %03d", i );
        break;
	case 10://クランク時モーター IN
			i = data_buff[DF_crank_motor2];
        	if( getSwFlag(SW_1) ) {
            	i++;
            	if( i > 100 ) i = 100;
        	}
        	if( getSwFlag(SW_0) ) {
            	i--;
            	if( i < -100 ) i = -100;
        	}
        	data_buff[DF_crank_motor2] = i;

        /* LCD処理 */
        lcdPosition( 0, 0 );
                 /* 0123456789abcdef0123456789abcdef 1行16文字 */
        lcdPrintf( "10 Crank motor  IN   %03d", i );
        break;

	case 11:
			i = data_buff[DF_lane_motorS];
        	if( getSwFlag(SW_1) ) {
            	i++;
            	if( i > 100 ) i = 100;
        	}
        	if( getSwFlag(SW_0) ) {
            	i--;
            	if( i < 0 ) i = 0;
        	}
        	data_buff[DF_lane_motorS] = i;

        /* LCD処理 */
        lcdPosition( 0, 0 );
                 /* 0123456789abcdef0123456789abcdef 1行16文字 */
        lcdPrintf( "11 LaneChange   Speed    %3d", i );
        break;
	case 12:
			i = data_buff[DF_laneL_PWM];
        	if( getSwFlag(SW_1) ) {
            	i++;
            	if( i > 30 ) i = 30;
        	}
        	if( getSwFlag(SW_0) ) {
            	i--;
            	if( i < 0 ) i = 0;
        	}
        	data_buff[DF_laneL_PWM] = i;

        /* LCD処理 */
        lcdPosition( 0, 0 );
                 /* 0123456789abcdef0123456789abcdef 1行16文字 */
        lcdPrintf( "12 LaneChange   L handle   %03d", i );
        break;
	case 13:
			i = data_buff[DF_laneR_PWM];
        	if( getSwFlag(SW_1) ) {
            	i++;
            	if( i > 30 ) i = 30;
        	}
        	if( getSwFlag(SW_0) ) {
            	i--;
            	if( i < 0 ) i = 0;
        	}
        	data_buff[DF_laneR_PWM] = i;

        /* LCD処理 */
        lcdPosition( 0, 0 );
                 /* 0123456789abcdef0123456789abcdef 1行16文字 */
        lcdPrintf( "13 LaneChange   R handle   %03d", i );
        break;
	case 14:
			i = data_buff[DF_lane_motorL];
        	if( getSwFlag(SW_1) ) {
            	i++;
            	if( i > 100 ) i = 100;
        	}
        	if( getSwFlag(SW_0) ) {
            	i--;
            	if( i < 0 ) i = 0;
        	}
        	data_buff[DF_lane_motorL] = i;

        /* LCD処理 */
        lcdPosition( 0, 0 );
                 /* 0123456789abcdef0123456789abcdef 1行16文字 */
        lcdPrintf( "14 LaneChange   Motor OUT %03d", i );
        break;
	case 15:
			i = data_buff[DF_lane_motorR];
        	if( getSwFlag(SW_1) ) {
            	i++;
            	if( i > 100 ) i = 100;
        	}
        	if( getSwFlag(SW_0) ) {
            	i--;
            	if( i < 0 ) i = 0;
        	}
        	data_buff[DF_lane_motorR] = i;

        /* LCD処理 */
        lcdPosition( 0, 0 );
                 /* 0123456789abcdef0123456789abcdef 1行16文字 */
        lcdPrintf( "15 LaneChange   Motor IN  %03d", i );
        break;

	}
}