Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить

Re: КР1816ВЕ39 с расширителем портов NEC D8243. Проблема.

Вт фев 07, 2017 22:55:17

Голимый писал(а):.. никаких дешифраторов, буду использовать готовый китайский модуль* ... SPI .. разобраться с регистрами MAX-a ..

.. благодарность** ..
*_"Не пришивают заплаты новые к старой ветхой одежде, ибо .."

**_Рад, если пригодится.

Re: КР1816ВЕ39 с расширителем портов NEC D8243. Проблема.

Ср фев 08, 2017 00:02:37

BOB51 писал(а):Это воть тут було:

Благодарю!
petrenko писал(а):*_"Не пришивают заплаты новые к старой ветхой одежде, ибо .."

Так этож круто. Всеми забытая м/с оказывается тоже МОЖЕТ. Почти ардуина!

Кстати, такой вопрос. На третьей странице ПЗУ вообще может быть размещен выполняемый код? Или там только таблицы, читаемые специальной инструкцией MOVP3.
И еще как-то совсем не ясно. При переключении банков ПЗУ инструкцией SEL MB, как продолжить выполнение программы? ведь все метки, все абсолютные адреса станут неверны. По сути - другую ПЗУ подсунули.

Re: КР1816ВЕ39 с расширителем портов NEC D8243. Проблема.

Ср фев 08, 2017 02:27:45

Голимый писал(а): .. Так этож круто. Всеми забытая м/с оказывается тоже МОЖЕТ ! .. *

.. На третьей странице ПЗУ вообще может быть размещен выполняемый код? Или там только таблицы, читаемые специальной инструкцией MOVP3** .

И еще как-то совсем не ясно. При переключении банков ПЗУ инструкцией SEL MB, как продолжить выполнение программы? ведь все метки, все абсолютные адреса станут неверны*** . По сути - другую ПЗУ подсунули.
*_Ежели изходить из этого, то можно даже на 1820ве1 сделать что-нибудь.
И ведь будет работать ! ( даже и в миллиарде километров от места изготовления - ежели батарейного питания хватит )

**_Да, в пзу программ можно размещать и программы и неизменяемые данные, в т.ч. таблицы

***_Вот это Вы верно подметили ( - что, свидетельствует, кстати, о Вашем планомерном подходе к изучению вопроса - ) действительно это сущесвенный недостаток архитектуры семейства MCS-48 .
Для преодоления данного безобразия применяются различнейшие "костыли" и "подпорки" . Самое неприятное кроется в том, что нет прямого способа программно определить какой именно банк выбран в текущий период выполнения. ( в отличие от выбора банка регистров , который понятен по биту BS слова состояния , бит DBF никак узнать не получится ).
Можно поступить разными способами - в т.ч. во-первых можно никогда не делать одиночную команду SEL MBx ,а только с предварительной установкой флажка ,а во-вторых (в случае только внешней пзу в системе) поставить аппаратную "примочку" - триггер, срабатывающий по лог.схеме ,детектирующей команды с кодами 0E5h и 0F5h . Ну или ещё как-нибудь.. В общем действительно ужас для программиста .. :o :facepalm:

И - да, поелику у Вас м.к. с внешним пзу , то полезно детектировать конкретно 3-ю страницу ( старшие биты адреса пзу бит8==0 бит9==0 битA==1 битB==1 -они все появляются на линиях P2.0 P2.1 P2.2 P2.3 соответственно ) и выбирать отдельную пзу ,тогда таблицы можно будет относительно легко заменять, задавая биты адреса имс пзу старше 8-го например перемычками ( ну или ещё как по-другому .. )

Re: КР1816ВЕ39 с расширителем портов NEC D8243. Проблема.

Ср фев 08, 2017 09:12:45

petrenko писал(а): можно даже на 1820ве1 сделать что-нибудь

Отечественный клон COP400. Совсем скучная микросхема, со очень скудным набором инструкций. Неясности с подключением памяти программ. Имеется даташит на серию COP400, и несколко примеров программ, но изучать ее нет желания.

Re: КР1816ВЕ39 с расширителем портов NEC D8243. Проблема.

Ср фев 08, 2017 09:29:00

