Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
-
petrenko
- Друг Кота
- Сообщения: 5322
- Зарегистрирован: Вт фев 21, 2012 13:51:55
- Откуда: Начинающий
- Контактная информация:
Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
А Вы на 1816ве39 уже доделали конструкцию ?
Вам сдвиг какой треба - циклический напрямую --bit№f<>bit№0-- bkb или циклический через флаг C ( --bit№f<>С<>bit№0-- ) ?
Вам сдвиг какой треба - циклический напрямую --bit№f<>bit№0-- bkb или циклический через флаг C ( --bit№f<>С<>bit№0-- ) ?
< виртуальная "кнопочка" >--( WWW ) <- Убедительная просьба интересующимся старыми компьютерами типа РК86 - не пишите в теме в барахолке, пишите Ваши вопросы в ( лс ) пожалуйста
- Реклама
Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
ВЕ39 забросил. Мало памяти адресует, а как выйти за пределы 2К - я так и не разобрался как переключать банки в памяти программ, не прервав выполнение программы. Память расходуется стремительно - то что у дрпугих МК делается одной-двумя-тремя инструкциями, тут из-за скудных возможностей требует целых подпрограмм.
И еще одна сложность. Нельзя просто так взять, и подправить адрес возврата из прерывания. Последнее что сделал - написал программный SPI, подключил MAX7219, через него помигал светодиодами.
Нужен циклический сдвиг через перенос.
И еще одна сложность. Нельзя просто так взять, и подправить адрес возврата из прерывания. Последнее что сделал - написал программный SPI, подключил MAX7219, через него помигал светодиодами.
Нужен циклический сдвиг через перенос.
Последний раз редактировалось Голимый Пт июн 09, 2017 14:10:51, всего редактировалось 1 раз.
Трудное детство, стальные игрушки.
Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Дык... там же или команда сдвига через CY RLC A/RRC A или побитовая перетасовка через промежуточный флаг пользователя/битов акумулятор доступна... чего еще выдумывать-то?Голимый писал(а):Добрый день. Не подскажите, как для MCS-51 можно реализовать 16-битный последовательный сдвиг с использованием только битовых операций - CPL, CLR, SETB, JB, JNB. ANL, ORL использованием бит-адресуемых ячеек ОЗУ.
16-битный двоичный счетчик смог реализовать таким образом, на сдвиговый регистр ума не хватает.
Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Ну как бы, и счетчик, и сдвиговый регистр можно реализовать на триггерах. CPL bit - вполне себе счетный триггер. SETB/CLR bit - синхронный RS-триггер. Работу счетчика себе представляю, и без труда написал, используя в качестве триггеров биты ячеек бит-адресуемой памяти. А вот со сдвиговым регистром - не совсем понятно
Трудное детство, стальные игрушки.
-
petrenko
- Друг Кота
- Сообщения: 5322
- Зарегистрирован: Вт фев 21, 2012 13:51:55
- Откуда: Начинающий
- Контактная информация:
Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
А Вы в той Вашей теме в самом первом сообщении http://radiokot.ru/forum/viewtopic.php? ... 121816ВЕ39 "нажмите" виртуальную кнопочку "!" и попросите модераторов
переименовать в ,например : "1816ВЕ39 с расширителем=580вр43 и R.T.C.=512ви1 Обсуждение."
Мы сразу прибежим туда и поможем в сложных вопросах ( возможно даже ещё больше памяти программ и памяти данных к тому музейному экспонату добавить и даже микро-операционную-системку замутить )
Так, теперь по MCS-51 : Допустим 16-и-битное значение лежит в регистрах R6 и R7
Алгоритм примерно таков :
копируем из R7 в A
сдвигаем A через перенос ( RRC или RLC ) , но это только чтоб в C появился крайний бит
ROT16;{точка входа}
копируем из R6 в A
сдвигаем A через перенос , при этом крайний бит бывший в R7 вдвинется в R6 , а крайний бит из R6 выдвинется в C
копируем из A в R6
копируем из R7 в A
сдвигаем A через перенос , при этом крайний бит бывший в R6 вдвинется в R7 , а крайний бит из R7 выдвинется в C
копируем из A в R7 ; Как нетрудно понять, в паре R6 & R7 значение циклически сдвинулось на один бит ..
Ну а если надо сдвигать более, чем на один бит, то повторим данные действия ,перейдя на ROT16 при помощи DJNZ R5(например) , ROT16

переименовать в ,например : "1816ВЕ39 с расширителем=580вр43 и R.T.C.=512ви1 Обсуждение."
Мы сразу прибежим туда и поможем в сложных вопросах ( возможно даже ещё больше памяти программ и памяти данных к тому музейному экспонату добавить и даже микро-операционную-системку замутить )
Так, теперь по MCS-51 : Допустим 16-и-битное значение лежит в регистрах R6 и R7
Алгоритм примерно таков :
копируем из R7 в A
сдвигаем A через перенос ( RRC или RLC ) , но это только чтоб в C появился крайний бит
ROT16;{точка входа}
копируем из R6 в A
сдвигаем A через перенос , при этом крайний бит бывший в R7 вдвинется в R6 , а крайний бит из R6 выдвинется в C
копируем из A в R6
копируем из R7 в A
сдвигаем A через перенос , при этом крайний бит бывший в R6 вдвинется в R7 , а крайний бит из R7 выдвинется в C
копируем из A в R7 ; Как нетрудно понять, в паре R6 & R7 значение циклически сдвинулось на один бит ..
Ну а если надо сдвигать более, чем на один бит, то повторим данные действия ,перейдя на ROT16 при помощи DJNZ R5(например) , ROT16
< виртуальная "кнопочка" >--( WWW ) <- Убедительная просьба интересующимся старыми компьютерами типа РК86 - не пишите в теме в барахолке, пишите Ваши вопросы в ( лс ) пожалуйста
- Реклама
Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
[uquote="petrenko",url="/forum/viewtopic.php?p=3123297#p3123297"]Алгоритм примерно таков :[/uquote]
Мне этот прием известен. Он был в какой-то книжке по 51 расписан, я им уже пользовался.
Мне интересно сделать это методами комбинаторной логики.
Первые 4 бита этого "счетчика":
Где cnt0 - бит-адресуемая ячейка памяти. Дальше идет еще 12 совершенно одинаковых итераций. У последней JB переход в начало на метку cnt_chain, а jmp retr ведет к выходу из подпрограммы.
Мне хочется таким-же примерно способом сделать сдвиговый регистр произвольной длинны.
Мне этот прием известен. Он был в какой-то книжке по 51 расписан, я им уже пользовался.
Мне интересно сделать это методами комбинаторной логики.
Первые 4 бита этого "счетчика":
Код: Выделить всё
cnt_chain: cpl cnt0.0
jb cnt0.0, change1
jmp retr
change1: cpl cnt0.1
jb cnt0.1, change2
jmp retr
change2: cpl cnt0.2
jb cnt0.2, change3
jmp retr
change3: cpl cnt0.3
jb cnt0.3, change4
jmp retr
change4: cpl cnt0.4
jb cnt0.4, change5
jmp retr
Мне хочется таким-же примерно способом сделать сдвиговый регистр произвольной длинны.
Трудное детство, стальные игрушки.
-
petrenko
- Друг Кота
- Сообщения: 5322
- Зарегистрирован: Вт фев 21, 2012 13:51:55
- Откуда: Начинающий
- Контактная информация:
Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Если желаете вычурно сделать сдвиг любого значения на любое число бит, то :
Можно сначала перенести значение любой длины ( но не длиннее 128 бит ) в прямоадресуемое битовое поле побайтово, ( начиная с 020h ) , а потом перенести обратно по одному биту ,просто начиная не с нулевого прямоадресуемого бита а +/-
MOV C , bit00
MOV ACC.0 , C
MOV C , bit01
MOV ACC.1 , C
MOV C , bit02
MOV ACC.2 , C
MOV C , bit03
MOV ACC.3 , C
MOV C , bit04
MOV ACC.4 , C
MOV C , bit05
MOV ACC.5 , C
MOV C , bit06
MOV ACC.6 ,C
MOV C , bit07
MOV ACC.7 , C ; это перенесли побитно начальный байт значения
MOV ad , A ; где ad указывает на начальный байт значения результата
В общем такое вот "развлечение" тож возможно. Но зачем ?
Можно сначала перенести значение любой длины ( но не длиннее 128 бит ) в прямоадресуемое битовое поле побайтово, ( начиная с 020h ) , а потом перенести обратно по одному биту ,просто начиная не с нулевого прямоадресуемого бита а +/-
MOV C , bit00
MOV ACC.0 , C
MOV C , bit01
MOV ACC.1 , C
MOV C , bit02
MOV ACC.2 , C
MOV C , bit03
MOV ACC.3 , C
MOV C , bit04
MOV ACC.4 , C
MOV C , bit05
MOV ACC.5 , C
MOV C , bit06
MOV ACC.6 ,C
MOV C , bit07
MOV ACC.7 , C ; это перенесли побитно начальный байт значения
MOV ad , A ; где ad указывает на начальный байт значения результата
В общем такое вот "развлечение" тож возможно. Но зачем ?
Последний раз редактировалось petrenko Пт июн 09, 2017 21:26:38, всего редактировалось 1 раз.
< виртуальная "кнопочка" >--( WWW ) <- Убедительная просьба интересующимся старыми компьютерами типа РК86 - не пишите в теме в барахолке, пишите Ваши вопросы в ( лс ) пожалуйста
Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
В общем, это малая часть одной задумки. Хочу реализовать алгоритм шифрования A3, для этого нужны сдвиговые регистры переменной и произвольной (не кратной 2) длинны.petrenko писал(а):В общем такое вот "развлечение" тож возможно. Но зачем ?
Пока что отрабатываю - как мне сделать эти регистры.
Трудное детство, стальные игрушки.
Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Ради интереса, решил попробовать C компилятор Read51, который когда-то скачал "на всякий случай". Написал программу мигалки, и получил на выходе нерабочий hex-файл (другой компилятор, SDCC - выдал нормальный). Диссамблерировал (ADIS51) результат - там бред. А вместе с hex-файлом, компилятор создал еще ассемблерный листинг, в котором есть такие строчки:
Я так понимаю, он компилировал не под AT89C51, а под что-то сильно другое (хотя, целевой МК - этот), пусть и из этой оперы.
Что это за регистры, какому МК они могут относиться?
Код: Выделить всё
_main: mov SPH, #0x40 ; ENTERMAIN(16384)
mov SPL, #0x00
mov BPH, SPH
mov BPL, SPL ; #line 125 while(1)Что это за регистры, какому МК они могут относиться?
Трудное детство, стальные игрушки.
Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Малоизвестная среди радиолюбителей MCS251 в вариантах от intel и Philips...
https://studopedia.ru/14_111761_semeystvo-MCS-.html
В живом виде не попадалась - посему и даташитов в библиотеку не собирал...
У кейла в описании ассемблера присутствует и под нее информация.

