Перейти к содержанию

Адресное пространство рег. спец. функ.


Klima

Рекомендуемые сообщения

добрый день всем знатокам MCS-51, и всем хто посещает этот форум.

При изучении MCS-51 возник вопрос:

Адресное пространство регистра SCON (который адресуетса побитно) пересекаетса с адресом регистров таймера

как это не понимаю. Ведь каждый регистр должен иметь свой адрес, иначе путаница?

:rolleyes: обясните, буду благодарен. :rolleyes:

Изменено пользователем Klima
Ссылка на комментарий
Поделиться на другие сайты

добрый день всем знатокам MCS-51, и всем хто посещает етот форум.

При изучении MCS-51 возник вопрос:

Адресное пространство регистра SCON (который адресуетса побитно) пересекаетса с адресом регистров таймера

как это не понимаю. Ведь каждый регистр должен иметь свой адрес, иначе путаница?

:rolleyes: обясните, буду благодарен. :rolleyes:

Чёто ты не разобрался.

Регистры специальных фукций прямо адресуются с 80h по FFh.

Побитово адресуемая карта - это ячейки 20h..2Fh (адреса битов = 00h..7Fh) - всего 16 ячеек по 8 бит = 128 адресуемых бит.

Например можно написать:

_FLAG	 bit  42h

Или то же самое:

BIT_REG   equ  28h
_FLAG	   bit   BIT_FLAG.2

Изменено пользователем Speccy
Ссылка на комментарий
Поделиться на другие сайты

Чёто ты не разобрался.

Регистры специальных фукций прямо адресуются с 80h по FFh.

Побитово адресуемая карта - это ячейки 20h..2Fh (адреса битов = 00h..7Fh) - всего 16 ячеек по 8 бит = 128 адресуемых бит.

Например можно написать:

_FLAG	 bit  42h

Или то же самое:

BIT_REG   equ  28h
_FLAG	   bit   BIT_FLAG.2

P0, P1, P2, P3, ACC, B, PSW, эти регистры можна адресовать побитно в этом я разобрался.

а вот TCON, SCON, IP, IE не знаю можно ли потому что адрес:

TCON	.EQU	88H	;

IT0	.EQU	088H   ;
IE0	.EQU	089H   ;
IT1	.EQU	08AH   ;
IE1	.EQU	08BH   ;
TR0	.EQU	08CH   ;
TF0	.EQU	08DH   ;
TR1	.EQU	08EH   ;
TF1	.EQU	08FH   ;

там же:

TMOD	.EQU	089H
TL0	.EQU	08AH
TL1	.EQU	08BH
TH0	.EQU	08CH
TH1	.EQU	08DH

вот здесь и не могу я разобратса потому что (IE0 .EQU 089H) и (TMOD .EQU 089H) так же остальные

или ячтото не правильно написал?

можно чтобы долго не обяснять прислать файл со всеми адресами рсф

________________________________

то что начиная с адреса 20H и заканчивая 2FH можна регистры адресовать побитно. Я понял что это пользовательская область памяти хочеш туда константы заноси, хош данные. Во время виполнения какой нибудь програмы апаратно они не изменяютса?

А адресовать тогда как припустим 3 бит байта который находится по адресу 21H?

пожалуста наведи этот пример

Ссылка на комментарий
Поделиться на другие сайты

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

а вот TCON, SCON, IP, IE не знаю можно ли потому что адрес:

TCON	.EQU	88H;

IT0	.EQU	088H ;
IE0	.EQU	089H ;
IT1	.EQU	08AH ;
IE1	.EQU	08BH ;
TR0	.EQU	08CH ;
TF0	.EQU	08DH ;
TR1	.EQU	08EH ;
TF1	.EQU	08FH ;

там же:

TMOD	.EQU	089H
TL0	.EQU	08AH
TL1	.EQU	08BH
TH0	.EQU	08CH
TH1	.EQU	08DH

вот здесь и не могу я разобратса потому что (IE0 .EQU 089H) и (TMOD .EQU 089H) так же остальные

или ячтото не правильно написал?

можно чтобы долго не обяснять прислать файл со всеми адресами рсф

Вот в асме которым я пользуюсь используется MOD файл для 51 ядра:

