ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
21 ноября
1349872 Топик полностью
Costic (11.09.2023 17:11, просмотров: 489) ответил Yurasvs на Хотелось бы ознакомиться со списком засад.
Памяти мало, даже очень мало и она сегментирована. Основная память (idata) и её адреса (256 байт, 0x00-0xFF) очень плотно всем забиты. Для стека места мало. Поэтому (вложенные) вызовы функций и передача аргументов делается компилятором с выкрутасами. В этом же куске памяти находятся 4 банка для прерываний, но обычно только 1 банк используется. Доступ быстрый, если у вас байты, а если int16_t или int32_t, то становится печально и приходится байты считать. Или размещать это всё 

в расширенной памяти - xdata. Указатель на память (char *), если не объявлен тип памяти - будет 24 бита, а если объявить (idata, pdata, xdata, code), то будет 8 или 16 бит. GCC такие фокусы не умеет. Короче, приходится очень тщательно планировать работу с данными/буферами/переменными. Я люблю 8051.