[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Разным видам адресации соответствуют разные процедуры:
1. movc a,@a+dptr (чтение байта из ROM):
- 1-й цикл - младший байт адреса (a+dptr0..7) на Р0, защелкивать по ALE
- 2-й цикл - старший байт адреса (a+dptr8..15) на Р2 и одновременно данные на Р0, считывать по -PSEN
2. movc a,@a+PC (чтение байта из ROM):
- 1-й цикл - младший байт адреса (1+a+PC0..7) на Р0, защелкивать по ALE. К PC добавляется единица ДО формирования адреса!
- 2-й цикл - старший байт адреса (a+PC8..15) на Р2 и одновременно данные на Р0, считывать по -PSEN
3. movx a,@dptr/movx @dptr,a (чтение/запись байта из/в XRAM с 16-битовой адресацией):
- 1-й цикл - младший байт адреса (DPL) на Р0, защелкивать по ALE
- 2-й цикл - старший байт адреса (DPH) на Р2 и одновременно данные на Р0, считывать/записывать по -RD/-WR
4. movx a,@r0(или r1)/movx @r0(или r1),a (чтение/запись байта из/в XRAM с 8-битовой адресацией):
- 1-й цикл - младший байт адреса (r0 или r1) на Р0, защелкивать по ALE
- 2-й цикл - данные на Р0, считывать/записывать по -RD/-WR. Старший байт адреса формируется содержимым буферного регистра Р2 по результату последней ЯВНОЙ записи в него командами blabla p2,something (после RESET в буферный регистр Р2 записано 0xFF). Команды обращения к ROM/XRAM с 16-битовой адресацией не изменяют содержимое буферного регистра Р2.
Вероятно, при генерации кода обращения к XRAM компиляторы выбирают 8- или 16-битовый режим адресации в зависимости от заданной модели памяти - Small, Large и т.д.
E-mail: info@telesys.ru