Я написал подпрограмму прерывания для 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-битным счетчиком (он работает правильно), но я думаю, что это не должно влиять на вышесказанное.