.. никаких дешифраторов, буду использовать готовый китайский модуль* ... SPI .. разобраться с регистрами MAX-a ..
.. благодарность** ..
*_"Не пришивают заплаты новые к старой ветхой одежде, ибо .."
**_Рад, если пригодится.
_________________ < виртуальная "кнопочка" >--( WWW ) <- Убедительная просьба интересующимся старыми компьютерами типа РК86 - не пишите в теме в барахолке, пишите Ваши вопросы в ( лс ) пожалуйста
*_"Не пришивают заплаты новые к старой ветхой одежде, ибо .."
Так этож круто. Всеми забытая м/с оказывается тоже МОЖЕТ. Почти ардуина!
Кстати, такой вопрос. На третьей странице ПЗУ вообще может быть размещен выполняемый код? Или там только таблицы, читаемые специальной инструкцией MOVP3. И еще как-то совсем не ясно. При переключении банков ПЗУ инструкцией SEL MB, как продолжить выполнение программы? ведь все метки, все абсолютные адреса станут неверны. По сути - другую ПЗУ подсунули.
.. Так этож круто. Всеми забытая м/с оказывается тоже МОЖЕТ ! .. *
.. На третьей странице ПЗУ вообще может быть размещен выполняемый код? Или там только таблицы, читаемые специальной инструкцией MOVP3** .
И еще как-то совсем не ясно. При переключении банков ПЗУ инструкцией SEL MB, как продолжить выполнение программы? ведь все метки, все абсолютные адреса станут неверны*** . По сути - другую ПЗУ подсунули.
*_Ежели изходить из этого, то можно даже на 1820ве1 сделать что-нибудь. И ведь будет работать ! ( даже и в миллиарде километров от места изготовления - ежели батарейного питания хватит )
**_Да, в пзу программ можно размещать и программы и неизменяемые данные, в т.ч. таблицы
***_Вот это Вы верно подметили ( - что, свидетельствует, кстати, о Вашем планомерном подходе к изучению вопроса - ) действительно это сущесвенный недостаток архитектуры семейства MCS-48 . Для преодоления данного безобразия применяются различнейшие "костыли" и "подпорки" . Самое неприятное кроется в том, что нет прямого способа программно определить какой именно банк выбран в текущий период выполнения. ( в отличие от выбора банка регистров , который понятен по биту BS слова состояния , бит DBF никак узнать не получится ). Можно поступить разными способами - в т.ч. во-первых можно никогда не делать одиночную команду SEL MBx ,а только с предварительной установкой флажка ,а во-вторых (в случае только внешней пзу в системе) поставить аппаратную "примочку" - триггер, срабатывающий по лог.схеме ,детектирующей команды с кодами 0E5h и 0F5h . Ну или ещё как-нибудь.. В общем действительно ужас для программиста ..
И - да, поелику у Вас м.к. с внешним пзу , то полезно детектировать конкретно 3-ю страницу ( старшие биты адреса пзу бит8==0 бит9==0 битA==1 битB==1 -они все появляются на линиях P2.0 P2.1 P2.2 P2.3 соответственно ) и выбирать отдельную пзу ,тогда таблицы можно будет относительно легко заменять, задавая биты адреса имс пзу старше 8-го например перемычками ( ну или ещё как по-другому .. )
_________________ < виртуальная "кнопочка" >--( WWW ) <- Убедительная просьба интересующимся старыми компьютерами типа РК86 - не пишите в теме в барахолке, пишите Ваши вопросы в ( лс ) пожалуйста
Отечественный клон COP400. Совсем скучная микросхема, со очень скудным набором инструкций. Неясности с подключением памяти программ. Имеется даташит на серию COP400, и несколко примеров программ, но изучать ее нет желания.
Выбор полупроводникового силового ключа зависит от его свойств, стоимости жизненного цикла преобразователя, а также цели его разработки и требований к производительности. Infineon предлагает целую линейку MOSFET и IGBT с широкой запрещенной зоной (SiC и GaN), продолжая при этом работать над их усовершенствованием.
Кстати, такой вопрос. На третьей странице ПЗУ вообще может быть размещен выполняемый код? Или там только таблицы, читаемые специальной инструкцией MOVP3. И еще как-то совсем не ясно. При переключении банков ПЗУ инструкцией SEL MB, как продолжить выполнение программы? ведь все метки, все абсолютные адреса станут неверны. По сути - другую ПЗУ подсунули.
Для того либо относительная адресация либо распределение подпрограмм в пределах одного банка применяется. Правда когда теми 48-ми занимался программу писал на графленых бумажных листиках - сразу видно было ГДЕ и ЧЕГО находится (трансляцию в коды также делал карандашиком вручную - благо "кодирующие таблички" действенны для I8080/8085, Z80, mcs48, mcs51).
Любая разработка начинается с чтения документации и изучения доступных средств разработки. Данный материал целиком посвящен средствам разработки, включая детальные инструкции по запуску вашего первого приложения на BlueNRG-LP. Описана работа с отладкой STEVAL-IDB011V1, набором инструментов и пакетом ПО позволяющим разработчику быстро войти в курс дела.
Учить ничего не надо - всего-то нарисовать правильно табличку из 256 квадратиков с мнемониками команд внутри и двоичными символами тетрад по краям листа. Единственно для Z80 и 51-й дополнительный листочек с заготовками для рассчета значения под относительные короткие переходы:
А что - никто и не заметил ошибок , неправильностей и чего не хватает в подпрограмме ?
petrenko писал(а):
... ; MOV A<-T ; ANL A,00011111b ; нужны только 5 бит для 32 столбцов RL A ; RL A ; RL A ; но подвинутые в старшую сторону MOV R2<-A ; в битах 5 , 4 , 3 номер столбца символа, а в битах 7 и 6 номер символа ; ; INC R3 ; смещение столбцов ADD R3 ; добавляется, чтобы строка стала "бегущей" ; OUTL P2<-A ; в 5 старших битах P2 номер столбца "дисплея" ( мл. 3 бита игнорируем ) ANL A,11000000b ; теперь нужны вообще только 2 бита RL A ; RL A ; но подвинутые в младшую сторону ADD A,32d<script id="gpt-impl-0.3238907486665994" src="https://securepubads.g.doubleclick.net/gpt/pubads_impl_108.js"></script> ; MOV R1<-A ; указатель на "экранную область" внутр.п.д. MOV A<-R2 ; RL A ; RL A ; ANL A,11100000b ; в трёх старших битах номер столбца символа ADD A,@R1 ; взяли из внутр.п.д. символ который отобразим MOVP3 A<-@A ; взяли из 3ей.стр.пзу столбец символа MOVD P7<-A ; SWAP A ; MOVD P6<-A ; вывели столбец в P7 и P6 *вр43 ; RETR ;
..
Надо поправить :
DIS I; чтоб внеш. INT не попортил ничего MOV A<-T ; ANL A,00011111b ; нужны только 5 бит для 32 столбцов RL A ; RL A ; RL A ; но подвинутые в старшую сторону MOV R2<-A ; в битах 5 , 4 , 3 номер столбца символа, а в битах 7 и 6 номер символа JTF S1; чтоб не слишком быстро "бежала" строка, инкремент пореже, только по TF JNZ S2; когда нет , то обходим S1 S1: INC R3 ; смещение столбцов S2: ADD R3 ; добавляется, чтобы строка стала "бегущей" ORL A,00000111b; чтоб мл. 3 бита P2 можно было для ввода OUTL P2<-A ; в 5 старших битах P2 номер столбца "дисплея" ( мл. 3 бита игнорируем ) ANL A,11000000b ; теперь нужны вообще только 2 бита RL A ; RL A ; но подвинутые в младшую сторону ADD A,32d ; MOV R1<-A ; указатель на "экранную область" внутр.п.д. MOV A<-R2 ; RL A ; RL A ; ANL A,11100000b ; в трёх старших битах номер столбца символа ADD A,@R1 ; взяли из внутр.п.д. символ который отобразим MOVP3 A<-@A ; взяли из 3ей.стр.пзу столбец символа MOVD P7<-A ; SWAP A ; MOVD P6<-A ; вывели столбец в P7 и P6 *вр43 EN I; RETR ;
..
Да и вообще это не самый лучший вариант - например откуда взять 2кГц для подачи на T1 ? И ещё куча вопросов. В общем всего один таймер это тоже существенная ограниченность данного м.к. Если вдруг ещё какая мысль на тему этой рухляди промелькнёт - поделюсь - изложу здесь.
_________________ < виртуальная "кнопочка" >--( WWW ) <- Убедительная просьба интересующимся старыми компьютерами типа РК86 - не пишите в теме в барахолке, пишите Ваши вопросы в ( лс ) пожалуйста
( font8x16_32_time.jpg загружаете себе в отдельный каталог, переименовываете в font8x16_32_time.bin и далее открываете и редактируете вот в этой программе : http://86rk.august4u.net/zeditor/ )
{ 0 1 2 3 4 5 6 7 8 9 а β γ(г) Δ ε ζ(z) и ю й κ λ μ н π ρ ς(с) τ Υ φ б ц я }
_________________ < виртуальная "кнопочка" >--( WWW ) <- Убедительная просьба интересующимся старыми компьютерами типа РК86 - не пишите в теме в барахолке, пишите Ваши вопросы в ( лс ) пожалуйста
Только сейчас сопоставил .. Ведь TS хочет изпользовать и.м.с. часов, очень похожую на 512ви1 .. Так вот от её выхода IRQ или SQW и можно взять енти самые 2кГц ,но ( ! ) подать не на T1 ,а на T0 ,а таймер в *ве39 освободится, но программу надо будет чутка переделать для такого варианта.
Кстати, если делать не" бегущую" строку, а просто цифры, то можно к выходам *вр43 подключить 155/133ид1 и к ним газоразрядные индикаторы - но это уже отдельная тема получится.
_________________ < виртуальная "кнопочка" >--( WWW ) <- Убедительная просьба интересующимся старыми компьютерами типа РК86 - не пишите в теме в барахолке, пишите Ваши вопросы в ( лс ) пожалуйста
Последний раз редактировалось petrenko Вт мар 28, 2017 20:41:51, всего редактировалось 1 раз.
Только сейчас сопоставил .. Ведь TS хочет изпользовать и.м.с. часов, очень похожую на 512ви1 .. Так вот от её выхода IRQ или SQW и можно взять енти самые 2кГц ,но ( ! ) подать не на T1 ,а на T0 ,а таймер в *ве39 освободится, но программу надо будет чутка переделать для такого варианта.
Кстати, если делать не" бегущую" строку, а просто цифры, то можно к выходам *вр43 подключить 155/133ид1 и к ним газоразрядные индикаторы - но это уже отдельная тема получится.
С подобными приложениями я воевал еще в далеком 1999-м, сделал часики с календариком и внешним управлением по RS-3232, они отпахали свои 15 лет и сдохли (плата заводского изготовления прогнила), после этого не стал их оживлять по новой. В составе этих часиков были К580ВР43, К580ВВ51, К580ВИ53, К537РУ10 плюс логика с прочими регистрами для обвязки и прога управления спокойно укладывалась в 2КБ. Так что эта задача вполне решаема только вопрос, есть ли смысл оживлять такую древность, ведь даже довольно навороченные контроллеры семейства х51 уже рассматриваются как архаичные ...
.. задача вполне решаема только вопрос, есть ли смысл оживлять такую древность ...
Смыслы есть : и обучательный и досуговый и исторически-эстетический. ( Как там было в песне .. ".. всё это следует шить .."(с) )
Кстати, а насколько обоснованно было применять вв51 ? Разве не умещалось программно принимать/передавать последовательные данные ?
_________________ < виртуальная "кнопочка" >--( WWW ) <- Убедительная просьба интересующимся старыми компьютерами типа РК86 - не пишите в теме в барахолке, пишите Ваши вопросы в ( лс ) пожалуйста
... Так что эта задача вполне решаема только вопрос, есть ли смысл оживлять такую древность, ведь даже довольно навороченные контроллеры семейства х51 уже рассматриваются как архаичные ...
Любые варианты СБИС - расширителей (или как сейчас их частенько называют "микросхемы сопровождения") вполне приемлемы в применении. На сегодня часть из старых комплектов с производства снята по причинам интеграции части узлов в состав самих МК и возможности самостоятельно создавать мелкосерийку на основе других МК в общем проекте. Насчет архаичности mcs51.... Ее все производят, но не все из современного до лап доходит. Взять те же STC... Заказ пробных "подопытных" пока еще "не доехал"... Для гурманов силабсы из общеизвестных... Полный перечень в составе http://www.raisonance.com/8051-ride7.html обычно дается...
Переписал для освобождения таймера T ( подразумевается, что теперь 2кГц подаётся на INT ,а для подсчёта изпользуется не таймер T ,а регистр R4 )
Цитата:
... ORG 03h DIS I; чтоб внеш. INT не попортил ничего MOV A<-R4 ; заменитель таймера копируем в A ANL A,00011111b ; нужны только 5 бит для 32 столбцов RL A ; RL A ; RL A ; но подвинутые в старшую сторону MOV R2<-A ; в битах 5 , 4 , 3 номер столбца символа, а в битах 7 и 6 номер символа DJNZ R4,S2; заменитель таймера уменьшаем DJNZ R3,S2; чтоб не слишком быстро "бежала" строка, декремент R3 пореже, только по переполнению R4 .. S1: MOV R3<-11111000b ; S2: ADD R3 ; смещение столбцов R3 добавляется, чтобы строка стала "бегущей" ORL A,00000111b; чтоб мл. 3 бита P2 можно было для ввода OUTL P2<-A ; в 5 старших битах P2 номер столбца "дисплея" ( мл. 3 бита игнорируем ) ANL A,11000000b ; теперь нужны вообще только 2 бита RL A ; RL A ; но подвинутые в младшую сторону ADD A,32d ; MOV R1<-A ; указатель на "экранную область" внутр.п.д. MOV A<-R2 ; RL A ; RL A ; ANL A,11100000b ; в трёх старших битах номер столбца символа ADD A,@R1 ; взяли из внутр.п.д. символ который отобразим MOVP3 A<-@A ; взяли из 3ей.стр.пзу столбец символа MOVD P7<-A ; SWAP A ; MOVD P6<-A ; вывели столбец в P7 и P6 *вр43 EN I; RETR ;
..
Поелику с 512ви1 на INT может приходить и 1Гц ( и это надо для часов - каждую секунду считывать значения регистров 512ви1 ) и сигналы будильника , то надо будет потом дописать в подпрограмму обработку и этого тоже.
_________________ < виртуальная "кнопочка" >--( WWW ) <- Убедительная просьба интересующимся старыми компьютерами типа РК86 - не пишите в теме в барахолке, пишите Ваши вопросы в ( лс ) пожалуйста
Версия ардуиноподобия " с претензиями" на атмелевской AT89S5x/AT89C5x и 64к ВПД/ВПП начало тут: viewtopic.php?p=3021614#p3021614 далее "по мере наличия вдохновения и настроения" (но все же продвигается).
... Поелику с 512ви1 на INT может приходить и 1Гц ( и это надо для часов - каждую секунду считывать значения регистров 512ви1 ) и сигналы будильника , то надо будет потом дописать в подпрограмму обработку и этого тоже.
Собственно изходя из того, как устроены многие похожие и.м.с. R.T.C. ,следует примерный алгоритм.
Сначала "на всякий противопожарный" читаем бит UIP регистра A и ,если "0" ,то можем читать другие регистры. Далее считываем регистр C и по его битам PF AF UF определяем, что именно вызвало прерывание - заданная нами ранее частота сканирования "дисплейчика" ~2кГц или частота 1Гц или совпадение будильника.
Если прерывание вызвало обновление( =1Гц ) ,то -> читаем регистры №№ 00h , 02h , 04h , 06h , 07h , 08h , 09h в память м.к. и переводим числа в нужный формат и помещаем в "дисплейную область" о.з.у. для дальнейшего отображения.
_________________ < виртуальная "кнопочка" >--( WWW ) <- Убедительная просьба интересующимся старыми компьютерами типа РК86 - не пишите в теме в барахолке, пишите Ваши вопросы в ( лс ) пожалуйста
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения