2015年 06月 02日 ( 2 )
ポケコン PC-G850Vで電子回路工作(6/2)
【Cプログラム】
10 main() {
20 unsigned char a[35]={8,0,2,6,2,6,0,4,2,6,0,5,0,5,0,5,0,
5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,8,12,99};
25 int c,d,i;
26 unsigned char r;
27 int x=0;
28 clrscr();
30 outport(0x60,1);
40 outport(0x61,1);
50 INIT:c=10;d=0;i=-1;
60 READ:i++;
70 if(a[i]==99) goto INIT;
90 outport(0x62,(a[i] & 0xFE);
100 if((a[i] & 1)==0) goto READ;
120 r= inport(0x62);
140 if(c==10) goto NEXT;
150 if(r==1) d+=(1<<c);
160 if(c==0) pset(x++,d/22,1);x=(x<144)*x;
170 NEXT:c--;
180 goto READ;
190 }

可変抵抗にしてみたんだけどね。
ポケコン PC-G850Vで電子回路工作(6/2)
BASIC配列化プログラムに似せて書いてある。
【Cプログラム】
10 main() {
20 unsigned char a[35]={8,0,2,6,2,6,0,4,2,6,0,5,0,5,0,5,0,
5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,8,12,99};
25 int c,d,i;
26 unsigned char r;
30 outport(0x60,1);
40 outport(0x61,1);
50 INIT:c=10;d=0;i=-1;
60 READ:i++;
70 if(a[i]==99) goto INIT;
90 outport(0x62,(a[i] & 0xFE);
100 if((a[i] & 1)==0) goto READ;
120 r= inport(0x62);
140 if(c==10) goto NEXT;
150 if(r==1) d+=(1<<c);
160 if(c==0) printf("%d\n",d);
170 NEXT:c--;
180 goto READ;
190 }
実行した結果は、BASICの10倍くらい。
あと配線図も以下に示す。

MCP3002は部品図になかったので足の数が同じICで代替。(左がICの凹みがある方)
(6/8訂正:抵抗の繋ぐピンを5→4ピンに修正。赤丸の所。プルダウン抵抗になっていなかった)