P0	   DATA  080H;Порт 0
SP	   DATA  081H;Указатель стека
DPL	  DATA  082H;Указатель данных - мл. байт
DPH	  DATA  083H;Указатель данных - ст. байт
PCON	 DATA  087H;Управление питанием
TCON	 DATA  088H;Управление таймером
TMOD	 DATA  089H;Режим таймера
TL0	  DATA  08AH;Таймер 0 - мл. байт
TL1	  DATA  08BH;Таймер 1 - мл. байт
TH0	  DATA  08CH;Таймер 0 - ст. байт
TH1	  DATA  08DH;Таймер 1 - ст. байт
P1	   DATA  090H;Порт 1
SCON	 DATA  098H;Управление последовательным портом УАРТ
SBUF	 DATA  099H;Буфер последовательного порта УАРТ
P2	   DATA  0A0H;Порт 2
IE	   DATA  0A8H;Разрешение прерываний
P3	   DATA  0B0H;Порт 3
IP	   DATA  0B8H;Приоритеты прерываний
PSW	  DATA  0D0H;Слово состояния программы
ACC	  DATA  0E0H;Аккумулятор
B		DATA  0F0H;Регистр умножителя
IT0	  BIT   088H;TCON.0 - Флаг типа (срез/уровень) внеш. прерываня 0
IE0	  BIT   089H;TCON.1 - Флаг фронта внеш. прерывания 0
IT1	  BIT   08AH;TCON.2 - Флаг типа (срез/уровень) внеш. прерываня 1
IE1	  BIT   08BH;TCON.3 - Флаг фронта внеш. прерывания 1
TR0	  BIT   08CH;TCON.4 - Флаг вкл./выкл. таймера 0
TF0	  BIT   08DH;TCON.5 - Флаг переполнения таймера 0
TR1	  BIT   08EH;TCON.6 - Флаг вкл./выкл. таймера 1
TF1	  BIT   08FH;TCON.7 - Флаг переполнения таймера 1
RI	   BIT   098H;SCON.0 - Флаг прерывания по приему УАРТ
TI	   BIT   099H;SCON.1 - Флаг прерывания по передаче УАРТ
RB8	  BIT   09AH;SCON.2 - Принимающийся бит 8 УАРТ
TB8	  BIT   09BH;SCON.3 - Перадающийся бит 8 УАРТ
REN	  BIT   09CH;SCON.4 - Флаг разрешения приема УАРТ
SM2	  BIT   09DH;SCON.5 - Управляющий бит 2 режима УАРТ
SM1	  BIT   09EH;SCON.6 - Управляющий бит 1 режима УАРТ
SM0	  BIT   09FH;SCON.7 - Управляющий бит 0 режима УАРТ
EX0	  BIT   0A8H;IE.0 - Флаг разрешения внеш. прерывания 0
ET0	  BIT   0A9H;IE.1 - Флаг разрешения прерывания таймера 0
EX1	  BIT   0AAH;IE.2 - Флаг разрешения внеш. прерывания 1
ET1	  BIT   0ABH;IE.3 - Флаг разрешения прерывания таймера 1
ES	   BIT   0ACH;IE.4 - Флаг разрешения прерывания по УАРТ
EA	   BIT   0AFH;IE.7 - Флаг общего разрешения прерываний
RXD	  BIT   0B0H;P3.0 - Вход приемника УАРТ
TXD	  BIT   0B1H;P3.1 - Выход передатчика УАРТ
INT0	 BIT   0B2H;P3.2 - Вход внеш. прерывания 0
INT1	 BIT   0B3H;P3.3 - Вход внеш. прерывания 1
T0	   BIT   0B4H;P3.4 - Вход таймера/счетчика 0
T1	   BIT   0B5H;P3.5 - Вход таймера/счетчика 1
WR	   BIT   0B6H;P3.6 - Выход управления записью во внеш. память
RD	   BIT   0B7H;P3.7 - Вход управления чтением из внеш. памяти
PX0	  BIT   0B8H;IP.0 - Приоритет внеш. прерывания 0
PT0	  BIT   0B9H;IP.1 - Приоритет таймера 0
PX1	  BIT   0BAH;IP.2 - Приоритет внеш. прерывания 1
PT1	  BIT   0BBH;IP.3 - Приоритет таймера 1
PS	   BIT   0BCH;IP.4 - Приоритет УАРТ
P		BIT   0D0H;PSW.0 - Флаг паритета аккумулятора
OV	   BIT   0D2H;PSW.2 - Флаг переполнения
RS0	  BIT   0D3H;PSW.3 - Флаг 0 выбора банка регистров
RS1	  BIT   0D4H;PSW.4 - Флаг 1 выбора банка регистров
F0	   BIT   0D5H;PSW.5 - Флаг 0
AC	   BIT   0D6H;PSW.6 - Флаг вспомогательного переноса
CY	   BIT   0D7H;PSW.7 - Флаг переноса

