Я пытаюсь написать код на C (используя Keil µVision 5, устройство: AT89C51AC3), который позволяет мне вводить 2 целых числа, добавлять их, а затем распечатывать. Проблема в том, что я ограничен размером байтового кода макс. 2048.
Моему фактическому коду для запуска требуется 2099 байт.
Любая идея, как я мог бы сделать то же самое, используя меньше памяти?
#include <stdio.h>
#include <REG52.H>
int main()
{
int a, b;
/*------------------------------------------------
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
printf("Enter 2 numbers\n");
scanf("%d%d",&a,&b);
printf("%d\n",a+b);
return 0;
}
scanf
? Можете ли вы выводить напрямую на устройство вывода таким же образом? - person Some programmer dude   schedule 23.01.2017scanf
иprintf
? - person Jabberwocky   schedule 23.01.2017printf
иscanf
очень гибкие и универсальные, поэтому требуют больших ресурсов. Попробуйте заменить их написанными от руки голыми функциями целочисленного преобразования и печати. - person doynax   schedule 23.01.2017scanf
собственным кодом для простого разбора двух чисел. - person Paul Ogilvie   schedule 23.01.2017getchar
/putchar
по умолчанию направляются туда по крайней мере. - person doynax   schedule 23.01.2017