我为8051写了一个中断例程,使用Keil C51,如下:
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....
我还为外部中断 0 编写了一个例程,它是一个 4 位计数器(它工作正常),但我想这不应该影响上述内容。