Голимый писал(а):
BOB51 писал(а):Это воть тут було:

Благодарю!...

Кстати, такой вопрос. На третьей странице ПЗУ вообще может быть размещен выполняемый код? Или там только таблицы, читаемые специальной инструкцией MOVP3.
И еще как-то совсем не ясно. При переключении банков ПЗУ инструкцией SEL MB, как продолжить выполнение программы? ведь все метки, все абсолютные адреса станут неверны. По сути - другую ПЗУ подсунули.


Для того либо относительная адресация либо распределение подпрограмм в пределах одного банка применяется.
Правда когда теми 48-ми занимался программу писал на графленых бумажных листиках - сразу видно было ГДЕ и ЧЕГО находится (трансляцию в коды также делал карандашиком вручную - благо "кодирующие таблички" действенны для I8080/8085, Z80, mcs48, mcs51).
8)

Re: КР1816ВЕ39 с расширителем портов NEC D8243. Проблема.

Ср фев 08, 2017 10:53:35

Ну уж нет, вручную транслировать не собираюсь! :shock:
(хотя наверное не так уж и сложно, заучить опкоды, и формат инструкций)

Re: КР1816ВЕ39 с расширителем портов NEC D8243. Проблема.

Ср фев 08, 2017 11:20:40

Учить ничего не надо - всего-то нарисовать правильно табличку из 256 квадратиков с мнемониками команд внутри и двоичными символами тетрад по краям листа.
Единственно для Z80 и 51-й дополнительный листочек с заготовками для рассчета значения под относительные короткие переходы:
Rel_map.pdf
(376.28 KiB) Скачиваний: 322

8)

Re: КР1816ВЕ39 с расширителем портов NEC D8243. Проблема.

Вт фев 14, 2017 01:00:26

А что - никто и не заметил ошибок , неправильностей и чего не хватает в подпрограмме ?
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 ?
И ещё куча вопросов.
В общем всего один таймер это тоже существенная ограниченность данного м.к.
Если вдруг ещё какая мысль на тему этой рухляди промелькнёт - поделюсь - изложу здесь. :write:

м.к. 1816ве39/49 с расширителем портов 580вр43. Обсуждение.

Вт мар 21, 2017 17:54:14

На досуге "накидал" знакогенератор всего на 32 символа - для часов ,однако, вполне хватит :

download/file.php?mode=view&id=280574

( font8x16_32_time.jpg загружаете себе в отдельный каталог, переименовываете в font8x16_32_time.bin и далее открываете и редактируете вот в этой программе :
http://86rk.august4u.net/zeditor/ )

{ 0 1 2 3 4 5 6 7 8 9 а β γ(г) Δ ε ζ(z) и ю й κ λ μ н π ρ ς(с) τ Υ φ б ц я }

Этих символов хватит для отображения :

| янβ | φεβ | μаρ | аπρ | μай | июн | июλ | аβг | ςεн | ноя | Δεκ |

| πн | βτ | ςρ | чτ | πτ | ςб | βς |

( И в hex тоже можно будет вводить напрямую в м.к. :wink: )
Вложения
font8x16_32_time.jpg
(2 KiB) Скачиваний: 954

1816ВЕ39 с расширителем портов 580вр43. Применение.

Вт мар 28, 2017 01:30:29

Только сейчас сопоставил ..
Ведь TS хочет изпользовать и.м.с. часов, очень похожую на 512ви1 ..
Так вот от её выхода IRQ или SQW и можно взять енти самые 2кГц ,но ( ! ) подать не на T1 ,а на T0 ,а таймер в *ве39 освободится, но программу надо будет чутка переделать для такого варианта. 8)

Кстати, если делать не" бегущую" строку, а просто цифры, то можно к выходам *вр43 подключить 155/133ид1 и к ним газоразрядные индикаторы - но это уже отдельная тема получится.
Последний раз редактировалось petrenko Вт мар 28, 2017 20:41:51, всего редактировалось 1 раз.

Re: КР1816ВЕ39 с расширителем портов NEC D8243. Проблема.

Вт мар 28, 2017 09:24:32

