Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Аппаратные возможности МК серии STC8H1Kxxx » Сколько памяти И типов памяти у STC8H1K08 ? )) RAM, IRAM, XRAM


Сколько памяти И типов памяти у STC8H1K08 ? )) RAM, IRAM, XRAM

Сообщений 31 страница 36 из 36

31

Я снова к вам с дополнительной памятью. :flag:

Добавляем в DAT это:
Код:
[BYTE]
B0R0 = 00
B0R1 = 01
B0R2 = 02
B0R3 = 03
B0R4 = 04
B0R5 = 05
B0R6 = 06
B0R7 = 07
B1R0 = 08
B1R1 = 09
B1R2 = 0A
B1R3 = 0B
B1R4 = 0C
B1R5 = 0D
B1R6 = 0E
B1R7 = 0F
B2R0 = 10
B2R1 = 11
B2R2 = 12
B2R3 = 13
B2R4 = 14
B2R5 = 15
B2R6 = 16
B2R7 = 17
B3R0 = 18
B3R1 = 19
B3R2 = 1A
B3R3 = 1B
B3R4 = 1C
B3R5 = 1D
B3R6 = 1E
B3R7 = 1F
И вуяля:
Код:
$regfile = "8H1K08.DAT"
$crystal = 12000000
$ramsize = 1024
$map
$large

Var1 Alias B3r7
Var1 = &HEE

Do

Loop
В симуляторе:

Декомпил подтверждает.
Обычно первые два банка компилятор сам использует (но ещё чаще только нулевой банк), а другие два у меня часто не используются.

Отредактировано Кот Обормот (2026-09-15 14:51:03)

+1

32

поясните, не понял

0

33

Прямая работа с регистрами.
Использование старших банков регистров если они не используются компилятором.
Передача параметров напрямую в ассемблерные процедуры без промежуточных переменных в памяти.

0

34

BASCOM-51 не знает про  иные банки и сам туда не лезет?
Это переменные в основной же памяти?
А стек и стеку это не мешает?

0

35

Про иные банки он знает и активно использует. У меня есть программа, где в прерывании работа с таблицами данных в xram и метаданными в таблицах в xram. Так вот при входе в прерывание он сохраняет в стек несколько банков и аккуратно всё делает.
Вот из простых случаев:
Tuya_dp_len_w = Makeint(tuya_dp_len_lb , Tuya_dp_len_hb) - использует то ли банк 1, то ли 2 (считаем от 0) поскольку потом эти данные используются в следующих операциях.
Заменил это на:
!MOV {Tuya_dp_len_w},{tuya_dp_len_lb}
и он отстал от других банков. Каждый конкретный случай нужно разбирать с декомпилятором.
Т.е. в простых случаях урвать 3 банка из 4 можно, а это 3 x 8 = 24 байта (страшные цифры!)
Стек находится дальше. Мы как раз перемещая переменные в неиспользуемые банки отодвигаем место для стека.

Отредактировано Кот Обормот (2026-09-23 21:44:47)

0

36

И рисково, и геморно.
Для хобби - да, для работы - ну, на усмотрения разраба...

0


Вы здесь » Программирование ATMEL в BASCOM. » Аппаратные возможности МК серии STC8H1Kxxx » Сколько памяти И типов памяти у STC8H1K08 ? )) RAM, IRAM, XRAM