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 */