А у меня и для 512ви1 описание ёсть....
Практически дотошнейшее и на русскомм...
:roll:
:hunger:
Правда скан... самопальный и великоват - аж почти 3 мегабайта...
:(

Re: 1816ВЕ39 с расширителем портов 580вр43. Применение.

Пн апр 17, 2017 12:50:42

petrenko писал(а):Только сейчас сопоставил ..
Ведь TS хочет изпользовать и.м.с. часов, очень похожую на 512ви1 ..
Так вот от её выхода IRQ или SQW и можно взять енти самые 2кГц ,но ( ! ) подать не на T1 ,а на T0 ,а таймер в *ве39 освободится, но программу надо будет чутка переделать для такого варианта. 8)

Кстати, если делать не" бегущую" строку, а просто цифры, то можно к выходам *вр43 подключить 155/133ид1 и к ним газоразрядные индикаторы - но это уже отдельная тема получится.


С подобными приложениями я воевал еще в далеком 1999-м, сделал часики с календариком и внешним управлением по RS-3232, они отпахали свои 15 лет и сдохли (плата заводского изготовления прогнила), после этого не стал их оживлять по новой. В составе этих часиков были К580ВР43, К580ВВ51, К580ВИ53, К537РУ10 плюс логика с прочими регистрами для обвязки и прога управления спокойно укладывалась в 2КБ. Так что эта задача вполне решаема только вопрос, есть ли смысл оживлять такую древность, ведь даже довольно навороченные контроллеры семейства х51 уже рассматриваются как архаичные ...

Re: 1816ВЕ39 с расширителем портов 580вр43. Применение.

Пн апр 17, 2017 15:20:22

ST_A писал(а):.. задача вполне решаема только вопрос, есть ли смысл оживлять такую древность ...
Смыслы есть : и обучательный и досуговый и исторически-эстетический.
( Как там было в песне .. ".. всё это следует шить .."(с) :solder: )

Кстати, а насколько обоснованно было применять вв51 ? :roll:
Разве не умещалось программно принимать/передавать последовательные данные ?

Re: 1816ВЕ39 с расширителем портов 580вр43. Применение.

Вт апр 18, 2017 07:32:56

ST_A писал(а):...
Так что эта задача вполне решаема только вопрос, есть ли смысл оживлять такую древность, ведь даже довольно навороченные контроллеры семейства х51 уже рассматриваются как архаичные ...

Любые варианты СБИС - расширителей (или как сейчас их частенько называют
"микросхемы сопровождения") вполне приемлемы в применении.
На сегодня часть из старых комплектов с производства снята по причинам интеграции части узлов в состав самих МК и возможности самостоятельно создавать мелкосерийку на основе других МК в общем проекте.
Насчет архаичности mcs51....
Ее все производят, но не все из современного до лап доходит.
Взять те же STC...
Заказ пробных "подопытных" пока еще "не доехал"...
:(
Для гурманов силабсы из общеизвестных...
Полный перечень в составе http://www.raisonance.com/8051-ride7.html обычно дается...
:roll:

1816ВЕ39 с расширителем портов 580вр43. Обсуждение.

Вт апр 18, 2017 23:12:04

Переписал для освобождения таймера 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 ) и сигналы будильника , то надо будет потом дописать в подпрограмму обработку и этого тоже.

Re: КР1816ВЕ39 с расширителем портов NEC D8243. Проблема.

Ср апр 19, 2017 06:01:09

Версия ардуиноподобия " с претензиями" на атмелевской AT89S5x/AT89C5x и 64к ВПД/ВПП
начало тут:
viewtopic.php?p=3021614#p3021614
далее "по мере наличия вдохновения и настроения" (но все же продвигается).
:sleep:

1816ВЕ39 с расширителем=580вр43 и R.T.C.=512ви1 Обсуждение.

Пн авг 28, 2017 20:26:11

... Поелику с 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 в память м.к. и переводим числа в нужный формат и помещаем в "дисплейную область" о.з.у. для дальнейшего отображения.

Иначе, если прерывание вызвала заданная нами частота сканирования "дисплейчика" ( ~2кГц ) ,то -> выполняем( написанную выше) подпрограмму отображения..

:write:



Кстати, а T.S. что-нибудь уже пытался сделать ?
Ответить