Так вот, про память. При включенном только одном буфере в настройках драйверов по измерителю кодеварриора был показан размер памяти данных в 3 кБ. Но я использовал только UDP, а остальное отключил за ненадобностью. Далее, в справке кодеварриора есть такая информация:
"
The MC68HC12 is an 8/16-bit processor not designed with high-level languages in mind. You must observe certain points in order to allow the Compiler to generate reasonably efficient code. The following list provides an idea of what is "good" programming from the processor's point of view.
Allocate frequently used static variables in the zero page using __SHORT_SEG segments.
Use variables of type char if the value range is large enough for your purpose (0 - 255 for unsigned char; -128 - 127 for signed char).
Consider however that expressions containing both char and int variables usually are worse than equivalent expressions containing only int variables because the char variables have to be extended first. The same also holds for certain expressions on characters like
char a, b, c, d;
a = (b + c) / d;
or
if (a+1 <

...
because they must be evaluated to 16 bits to comply to the semantics of ANSI-C.
Using unsigned types instead of signed types is better in the following cases:
Implicit or explicit extensions from char to int or from int to long.
Use types long, float or double only when absolutely necessary. They produce a lot of code!
Avoid stack frames larger than 256 bytes. The stack frame includes the parameters, local variables and usually some additional bytes for temporary values.
Avoid structs larger than 256 bytes if the fields are accessed via pointers.
"
По поводу "Avoid stack frames larger than 256 bytes" имел несчатье лично убедиться, наличие большого количества локальных переменных в функции приводило к различным чудесам, вплоть до мертвого зависания программы с потерей связи в jtag - отладчике.