https://studopedia.ru/14_111761_semeystvo-MCS-.html
В живом виде не попадалась - посему и даташитов в библиотеку не собирал...
У кейла в описании ассемблера присутствует и под нее информация.
Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Настолько малоизвестная, что узнал только сейчас. Хотя, какую только дичь не видел прежде. (или читал о ней). Посмотрел свои оба программатора - ни один не умеет.BOB51 писал(а):Малоизвестная среди радиолюбителей MCS251 в вариантах от intel и Philips...
А жаль, интересная ведь штука.
Трудное детство, стальные игрушки.
Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Интерес к ним был "перекрыт" за счет появления атмелевских, силабсов, STC и прочих с модернизированным 8-разрядным ядром.
А 16-разрядные это вобщем удел сложных устройств, маловостребованных в "бытовых" приложениях.

А 16-разрядные это вобщем удел сложных устройств, маловостребованных в "бытовых" приложениях.
Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Сейчас не считается зазорным помигать светодиодом на 32-битным ARM-е, а 16-битные, напр. MSP430 вполне себе известны в "наших кругах", и таки применяются.BOB51 писал(а):А 16-разрядные это вобщем удел сложных устройств, маловостребованных в "бытовых" приложениях.
Похоже, это просто "неуловимый Джо" в исполнении Intel. Тогда их просто не "раскручивали", как обычный 51-й, а щас они нафиг никому не нужны, в связи с обилием иных альтернатив.
Трудное детство, стальные игрушки.
Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Кто знает...
На сегодня и ZILOG мало известен (а сайт исключительно "для зарегистрированных пользователей" в отношении техдокументации)...

