Страница 1 из 2
КР1816ВЕ39 с расширителем портов NEC D8243. Проблема.
Добавлено: Пт янв 13, 2017 18:07:13
Голимый
Неспешно изучаю МК КР1816ВЕ39, и решил попробовать внешнее прерывание. К МК подключен расширитель I/O D8243 (КР580ВР43), к портам P6, P7 которого подключен ардуина, которая выдает 8-битную циклическую поледовательность кодов, и после каждого выданного байта, генерирует короткий импульс вызывающий прерывание МК - #INT. Задача такая: по внешнему прерыванию прочесть состояние 4-битных портов P6 и P7 расширителя, собрать цельный байт из двух тетрад, инвертировать его, и вывести на светодиоды, подключенные к порту P1 МК.
За вывод отвечает такой обработчик прерывания:
Код: Выделить всё
clr A
movd A, P6 ;P6 копирую в младшую тетраду аккумулятора
swap A ;меняю местами тетрады аккумулятора
movd A, P7 ;P7 в младшую тетраду А
cpl A ; инвертирую полученный байт
outl P1, A ; вывожу байт в порт P1
retr ;выход из обработчика
И возникла проблема: выводится только старшая тетрада (порт P7 расширителя), младшая (порт P6) теряется, и не отображается. Проверил по отдельности порты P6,7 - они рабочие.
Написал более сложный обработчик с пересылками через оперативную память инструкцией XCHD, это решило проблему, но почему не работает более простой код. Есть подозрение, которое пока сложно проверить - инструкция MOVD пересылает младшую тетраду, и при этом забивает нулями старшую? Или я не прав, и не то написал?
Re: КР1816ВЕ39 с расширителем портов NEC D8243. Проблема.
Добавлено: Пт янв 13, 2017 22:02:21
petrenko
Справочник писал(а):MOVD A,<источник> - считать порт микросхемы расширителя портов.
Описание: содержимое порта расширителя портов копируется в младшую тетраду аккумулятора. Старшая тетрада обнуляется. Команда не воздействует на флаги.
Так что это ни разу не "проблема" .
Да и вообще какой смысл отдельную тему делать, когда правильнее было бы в "мелкие вопросы по .. " написать..
Re: КР1816ВЕ39 с расширителем портов NEC D8243. Проблема.
Добавлено: Пт янв 13, 2017 22:16:04
Голимый
Спасибо, я был невнимателен.
Значит, простым способом считывать оба порта нельзя.
Re: КР1816ВЕ39 с расширителем портов NEC D8243. Проблема.
Добавлено: Пт янв 13, 2017 22:26:04
petrenko
В смысле "простым" ?
А собственно чем Вам не нравится добавление команды XCHD A,@Ri ?
Насколько сильно это "усложнит" ?
Или есть какие то ограничения на длину кода и/или время выполнения ?
Или все регистры позяняты "под завязку" ?
Re: КР1816ВЕ39 с расширителем портов NEC D8243. Проблема.
Добавлено: Пт янв 13, 2017 22:54:45
Голимый
petrenko писал(а):В смысле "простым" ?
У этого МК мало памяти, вернее мало может адресовать внешней памяти. Прогграммный счетчик всего 12 бит, из которых автоинкрементируются только 11. Дальше - пока мне неведомое мне колдунство с переключением банков. Считаю что доступно только 2048 байт памяти программ.
petrenko писал(а):А собственно чем Вам не нравится добавление команды XCHD A,@Ri
Ничего против не имею, просто пришлось делать не так как хотел изначально.
Re: КР1816ВЕ39 с расширителем портов NEC D8243. Проблема.
Добавлено: Сб янв 14, 2017 06:50:28
BOB51
Мндя... mcs48... антиквариат... и весьма жесток к программисту...
Да и компиляторы на ассемблер добыть тяжко...
Лучше бы уж mcs51...

Re: КР1816ВЕ39 с расширителем портов NEC D8243. Проблема.
Добавлено: Сб янв 14, 2017 10:59:18
Голимый
BOB51 писал(а):Мндя... mcs48... антиквариат... и весьма жесток к программисту...
Да и компиляторы на ассемблер добыть тяжко...
Лучше бы уж mcs51...

Лежат две микросхемы ВЕ39 с 90-х годов. В свое время дал себе слово разобраться с ними когда нибудь

