Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[13.59.218.147] |
|
Страницы: (2) 1 [2] все ( Перейти к последнему сообщению ) |
Сообщ.
#16
,
|
|
|
p.s. А еще бывают вариации 8051 с двумя DPTR, тогда вместо гонять туда-сюжа содержимое DPTR достаточно бит DPSEL в управляющем регистре инвертировать.
|
Сообщ.
#17
,
|
|
|
То же самое надо сделать на си-51, но когда я пишу
int mas[1500]; получаю ошибку auto segment too large |
Сообщ.
#18
,
|
|
|
Где пишешь? Локально в функции?
|
Сообщ.
#19
,
|
|
|
да
|
Сообщ.
#20
,
|
|
|
В настройках компилятора надо указать использование внешнего ОЗУ.
|
Сообщ.
#21
,
|
|
|
Объявил массив так
array: ds 1500 array_address xdata array + 0 насколько это правильно? |
Сообщ.
#22
,
|
|
|
void main (void) { /*------------------------------------------------ Setup the serial port for 1200 baud at 16MHz. ------------------------------------------------*/ #ifndef MONITOR51 SCON = 0x50; /* SCON: mode 1, 8-bit UART, enable rcvr */ TMOD |= 0x20; /* TMOD: timer 1, mode 2, 8-bit reload */ TH1 = 221; /* TH1: reload value for 1200 baud @ 16MHz */ TR1 = 1; /* TR1: timer 1 run */ TI = 1; /* TI: set TI to send first char of UART */ #endif while (1) { const int n = 1500; int array[1500]; int i; int sum; int min; int avg; for (i = 0; i < n; i++) array[i] = rnd(); sum = 0; min = array[0]; for (i = 0; i < n; i++) { sum += array[i]; if (array[i] < min) min = array[i]; } avg = sum / n; P0 = avg / 2 + min; printf("%d",P0); } } \получаю предупреждение 'rnd'' missing function-prototype |
Сообщ.
#23
,
|
|
|
Ты C сейчас изучаешь что ли?
|
Сообщ.
#24
,
|
|
|
Попросили сделать.
|
Сообщ.
#25
,
|
|
|
hawk1, на си надо явно указать, что данные живут во внешней ОЗУ.
В sdcc это делается так: char __xdata mas[100500]; В Keil ЕМНИП оно так и называется xdata. |
Сообщ.
#26
,
|
|
|
Программу написал, как теперь проверить ее правильность?
|
Сообщ.
#27
,
|
|
|
Откомпилировать? Запустить под отладчиком? Залить в реальное устройство и посмотреть?
|
Сообщ.
#28
,
|
|
|
В лбщем задание такое. Написать программу на асм 51,выполняющую обработку массива, хранящегося во внешней памяти. Алгоритм avg/2+min. Результат выводится через последователдьный порт. На си сджелал, на асм никак
|