На сегодня и ZILOG мало известен (а сайт исключительно "для зарегистрированных пользователей" в отношении техдокументации)...
-
Пока_без_кота
- Потрогал лапой паяльник
- Сообщения: 359
- Зарегистрирован: Чт авг 08, 2013 01:06:54
Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Доброго времени суток. Есть такой микроконтроллер АТ89С1051. Этакий "жлобский" вариант АТ89С2051, у которого вырезали UART, Timer1, сделали флеша 1 Кб, и ОЗУ 64 байта.
Внимание, вопрос: Может ли его Timer0 функционировать в режиме 3, то есть быть разделенным на ДВА 8-битных таймера ? В стандартном MCS-51 это возможно за счет того, что для прерывания одного из образованных таймеров, используеться флаг Timer1. Здесь же этого флага нет, но при этом нигде явно не указанно, что в данном МК невозможно функционирование Timer0 в таком режиме
Внимание, вопрос: Может ли его Timer0 функционировать в режиме 3, то есть быть разделенным на ДВА 8-битных таймера ? В стандартном MCS-51 это возможно за счет того, что для прерывания одного из образованных таймеров, используеться флаг Timer1. Здесь же этого флага нет, но при этом нигде явно не указанно, что в данном МК невозможно функционирование Timer0 в таком режиме
- musor
- Друг Кота
- Сообщения: 39197
- Зарегистрирован: Сб сен 13, 2014 16:27:32
- Откуда: СпиртоГонск созвездия Омега
Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
а это часом не выбраковка из кристалов 4051 и 2051? тогда должно уметь все тоже кроме размера памяти
ZМудрость(Опыт и выдержка) приходит с годами.
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
-
Пока_без_кота
- Потрогал лапой паяльник
- Сообщения: 359
- Зарегистрирован: Чт авг 08, 2013 01:06:54
Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
Может и выбраковка, только даташит у нее есть свой, с явными упрощениями по сравнению с 2051 - http://www.keil.com/dd/docs/datashts/atmel/doc0366.pdf
Ну и из того что я пока попробовал с помощью эмуляции в своей IDE, я понял, что я могу включить этот режим, но никак не могу запустить второй 8-битный таймер. Так что получаеться, это режим, который не имеет смысла включать, ну разве что нужен один именно 8-битный таймер без перезагрузки значения.
Ну и из того что я пока попробовал с помощью эмуляции в своей IDE, я понял, что я могу включить этот режим, но никак не могу запустить второй 8-битный таймер. Так что получаеться, это режим, который не имеет смысла включать, ну разве что нужен один именно 8-битный таймер без перезагрузки значения.
Последний раз редактировалось Пока_без_кота Пт окт 06, 2017 07:09:51, всего редактировалось 1 раз.
- musor
- Друг Кота
- Сообщения: 39197
- Зарегистрирован: Сб сен 13, 2014 16:27:32
- Откуда: СпиртоГонск созвездия Омега
Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
интересно если у вас в железе есть плата и отладчик попробовать "недокументированые функции" от старших кристалов -если это отбраковка они должны работать в ЭМУЛЯТОРЕ ограничения ядра видимо прописаны согласно ДШ...не факт что реале их нет
просто по опыту изучения техпроцеса разбраковка 1 кристалы выгодне проихзводства 3 комплектов литографических масок для этого
просто по опыту изучения техпроцеса разбраковка 1 кристалы выгодне проихзводства 3 комплектов литографических масок для этого
ZМудрость(Опыт и выдержка) приходит с годами.
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..
УВЫ...
Для режима 3 нужен таймер-донор для части аппаратных ресурсов.
А посикоку его нету, то соответственно и возможности включить режим 3 не предусматривается.

Для режима 3 нужен таймер-донор для части аппаратных ресурсов.
А посикоку его нету, то соответственно и возможности включить режим 3 не предусматривается.