С транслятором никаких проблем, нашел подходящий ассемблер аж 2013 года выпуска.
С книжками по ним все плохо.
Re: КР1816ВЕ39 с расширителем портов NEC D8243. Проблема.
Добавлено: Сб янв 14, 2017 11:12:11
BOB51
Досадка в том, что данное семейство не имело продолжения (в отличии от mcs51, pic и avr).
По сегментации ПЗУ весьма специфично по требованиям к области применения команд и их размещению (относительно двухбайтовых). Посему... "проходили, но "отложено музейным экспонатом""...
Гдей-то здесь (на КОТе) за них отдельна ветка была, там и прожки компиляторов и симулятор-отладчики были...
Преимущество применения связки mcs48+8243 в том, что часть команд аппаратно отрабатывается за счет того расширителя.
...ностальжи...

Re: КР1816ВЕ39 с расширителем портов NEC D8243. Проблема.
Добавлено: Сб янв 14, 2017 11:55:59
Голимый
BOB51 писал(а):Преимущество применения связки mcs48+8243 в том, что часть команд аппаратно отрабатывается за счет того расширителя.
Да это не преимущество, это суровая необходимость. Половина ног МК занята шинами блока внешней памяти программ, к ним ничего не подключишь. Без расширителя - никуда.
Щас наиграюсь - и брошу наверное. Чувствую, я на нем не развернусь. Лучше уж правда, MCS-51, с его плоской 64К адресацией.
Re: КР1816ВЕ39 с расширителем портов NEC D8243. Проблема.
Добавлено: Сб янв 14, 2017 15:42:05
BOB51
Не надь "бочка гнать" на МК - каждый из "доступных" хорош по-своему.
Абы только продолжал выпускаться хош кем-нибудь и был подешевше.
Воть тута про оные в виде общего знакомствия:
http://radiokot.ru/forum/viewtopic.php?f=62&t=94201

Re: КР1816ВЕ39 с расширителем портов NEC D8243. Проблема.
Добавлено: Сб янв 14, 2017 16:25:16
Голимый
Честно говоря, не понял. 51-е - программирую, PIC, STM - безынтересны.
Re: КР1816ВЕ39 с расширителем портов NEC D8243. Проблема.
Добавлено: Сб янв 14, 2017 16:51:52
petrenko
Голимый писал(а):Ничего против не имею ..
Ну тогда собственно вот так :
Код: Выделить всё
; убираем очистку clr A - это излишне
movd A, P6 ;порт P6 копируем в младший ниббл аккумулятора A - как и было
xchd A,@Ri ;но ( ! ) сохраняем в мл. ниббле регистра
movd A, P7 ;P7 в младший ниббл А
swap A ;вот только теперь меняем местами нибблы аккумулятора, так, чтоб значение P7 оказалось в старшем ниббле A
xchd A,@Ri ;а теперь сохранённое в регистре значение P6 - в младший ниббл A
;Ну дальше всё, как и было ...
cpl A ;
outl P1, A ;
retr ;
Не сильно длиннее и задействует дополнительно ещё 1 регистр.
это суровая необходимость
Ну так, кроме разширителя портов вр43 ,никто ж не запрещает в адресное пространство внешней памяти данных поместить хоть 64 порта типа 580вв55
ps Кстати, где и почём покупали вр43 ?
Re: КР1816ВЕ39 с расширителем портов NEC D8243. Проблема.
Добавлено: Сб янв 14, 2017 17:03:50
Голимый
petrenko писал(а):Ну тогда собственно вот так
Сделал так-же!. Только все-таки решил выводить через порты 4,5 расширителя.
petrenko писал(а):поместить хоть 64 порта типа 580вв55
Думал, но пока еще не понял, как управлять ВВ55. Пока в голове не складывается кода.
petrenko писал(а):ps Кстати, где и почём покупали вр43 ?
ВР43 не покупал. Купил 5 штук на алиэкспрессе, NEC D8243HC
Покупал, когда еще доллар ~32Р стоил. Проект с оживлением ВЕ39 у меня долгострой.
Re: КР1816ВЕ39 с расширителем портов NEC D8243. Проблема.
Добавлено: Сб янв 14, 2017 17:16:08
petrenko
Голимый писал(а):.. как управлять ВВ55 ..
Справочники ! Паки и паки справочники .
(
(IMHO) в книге авторства Зеленко Геннадия Вадимовича, Панова Виктора Васильевича и Попова Сергея Николаевича очень ясно написано в т.ч и о вв55 
)
Re: КР1816ВЕ39 с расширителем портов NEC D8243. Проблема.
Добавлено: Пн фев 06, 2017 13:58:33
Голимый
Решил я на своей ВЕ39 сделать часы. Чтоб не париться с программным счетом времени, решил поставить RTC, а конкретно DS12887+. Это блок-сборка содержащая микросхему часов, кварц, и аккумулятор, и что особенно радует - имеет шинный интерфейс, что позволяет подключить ее к шине блока внешней памяти программ, и не занимать полезные выводы МК. Счетные регистры "далласа" в этом случае являются адресами памяти, и доступны через MOVX A, @Ri. Но возникла одна непонятка. "Даллас" имеет собственную защелку адреса, и требует разветвления сигнала #ALE, и мне кажется это приведет к проблеме - непонятно куда обращается МК - к ПЗУ, или к "Далласу". Хотя кроме шины он использует сигналы RD/WR от МК, но опасаюсь, не возникнет ли конфликта на шине?
Re: КР1816ВЕ39 с расширителем портов NEC D8243. Проблема.
Добавлено: Вт фев 07, 2017 04:01:08
petrenko
Уже сказал же :
petrenko писал(а):.. Справочники ! Паки и паки справочники ..
Архитектура данных м.к. - с раздельной адресацией озу данных и пзу программ - ну неужели так лениво
прочитать об этом ?
Заодно изучите временн
ые диаграммы сигналов, чтоб развеять Ваши опасения.
Кстати, удобно разместить "знакогенератор" в 3-ей (
из возможных 16) странице пзу
,и можно даже "бегущую строку" организовать из светодиодных матриц 8*8 - например длиной в 32 столбца (
, а доступные нынче 1533ид3 занимают меньше места, чем 155ид3 - их понадобится 2шт. для этого )
.. Жаль вот невозможно в данном м.к. непосредственно порт инкрементировать .. Но если Вам не понадобится таймер для каких-нибудь других целей, то можно сделать :
MOV A<-0FFh ; MOV T<-A ; STRT CNT ; подать на T1 частоту сканирования столбцов , а по вектору прерывания 007h сделать примерно следуещее :
Код: Выделить всё
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 ;
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 ;
^_Ну вот, почти готовая подпрограмма отображения "бегущей" строки ..
(
для наглядности заменены некоторые запятые на "как_бы_стрелочку" <- )
Четыре символа "бегают" , для отображения их надо положить по адресам 32d 33d 34d 35d внутр.п.д
В "знакогенераторе" умещаются до 32 символов с "форматом знакоместа" 8*8 точек .
Мож кому пригодится, авось спасибо скажут ..

