#include #include //Sleep()関数使用のため char gbit[6][9]={"xxxxxxxx","xxxxxxxx","xxxxxxxx" ,"xxxxxxxx","xxxxxxxx","xxxxxxxx"}; unsigned char inportb(unsigned char place){ int cnt; unsigned char in=0x00; if((place!=0xd2)&&(place!=0xd3)){ printf("0x%xポートは入力に使っちゃダメ!\n",place); return 0; } printf("0x%xポートに2進数で値を入力してね(00000000〜11111111)\nx",place); // scanf("%d",&in); //scanfで16進数(%x)使えないじゃん!! for(cnt=0x80;cnt>=0x01;cnt>>=1) if(getche()=='1') in+=cnt; printf("\n"); outportb(place,in); /*自動仕分け装置用*********************************************************** if(place==0xd1){ switch(in){ case 0x00 : printf("入力なし(大きさ:小)");break; case 0x01 : printf("大きさセンサ1ON(中)");break; case 0x02 : printf("大きさセンサ2ON(大)");break; case 0x03 : printf("大きさセンサ1&2ON(大)");break; case 0x04 : printf("位置センサ1ON");break; case 0x08 : printf("位置センサ2ON");break; case 0x10 : printf("位置センサ3ON");break; } return in|0xe0; //初期値が0xe0のため ******************************************************************************/ } outportb(unsigned char place,unsigned char out){ int cnt,plc; unsigned char mask; if((place==0xd6)||(place==0xd7)) return 0; //CRでは出力はなし switch(place){ case 0xd0 :plc=0;break; case 0xd2 :plc=1;break; case 0xd4 :plc=2;break; case 0xd1 :plc=3;break; case 0xd3 :plc=4;break; case 0xd5 :plc=5;break; } for(mask=0x01,cnt=7;cnt>=0;mask<<=1,cnt--){ if((mask&out)!=0x00) gbit[plc][cnt]='O'; //xとoは高さ違う方が判りやすい else gbit[plc][cnt]='x'; } gbit[plc][8]='\0'; for(cnt=0;cnt<=5;cnt++) printf("%s ",gbit[cnt]); printf("\r"); //\nでもいいかも /*自動仕分け装置用*********************************************************** if(place==0xd2){ switch(out){ case 0x00 : printf("全モータ停止");break; case 0x01 : printf("モータ1動作");break; case 0x02 : printf("モータ2動作");break; case 0x03 : printf("モータ1&2動作");break; case 0x04 : printf("ソレノイド1動作");break; case 0x08 : printf("ソレノイド2動作");break; case 0x05 : printf("モータ1動作&ソレノイド1動作");break; case 0x0a : printf("モータ2動作&ソレノイド2動作");break; case 0x07 : printf("モータ1&2動作&ソレノイド1動作");break; case 0x0b : printf("モータ1&2動作&ソレノイド2動作");break; } } ******************************************************************************/ } delay(double time_delay){ Sleep(time_delay); }