Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
petrenko
Друг Кота
Сообщения: 5322
Зарегистрирован: Вт фев 21, 2012 13:51:55
Откуда: Начинающий
Контактная информация:

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение petrenko »

А Вы на 1816ве39 уже доделали конструкцию ?

Вам сдвиг какой треба - циклический напрямую --bit№f<>bit№0-- bkb или циклический через флаг C ( --bit№f<>С<>bit№0-- ) ?
< виртуальная "кнопочка" >--( WWW ) <- Убедительная просьба интересующимся старыми компьютерами типа РК86 - не пишите в теме в барахолке, пишите Ваши вопросы в ( лс ) пожалуйста
Реклама
Голимый
Встал на лапы
Сообщения: 117
Зарегистрирован: Пн дек 08, 2014 19:45:24
Откуда: Воронеж

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Голимый »

ВЕ39 забросил. Мало памяти адресует, а как выйти за пределы 2К - я так и не разобрался как переключать банки в памяти программ, не прервав выполнение программы. Память расходуется стремительно - то что у дрпугих МК делается одной-двумя-тремя инструкциями, тут из-за скудных возможностей требует целых подпрограмм.
И еще одна сложность. Нельзя просто так взять, и подправить адрес возврата из прерывания. Последнее что сделал - написал программный SPI, подключил MAX7219, через него помигал светодиодами.
Нужен циклический сдвиг через перенос.
Последний раз редактировалось Голимый Пт июн 09, 2017 14:10:51, всего редактировалось 1 раз.
Трудное детство, стальные игрушки.
Реклама
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15554
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение BOB51 »

Голимый писал(а):Добрый день. Не подскажите, как для MCS-51 можно реализовать 16-битный последовательный сдвиг с использованием только битовых операций - CPL, CLR, SETB, JB, JNB. ANL, ORL использованием бит-адресуемых ячеек ОЗУ.
16-битный двоичный счетчик смог реализовать таким образом, на сдвиговый регистр ума не хватает.
Дык... там же или команда сдвига через CY RLC A/RRC A или побитовая перетасовка через промежуточный флаг пользователя/битов акумулятор доступна... чего еще выдумывать-то?
:shock:
Голимый
Встал на лапы
Сообщения: 117
Зарегистрирован: Пн дек 08, 2014 19:45:24
Откуда: Воронеж

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Голимый »

Ну как бы, и счетчик, и сдвиговый регистр можно реализовать на триггерах. CPL bit - вполне себе счетный триггер. SETB/CLR bit - синхронный RS-триггер. Работу счетчика себе представляю, и без труда написал, используя в качестве триггеров биты ячеек бит-адресуемой памяти. А вот со сдвиговым регистром - не совсем понятно
Трудное детство, стальные игрушки.
Реклама
Эиком - электронные компоненты и радиодетали
petrenko
Друг Кота
Сообщения: 5322
Зарегистрирован: Вт фев 21, 2012 13:51:55
Откуда: Начинающий
Контактная информация:

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение petrenko »

А Вы в той Вашей теме в самом первом сообщении http://radiokot.ru/forum/viewtopic.php? ... 121816ВЕ39 "нажмите" виртуальную кнопочку "!" и попросите модераторов
переименовать в ,например : "1816ВЕ39 с расширителем=580вр43 и R.T.C.=512ви1 Обсуждение."

Мы сразу прибежим туда и поможем в сложных вопросах ( возможно даже ещё больше памяти программ и памяти данных к тому музейному экспонату добавить и даже микро-операционную-системку замутить ) :wink:

Так, теперь по 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


8)
< виртуальная "кнопочка" >--( WWW ) <- Убедительная просьба интересующимся старыми компьютерами типа РК86 - не пишите в теме в барахолке, пишите Ваши вопросы в ( лс ) пожалуйста
Реклама
Голимый
Встал на лапы
Сообщения: 117
Зарегистрирован: Пн дек 08, 2014 19:45:24
Откуда: Воронеж

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Голимый »

[uquote="petrenko",url="/forum/viewtopic.php?p=3123297#p3123297"]Алгоритм примерно таков :[/uquote]
Мне этот прием известен. Он был в какой-то книжке по 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
Где cnt0 - бит-адресуемая ячейка памяти. Дальше идет еще 12 совершенно одинаковых итераций. У последней JB переход в начало на метку cnt_chain, а jmp retr ведет к выходу из подпрограммы.
Мне хочется таким-же примерно способом сделать сдвиговый регистр произвольной длинны.
Трудное детство, стальные игрушки.
Реклама
petrenko
Друг Кота
Сообщения: 5322
Зарегистрирован: Вт фев 21, 2012 13:51:55
Откуда: Начинающий
Контактная информация:

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение petrenko »

