Почему некоторые sfr в ​​8051 имеют битовую адресацию?

В соответствии с этим: http://www.8052.com/tutsfr.php, sfrs адреса которых делятся на 8, адресуются побитно. Вы можете делать с ними такие вещи, как SETB или CLR. Но разве они не перекрывают другие адреса памяти? Я имею в виду, например, P0 находится в 80 часах. Таким образом, P0.0 будет равен 80 часам, P0.1 будет равен 81 часу. Но 81h — это адрес SP. Они не пересекаются?


person Grissiom    schedule 19.06.2010    source источник


Ответы (2)


Вы путаете адрес бита с адресом байта. Они не перекрываются и не относятся к одному и тому же физическому местоположению. Инструкции, которые принимают битовые адреса (например, SETB), знают, как декодировать битовый адрес в байтовый адрес и номер бита. Адрес байта получается путем маскирования 3 младших битов в адресе бита. Номер бита получается путем маскирования старших 5 битов.

например. битовый адрес 87h --> байтовый адрес 80h, бит #7

person mocj    schedule 09.07.2010
comment
Большое спасибо за ваше объяснение. Это справедливо для SFR. А если SETB 01h? Это должен быть адрес байта #20 и бит #1. Могу ли я сказать, что память с побитовой адресацией и память с байтовой адресацией находятся в разных областях памяти, которые могут обрабатываться аппаратным обеспечением (или введениями) автоматически? - person Grissiom; 10.07.2010
comment
Да, как вы заметили, процедура такая же для не-SFR (адреса ‹ 80h), за исключением того, что к байтовому адресу добавляется дополнительное смещение 20h. Инструкции будут обрабатывать внутреннюю адресацию, но будьте осторожны, думая о них как о «разных» пространствах памяти, они перекрываются. SETB 01h установит бит #1 в ячейке памяти 20h. Это может быть перезаписано инструкцией MOV с байтовой адресацией, нацеленной на адрес 20h. МОВ 20ч,00ч. Это очистит битовые адреса от 00h до 07h. Программист, берегись ;) - person mocj; 12.07.2010

P0.0 и P0.1 относятся только к отдельным битам 8-битного регистра P0 (насколько я понимаю).

person leppie    schedule 19.06.2010
comment
Да, но если они адресуемы по битам, в конце концов у них будет адрес. - person Grissiom; 19.06.2010