次のように、KeilC51を使用して8051の割り込みルーチンを作成しました。
void intrupt1(void) interrupt 2 // ext interrupt 1 vector
{
char i,j,prime;
P2 = 0;
for(i=2;i<128;i++)
{
prime = 1;
for(j=2;j<i;j++)
{
if(i%j==0)
prime = 0;
}
if(prime == 1)
{
P2 = i;
delay2();
}
}
P2 = 0;
}
シミュレートしようとすると、128までは正しい素数が表示され、その後8ビットカウンターになり、その後素数が表示されます。つまり、127(最後に予想される素数)の後、出力は128,129,130でした。 ... 255、127,128,129までの素数...。
また、4ビットカウンターである外部割り込み0のルーチンも作成しました(正しく機能します)が、上記には影響しないと思います。