________________________________

то что начиная с адреса 20H и заканчивая 2FH можна регистры адресовать побитно. Я понял что это пользовательская область памяти хочеш туда константы заноси, хош данные. Во время виполнения какой нибудь програмы апаратно они не изменяютса?

А адресовать тогда как припустим 3 бит байта который находится по адресу 21H?

пожалуста наведи этот пример

Аппаратно не изменяются.

Например установить 3-й бит в зависимости от компилятора можно наверное как

setb 21h.3

или

setb 11h

А в принципе зачем так заморачиваться, если компилятор поддерживает MOD файл. Просто в начале проги пишешь директиву $MOD51 а дальше по тексту пользуешся мнемониками битов и регистров, указанных в файле этом. По крайней мере для РСН так подходит.

Изменено пользователем Speccy
Ссылка на комментарий
Поделиться на другие сайты

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

а каким асмом ты пользуешся? Если есть дай ссылку и на документацыю рус.

Кросс-ассемблер от metalink версии 1.2h, а над ним Win-надстройка для удобства ввода и форматирования текста иходного. К сожалению распространять её права не имею.

Пошукай в инете, такого добра должно много быть.

Ссылка на комментарий
Поделиться на другие сайты

Большущее спасиба Speccy внёс ясности в мои розмышления!

а если предложу проанализировать мою програмку согласишся?

йомкость в 211 байт кода

програмка для кодового замка но она не до конца дописана это токо чясть её, одна из подпрограм.

Если согласишся посмотреть вот она в прикреплённых файлах. Почему прошу помощи потому что при проверке на симуляторе FD51.EXE (Advanced Controller Simulator) начинаетса путаница со стеком (может симулятрор раненый, а может написанная программа раненая)

8051.rar

Ссылка на комментарий
Поделиться на другие сайты

Если согласишся посмотреть вот она в прикреплённых файлах. Почему прошу помощи потому что при проверке на симуляторе FD51.EXE

Да, со стеком надо аккуратнее.

Во первых ты в основной программе (она зациклена) все время указываешь дно стека.

Во вторых. У тебя в подпрограмме SCAN1, куда ты попадаешь по LCALL, есть команда переход если 0 (JZ START) обратно к началу программы.

Но при этом в стеке сохранился адрес возврата следующей за LCALL инструкции. Ты тут же возвращаешь стек на дно, и тут у тебя всякая абракадабра может быть. (да и прерывания еще шпарят параллельно, короче ужас).

Короче так не пишут как утебя. Делай корректный выход по RET, а стек инициализируй только один раз при ресете.

Если все правильно написано, то стек будет ок!

Изменено пользователем Speccy
Ссылка на комментарий
Поделиться на другие сайты

Да, со стеком надо аккуратнее.

Во первых ты в основной программе (она зациклена) все время указываешь дно стека.

Во вторых. У тебя в подпрограмме SCAN1, куда ты попадаешь по LCALL, есть команда переход если 0 (JZ START) обратно к началу программы.

Но при этом в стеке сохранился адрес возврата следующей за LCALL инструкции. Ты тут же возвращаешь стек на дно, и тут у тебя всякая абракадабра может быть. (да и прерывания еще шпарят параллельно, короче ужас).

Короче так не пишут как утебя. Делай корректный выход по RET, а стек инициализируй только один раз при ресете.

Если все правильно написано, то стек будет ок!

Спасибо! Мотаю на ус и предпринимаю меры

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...