p0_? はテストに使用したマイコンのI/Oポートです。 //================================================================================================ void UTL006dac( int a, int b, int c, int d ) // D/A OUTPUT //================================================================================================ { int i; int tmp; p1_0 = 0; // FDACLK p1_6 = 0; // FDALD /* Port P16 bit */ for( i = 0,tmp= 0; i< 16/*bit*/; i++){ tmp = tmp | ( p1_2 ? 1 : 0 ); if( i < 15) tmp = tmp<<1; p0_5 = ((d & 0x8000) ? 1 : 0); p1_0 = 1; p1_0 = 0; // FDACLK d = d<<1; } d = tmp; for( i = 0,tmp= 0; i< 16/*bit*/; i++){ tmp = tmp | ( p1_2 ? 1 : 0 ); if( i < 15) tmp = tmp<<1; p0_5 = ((c & 0x8000) ? 1 : 0); p1_0 = 1; p1_0 = 0; // FDACLK c = c<<1; } c = tmp; for( i = 0,tmp= 0; i< 16/*bit*/; i++){ tmp = tmp | ( p1_2 ? 1 : 0 ); if( i < 15) tmp = tmp<<1; p0_5 = ((b & 0x8000) ? 1 : 0); p1_0 = 1; p1_0 = 0; // FDACLK b = b<<1; } b = tmp; for( i = 0,tmp= 0; i< 16/*bit*/; i++){ tmp = tmp | ( p1_2 ? 1 : 0 ); if( i < 15) tmp = tmp<<1; p0_5 = ((a & 0x8000) ? 1 : 0); p1_0 = 1; p1_0 = 0; // FDACLK a = a<<1; } a = tmp; p1_6 = 1; // FDALD /* Port P16 bit */ }