Re: КР1816ВЕ39 с расширителем портов NEC D8243. Проблема.
Добавлено: Вт фев 07, 2017 06:52:58
BOB51
Для работы с ВПП и ВПД помимо ale используются разные стробы чтения.
Технически только проблема с выходными сигналами защелки младшего байта адреса - но оная вроде только к ПЗУ подведена.

Re: КР1816ВЕ39 с расширителем портов NEC D8243. Проблема.
Добавлено: Вт фев 07, 2017 13:44:19
Голимый
BOB51 писал(а):Для работы с ВПП и ВПД помимо ale используются разные стробы чтения.
То есть, МК не перепутает, какую микросхему читать? Это хорошо, спасибо.
petrenko писал(а):и можно даже "бегущую строку" организовать из светодиодных матриц 8*8
Такая идея тоже. Только никаких дешифраторов, буду использовать готовый китайский модуль со светодиодной сборкой, на микросхеме MAX7219. Не позднее чем позавчера написал и обкатал (на 8051) подпрограмму работы SPI без битовых операций, читал и писал EEPROM 25AA020. Осталось только переписать подпрограмму под ВЕ39, и разобраться с регистрами MAX-a.
За программу бегущей строки - специальная благодарность, сам бы думал над ней долго.
Re: КР1816ВЕ39 с расширителем портов NEC D8243. Проблема.
Добавлено: Вт фев 07, 2017 15:52:15
Igor3
Голимый писал(а):С транслятором никаких проблем, нашел подходящий ассемблер аж 2013 года выпуска.
С книжками по ним все плохо.
Хм...А как же хит 90-х “Однокристальные микроэвм семейство МК48,МК51 том.1 Липовецкий Г.П. с соавторами” ?
Re: КР1816ВЕ39 с расширителем портов NEC D8243. Проблема.
Добавлено: Вт фев 07, 2017 18:21:17
BOB51