// Copyright 2005 Doi Shigeki // list401.cpp LEDの点滅、スイッチのエコー // 〜PCIボードを使った外部制御の基礎 // fbippi.libをリンクすること #include #include #include #include "FbiPpi.h" main() { HANDLE h; int r; int i; BYTE x; printf("PCIのテスト1\n"); h = PpiOpen( "FBIPPI1", // デバイス名 0 ); // オープンフラグ if( h == INVALID_HANDLE_VALUE ){ printf("PCIデバイスがオープンできません\n"); return 0; } r = PpiControl( h, // デバイスハンドル FBIPPI_8255_CONTROLLER1 , // コントローラの指定 0x90 ); // 制御データ,モード0,PAのみ入力 printf("PPI制御結果 = %d( %d:ok) \n", r, FBIPPI_ERROR_SUCCESS ); printf("点滅動作\n"); for( i = 0 ; i< 10 ; i++ ){ // 10回点滅,周期1秒 printf( "%d \n", i ); // ポートB へ 0xf を出力 PpiOutputPort( h, // デバイスハンドル FBIPPI_8255_CONTROLLER1 , // コントローラ指定 FBIPPI_PORT_B, // ポート指定:B 0xf ); // 出力データ Sleep( 500 ); // 時間待ち 500ミリ秒 // ポートB へ 0 を出力 PpiOutputPort( h, // デバイスハンドル FBIPPI_8255_CONTROLLER1 , // コントローラ指定 FBIPPI_PORT_B, // ポート指定:B 0x0 ); // 出力データ Sleep( 500 ); // 時間待ち 500ミリ秒 } printf("エコー動作\n"); while( 1 ){ // ポートA から入力 PpiInputPort( h, // デバイスハンドル FBIPPI_8255_CONTROLLER1, // コントローラ指定 FBIPPI_PORT_A, // ポート指定:A &x ); // データ格納用変数へのポインタ // ポートB へ出力 PpiOutputPort( h, // デバイスハンドル FBIPPI_8255_CONTROLLER1 , // コントローラ指定 FBIPPI_PORT_B, // ポート指定:B x ); // 出力データ if ( kbhit() ) break; } PpiClose( h ); // デバイスのクローズ }