Если желаете вычурно сделать сдвиг любого значения на любое число бит, то :
Можно сначала перенести значение любой длины ( но не длиннее 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 - не пишите в теме в барахолке, пишите Ваши вопросы в ( лс ) пожалуйста
Голимый
Встал на лапы
Сообщения: 117
Зарегистрирован: Пн дек 08, 2014 19:45:24
Откуда: Воронеж

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Голимый »

petrenko писал(а):В общем такое вот "развлечение" тож возможно. Но зачем ?
В общем, это малая часть одной задумки. Хочу реализовать алгоритм шифрования A3, для этого нужны сдвиговые регистры переменной и произвольной (не кратной 2) длинны.
Пока что отрабатываю - как мне сделать эти регистры.
Трудное детство, стальные игрушки.
Голимый
Встал на лапы
Сообщения: 117
Зарегистрирован: Пн дек 08, 2014 19:45:24
Откуда: Воронеж

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Голимый »

Ради интереса, решил попробовать C компилятор Read51, который когда-то скачал "на всякий случай". Написал программу мигалки, и получил на выходе нерабочий hex-файл (другой компилятор, SDCC - выдал нормальный). Диссамблерировал (ADIS51) результат - там бред. А вместе с hex-файлом, компилятор создал еще ассемблерный листинг, в котором есть такие строчки:

Код: Выделить всё

_main:   mov     SPH, #0x40            ; ENTERMAIN(16384)
          mov     SPL, #0x00
          mov     BPH, SPH
          mov     BPL, SPL                 ; #line 125 	while(1)
Я так понимаю, он компилировал не под AT89C51, а под что-то сильно другое (хотя, целевой МК - этот), пусть и из этой оперы.
Что это за регистры, какому МК они могут относиться?
Трудное детство, стальные игрушки.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15554
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение BOB51 »

Малоизвестная среди радиолюбителей MCS251 в вариантах от intel и Philips...
https://studopedia.ru/14_111761_semeystvo-MCS-.html
В живом виде не попадалась - посему и даташитов в библиотеку не собирал...
У кейла в описании ассемблера присутствует и под нее информация.
:roll:
salang
Грызет канифоль
Сообщения: 273
Зарегистрирован: Вт янв 18, 2011 19:32:48
Откуда: Мск

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение salang »

и вряд ли попадется. Только если из демонтированного оборудования, т.к. даже сейчас продается за совсем несмешные деньги. Эмулятор тоже не дешев
Голимый
Встал на лапы
Сообщения: 117
Зарегистрирован: Пн дек 08, 2014 19:45:24
Откуда: Воронеж

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Голимый »

BOB51 писал(а):Малоизвестная среди радиолюбителей MCS251 в вариантах от intel и Philips...
Настолько малоизвестная, что узнал только сейчас. Хотя, какую только дичь не видел прежде. (или читал о ней). Посмотрел свои оба программатора - ни один не умеет.
А жаль, интересная ведь штука.
Трудное детство, стальные игрушки.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15554
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение BOB51 »

Интерес к ним был "перекрыт" за счет появления атмелевских, силабсов, STC и прочих с модернизированным 8-разрядным ядром.
А 16-разрядные это вобщем удел сложных устройств, маловостребованных в "бытовых" приложениях.
8)
Голимый
Встал на лапы
Сообщения: 117
Зарегистрирован: Пн дек 08, 2014 19:45:24
Откуда: Воронеж

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение Голимый »

BOB51 писал(а):А 16-разрядные это вобщем удел сложных устройств, маловостребованных в "бытовых" приложениях.
Сейчас не считается зазорным помигать светодиодом на 32-битным ARM-е, а 16-битные, напр. MSP430 вполне себе известны в "наших кругах", и таки применяются.
Похоже, это просто "неуловимый Джо" в исполнении Intel. Тогда их просто не "раскручивали", как обычный 51-й, а щас они нафиг никому не нужны, в связи с обилием иных альтернатив.
Трудное детство, стальные игрушки.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15554
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение BOB51 »

Кто знает...
:dont_know:
На сегодня и ZILOG мало известен (а сайт исключительно "для зарегистрированных пользователей" в отношении техдокументации)...
8)
Пока_без_кота
Потрогал лапой паяльник
Сообщения: 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 в таком режиме :)))
Аватара пользователя
musor
Друг Кота
Сообщения: 39197
Зарегистрирован: Сб сен 13, 2014 16:27:32
Откуда: СпиртоГонск созвездия Омега

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение musor »

а это часом не выбраковка из кристалов 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-битный таймер без перезагрузки значения.
Последний раз редактировалось Пока_без_кота Пт окт 06, 2017 07:09:51, всего редактировалось 1 раз.
Аватара пользователя
musor
Друг Кота
Сообщения: 39197
Зарегистрирован: Сб сен 13, 2014 16:27:32
Откуда: СпиртоГонск созвездия Омега

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение musor »

интересно если у вас в железе есть плата и отладчик попробовать "недокументированые функции" от старших кристалов -если это отбраковка они должны работать в ЭМУЛЯТОРЕ ограничения ядра видимо прописаны согласно ДШ...не факт что реале их нет
просто по опыту изучения техпроцеса разбраковка 1 кристалы выгодне проихзводства 3 комплектов литографических масок для этого
ZМудрость(Опыт и выдержка) приходит с годами.
Все Ваши беды и проблемы, от недостатка знаний.
Умный и у дурака научится, а дураку и ..
Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15554
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Мелкие вопросы по МК-51 а-ка MCS-51, ASM и не только..

Сообщение BOB51 »

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

Вернуться в «Разные вопросы по МК»