Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > Asm51. Рабочий банк регистров.


Автор: bagira 29.1.2004, 18:58
Уважаемые программисты!
Вопрос по Ассемблеру для 51-го микропроцессора.

В разрабатываемой программе (для прошивки Atmel 89C51) обнаружилась катастрофическая нехватка регистров R0...R7 для моих целей! Вот я и хочу узнать, возможно ли в одной программе использовать регистры из нескольких банков? :

1). Можно ли одновременно? Тогда как отличить регистры одного банка от другого?

2). Или последовательно? Можно ли, поработав с одним банком, перейти на другой, задав номер его в PSW.3, PSW.4? Если так, то не пропадут ли при этом предыдущие значения (мне ведь потом нужно будет к ним вернуться!) ?


Автор: PILOT 30.1.2004, 01:11
Банки это условность,
у тебя память внутренняя содержит их, к ним можно обращаться как к ячейкам памяти (от 00h до 1Fh) это все ваши регистры...
переключайте на здоровье, с ними ничего не случится. Более того, можно, например, в прерывании пользоваться одним банком а в программе другим и т.д. При этом содержимое не пропадет при переключении...

СУВ.
ЗЫ. у тебя есть 128 байт внутренней памяти, и тебе их не хватает? ;)

Автор: PILOT 30.1.2004, 12:20
Да, и еще... нехватка регистров на начальном этапе - первый признак не корректного анализа задачи...
Иными словами: что творишь? Может там и не нужно столько регистров...

СУВ.

Автор: oleg1973 30.1.2004, 21:41
дайте инфу про этот проц
уж больно он мне чтото напоминает smile.gif

Автор: shedon 30.1.2004, 22:31
Цитата
дайте инфу про этот проц
уж больно он мне чтото напоминает 

Стандартный 51ый контроллер уже давольно устаревший.
Вот на него Data Sheet
http://www.keil.com/dd/docs/datashts/atmel/at89c51_ds.pdf

Автор: PILOT 31.1.2004, 23:10
хм, дело в том что изначально он был 80С31 (т.е. его Интел придумала в 80-ых годах тогда он был свнешней памятью программ и жутко прожорливый) на сайте Интел можно покопаться.
А вообще есть русское описание (грамотное, могу выслать тому кто заинтересуется). Но
Напоминать может любой другой контроллер (например 8-ми разрядную Моторолу или АВР или ПИК), потому что все они 8-ми разрядные и очень схожи. Если научился работать с одним, значит другой тоже не сложно осилить.

СУВ.

Автор: shedon 31.1.2004, 23:15
Цитата
дело в том что изначально он был 80С31 (т.е. его Интел придумала в 80-ых годах тогда он был свнешней памятью программ и жутко прожорливый) на сайте Интел можно покопаться.

Есть и наш нормальный аналог 1830ВЕ31, тоже без внутреннего ПЗУ.

Автор: bagira 1.2.2004, 00:25
<у тебя есть 128 байт внутренней памяти, и тебе их не хватает? ;) >

Да, памяти хватает, но просто с регистрами более удобно работать. Но теперь все в порядке, я уже перестроила программу так, чтобы не зависеть от количества регистров.
Спасибо всем, кто отвечал!

Автор: PILOT 18.2.2004, 09:56
Цитата(shedon @ 31.1.2004, 20:15)
Есть и наш нормальный аналог 1830ВЕ31, тоже без внутреннего ПЗУ.

Только он не обжат smile.gif и приходится ему ноги править руками smile.gif
А вообще с пятой приемкой (например) наш 51-ый контроллер стоит бешенные деньги. sad.gif
Ну а самоу неприятное в нем нет WDT. Ни а какой надежности речь не идет, рпиходится одновибраторы ставить... а что делать... МОП перечень...

СУВ.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)