Сначала позвольте мне показать, что работает, тогда я покажу, что не работает. Этот код дает правильный результат.Получение значений массива от пользователя на PIC18?
unsigned long timeOn;
long d[10];
d[0] = 8;
d[1] = 6;
d[2] = 0;
d[3] = 0;
d[4] = 0;
timeOn = 10000*d[0] + 1000*d[1] + 100*d[2] + 10*d[3] + d[4] ;
printf("%lu",timeOn);
Выход: 86000
Если я хочу, чтобы пользователь ввел следующие значения я получить другой результат, и это код у меня есть.
unsigned long timeOn;
long d[10];
int i;
for(i = 0; i < 5 ; i++)
{
while (!ConsoleIsGetReady());
d[i] = ConsoleGet();
}
timeOn = 10000*d[0] + 1000*d[1] + 100*d[2] + 10*d[3] + d[4] ;
printf("%lu",timeOn);
BYTE ConsoleGet(void)
{
char Temp;
while(IFS1bits.U2RXIF == 0);
Temp = U2RXREG;
IFS1bits.U2RXIF = 0;
return Temp;
}
Выход: 619328
Разве это не предполагают, чтобы работать таким же образом? Итак, как получается, когда пользователь вводит значения, я получаю другой результат? Спасибо!
Кстати, вы получите тот же результат, если вы используете 'd [i] = getchar();' вместо 'scanf ("% d ", &d[i]);'. В этом разница между целым значением и символом код цифры (в ASCII, код «0» - 48, код «1» - 49 и т. д.) – Inspired
Я очень ценю вашу помощь. Большое вам спасибо! – Ammar