www.pudn.com > usbhost_source.rar > H8HST.C


/** 
*	h8lb.c 
*	H8LANボード		メイン 
*	Copyright (c)2002 Junichi Tomaru 
*/ 
#define		_GLOBAL_DEFINED 
#include	"h8hst.h" 
 
/** 
*	IRQ5割り込みルーチン 
*/ 
#pragma	interrupt 
void	irq5( void ) 
{ 
	IER &= 0xdf; 
 
	IER |= 0x20; 
} 
 
 
/** 
*	ディップSW読む 
*	下位7ビット有効 
*/ 
char	getdipsw( void ) 
{ 
	char	ret; 
 
	ret = ~P4DR & 0xf; 
	ret |= (( ~P6DR ) << 4 ) & 0x70; 
 
	return	ret; 
} 
 
 
/** 
*	ポート等初期化 
*/ 
void	portinit( void ) 
{ 
	P4DDR = 0; 
						/* P7 未使用 */ 
	P9DR = 0x10; 
	P9DDR = 0x13; 
	PBDR = 0x00;				/* PB出力初期状態 */ 
	PBDDR = 0xff;				/* PB全ビット出力 */ 
 
	RFSHCR = 0;				/* リフレッシュコントローラをインタバルタイマとして使用 */ 
	RTCOR = 195;				/* クリア周期 */ 
						/* 1ms = 25000000Hz / 128 / 195 */ 
	RTMCSR = 0x60;				/* 割り込み許可、φ/128 */ 
	RSTCSR = 0x40;				/* リセット出力イネーブル */ 
 
/**//*	ISCR &= 0xdf;*/				/* IRQ5 ACTIVE LOW */ 
/**//*	IER = 0x20;*/				/* IRQ5許可 */ 
} 
 
 
/** 
*	変数初期化 
*/ 
void	valinit( void ) 
{ 
} 
 
 
/** 
*	周辺初期化 
*/ 
void	init( void ) 
{ 
	portinit( );				/* ポート初期化 */ 
	valinit( ); 
	lcdinit( ); 
	sioinit( 0, B19200, B8PNS1 );		/* シリアル初期化 */ 
	sioinit( 1, B19200, B8PNS1 );		/* シリアル初期化 */ 
	if(( getdipsw( ) & 0x10 ) == 0x10 ){ 
		debuginit( ); 
	} 
	lcdcls( ); 
	dispmessage( 0 ); 
	sl_init( );				/* ホストチップ初期化 */ 
	lcdlcls( 0 ); 
	lcdprint( 2, 0, titleid );		/* スタートアップ画面 */ 
	lcdprint( 0, 1, vers ); 
	waitms( 2000 ); 
	ctrlusbpower( 1 );			/* バス電源ON */ 
	lcdcls( ); 
	dispmessage( 1 ); 
} 
 
 
/** 
*	メイン 
*/ 
int	main( void ) 
{ 
	int	i; 
 
	init( ); 
	i = 0; 
	_forever{ 
		if( i == 0 ){ 
			if( checkdevice( ) == TRUE ){ 
				i = 1; 
			} 
		} 
		else if( i == 1 ){ 
			if( plugnplay( ) == TRUE ){ 
				i = 2; 
			} 
		} 
		if(( getdipsw( ) & 0x10 ) == 0x10 ){ 
			debugmain( ); 
		} 
	} 
} 
 
 
/* end of h8hst.c */