Dingo (16.03.2018 13:32, просмотров: 107) ответил evgeniy1294 на А вот почему заходит при 0, я хз. Попробую сегодня повторить эксперимент, статистику соберу немного по другому. Только с обеда приду.
У меня такой исходник занимался статистикой Что непонятно, так это прерывание вызывалось 2 раза, а это либо операция(-ции?) со стеком, либо как-то завернуть по второму кругу тело прерывания через механизм отложенных.
/*
[.] [0 | 1]
[1] 57 127
[2] 58 1280
[3] 59 2375
[4] 65 1
[5] 48 615323
*/
#define MAXNUMS 100
static int aval[MAXNUMS+1][2];
// Prepare (Clear) array//
void st_init( void )
{
aval [0][0] = 0;
}
// Count values //
void st_count( int val)
{
int iter;
for ( iter=aval[0][0]; iter > 0; iter-- ) {
if (aval[iter][0] == val) {
aval[iter][1]++;
break;
}
}
if ( iter != 0 ) return; // All done
if ( aval[0][0] < MAXNUMS ) {
aval[0][0]++;
int nums = aval[0][0];
aval[nums][0] = val;
aval[nums][1] = 1;
}
return;
}
// Print values //
void st_echo(void)
{
printf("--=stat=--\r\n");
for( int i = aval[0][0]; i>0; i--) {
printf(" %d; %d\r\n", aval[i][0], aval[i][1] );
}
printf("\r\n");
}