Вт фев 07, 2017 22:55:17
*_"Не пришивают заплаты новые к старой ветхой одежде, ибо .."Голимый писал(а):.. никаких дешифраторов, буду использовать готовый китайский модуль* ... SPI .. разобраться с регистрами MAX-a ..
.. благодарность** ..
Ср фев 08, 2017 00:02:37
BOB51 писал(а):Это воть тут було:
petrenko писал(а):*_"Не пришивают заплаты новые к старой ветхой одежде, ибо .."
Ср фев 08, 2017 02:27:45
*_Ежели изходить из этого, то можно даже на 1820ве1 сделать что-нибудь.Голимый писал(а): .. Так этож круто. Всеми забытая м/с оказывается тоже МОЖЕТ ! .. *
.. На третьей странице ПЗУ вообще может быть размещен выполняемый код? Или там только таблицы, читаемые специальной инструкцией MOVP3** .
И еще как-то совсем не ясно. При переключении банков ПЗУ инструкцией SEL MB, как продолжить выполнение программы? ведь все метки, все абсолютные адреса станут неверны*** . По сути - другую ПЗУ подсунули.
Ср фев 08, 2017 09:12:45
petrenko писал(а): можно даже на 1820ве1 сделать что-нибудь
Ср фев 08, 2017 09:29:00
Голимый писал(а):BOB51 писал(а):Это воть тут було:
Благодарю!...
Кстати, такой вопрос. На третьей странице ПЗУ вообще может быть размещен выполняемый код? Или там только таблицы, читаемые специальной инструкцией MOVP3.
И еще как-то совсем не ясно. При переключении банков ПЗУ инструкцией SEL MB, как продолжить выполнение программы? ведь все метки, все абсолютные адреса станут неверны. По сути - другую ПЗУ подсунули.
Ср фев 08, 2017 10:53:35
Ср фев 08, 2017 11:20:40
Вт фев 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 ;
..
Вт мар 21, 2017 17:54:14
Вт мар 28, 2017 01:30:29
Вт мар 28, 2017 09:24:32
Пн апр 17, 2017 12:50:42
petrenko писал(а):Только сейчас сопоставил ..
Ведь TS хочет изпользовать и.м.с. часов, очень похожую на 512ви1 ..
Так вот от её выхода IRQ или SQW и можно взять енти самые 2кГц ,но ( ! ) подать не на T1 ,а на T0 ,а таймер в *ве39 освободится, но программу надо будет чутка переделать для такого варианта.
Кстати, если делать не" бегущую" строку, а просто цифры, то можно к выходам *вр43 подключить 155/133ид1 и к ним газоразрядные индикаторы - но это уже отдельная тема получится.
Пн апр 17, 2017 15:20:22
Смыслы есть : и обучательный и досуговый и исторически-эстетический.ST_A писал(а):.. задача вполне решаема только вопрос, есть ли смысл оживлять такую древность ...
Вт апр 18, 2017 07:32:56
ST_A писал(а):...
Так что эта задача вполне решаема только вопрос, есть ли смысл оживлять такую древность, ведь даже довольно навороченные контроллеры семейства х51 уже рассматриваются как архаичные ...
Вт апр 18, 2017 23:12:04
...
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 ;
..
Ср апр 19, 2017 06:01:09
Пн авг 28, 2017 20:26:11
Александр_Майоров_&_Дмитрий_Ломов_на_сайте_zxpress.ru писал(а):
zxpress.ru/article.php?id=18079
... Микросхема .. 512ВИ1, её фирменный прототип МС146818
, часто применяется разновидность DALLAS 1287, имеющая внутренний кварц и батарейку.
..
Назначение выводов:
01 NC не используется
02 OSC1 вход генератора
03 OSC2 выход генератора
04 AD0
05 AD1
06 AD2
07 AD3 мультиплексная шина
08 AD4 адреса/данных
09 AD5 /
10 AD6 /
11 AD7 /
12 GND земля
13 /CE выбор кристалла
14 AS адресный строб
15 R/W чтение/запись
16 NC не используется
17 /DS строб данных
18 /RES вход сброса
19 /IRQ выход запроса на прерывание
20 SED управление частотой CKOUT
21 CKOUT выход сигналов тактовой частоты
22 PS контроль сбоя напряжения питания
23 SQW выход программно-управляемого делителя частоты
24 +Ucc +3...+5 вольт
...
На вывод 02 (OSC1) необходимо подать частоту от внешнего генератора, или подключить к выводам 02/03 (OSC1/OSC2) кварцевый резонатор.
Выводы 4...11 (AD0...AD7) - шина адрес/данные, подключаются на шину данных процессора.
Вывод 13 (/CE) - выбор кристала. При наличии лог. "1" на данном входе микросхема блокируется.
Имеется одна особенность: на данном входе должно быть состояние лог."0" в течение всего цикла обращения к микросхеме.
Т.е. одновременно с (или до) выбором адреса регистра на входе /CE должна установиться лог."0", и его состояние не должно меняться в течение всего цикла обращения к выбранному регистру !
Hаиболее удобно и просто устанавливать на этом входе состояние лог."0" в течение всего времени работы устройстваа.
Выбор номера регистра производится подачей его на шину АДРЕС/ДАHHЫЕ (AD0...AD7) и подачей лог."1" на вход 14 (AS)
Для чтения/записи данных в/из регистр(а) используются выводы 15 (R/W) - выбор режима чтение/запись (соответственно лог."1" и "0") и 17 (DS) - стробирование данных.
При подаче лог."0" на вывод R/W производится запись данных в ранее выбранный регистр, а при подаче лог."0" на вывод DS - считывание данных из регистра.
Появляние лог."0" на выводе 19 (/IRQ) сообщает о процессе системного прерывания БИС.
Во всех остальных случаях данных выход находится в третьем логическом состоянии (высокоимпедансном).
Подача лог."0" на 22-й вывод (/PS) информирует БИС о том, что произошёл сбой напряжения питания, и содержимое регистров недостоверно. Если же имеется резервный источник питания, то на этот вход подать лог. "1".
Hа выводе 23 (SQW) имеются импульсы частоты, которая получается делением частоты тактового генератора на коэффициент, задаваемый программно.
Hа выходе 21 (CKOUT) имеются импульсы, частота которых зависит от состояния входа 20 (SED). При наличии там лог."1" частота на выходе SQW совпадает с частотой генератора (OSC1-OSC2). При наличии лог."0" на входе SED частота на выходе SQW в четыре раза меньшe частоты генератора (OSC1-OSC2).
В микросхеме имеются 64 восьмиразрядных регистра.
При работе с ними нужно сначала указать, с каким регистром работать (записать его номер в адресный регистр), а затем производить запись/чтение.
Hомера регистров
#00 СЕКУHДЫ
#01 СЕКУHДЫ (БУДИЛЬHИК)
#02 МИHУТЫ
#03 МИHУТЫ (БУДИЛЬHИК)
#04 ЧАСЫ
#05 ЧАСЫ (БУДИЛЬHИК)
#06 ДЕHЬ HЕДЕЛИ
#07 ДЕHЬ МЕСЯЦА
#08 МЕСЯЦ
#09 ГОД
#0A РЕГИСТР A
#0B РЕГИСТР B
#0C РЕГИСТР C
#0D РЕГИСТР D
#0E ОЗУ общего назначения
... ОЗУ общего назначения
#3F ОЗУ общего назначения
#0C,#0D - только чтение
#00,#0A - старшие разряды только чтение
ОПИСАHИЕ РЕГИСТРОВ A...D
─════════════════════════─
РЕГИСТР А (отдельные биты)
────────────────────────────
7 UIP "1" в этом разряде означает, что
идет обновление информации и с часа-
ми работать нельзя, нужно подождать
некоторое время. Длительность циклов
обновления в зависимости от частоты
тактовых импульсов:
- Код:
┌─────────┬──────────────────────┐
│частота │ длительность │
│ МГц │ цикла обновления, мс│
├─────────┼──────────────────────┤
│4.194304 │ 248 │
│1.048576 │ 248 │
│0.032768 │ 1984 │
└─────────┴──────────────────────┘
32768 1048576 4194304 СБРОС
6 DV2 частота 0 0 0 1
5 DV1 кварца 1 0 0 1
4 DV0 0 1 0 x
3 RS3 | Установка частоты на выводе
2 RS2 | SQW (23) и периода прерываний
1 RS1 | IRQ (19)
0 RS0 |
IRQ - сигнал выдачи прерывания либо по пост. частоте, либо по окончанию цикла обновления, либо от будильника.
IRQ = 1000 / SQW
SQW используется для подачи сигнала от будильника
Hапример: если частота SQW = 256 Гц ,то период равен 1000/256 = 3.9ms
- Код:
D3 D2 D1 D0 ЧАСТОТА,ГЦ ПЕРИОД,ms
0 0 1 1 8192 0.122
0 1 0 0 4096 0.244
0 1 0 1 2048 0.488
....................................
1 1 1 0 4 250
1 1 1 1 2 500
РЕГИСТР B (отдельные биты)
───────────────────────────
7 SET "1"-запрет обновления
(для установки времени).
6 PIE разрешение прерывания с периодом,
заданным в RS-битах регистра A.
Сбрасывается по Reset'у.
5 AIE разрешение прерывания от будильни-
ка. Сбрасывается по Reset'у.
4 UIE разрешение прерывания по окончанию
цикла обновления. Сбрасывается
по Reset'у.
3 SQWE разрешение выдачи информаци на вы-
ход SQW. Сбрасывается по Reset'у.
2 DM вид данных: 0 - двоично-десятичный
1 - двоичный
1 24/12 счет: 0 - по 12 часов
1 - по 24 часа
0 DSE "1" разрешает автоматический пере-
ход с летнего на зимнее время и
обратно.
Переход на летнее время осуществляется в 3ч ночи в последнее воскесенье апреля, а на зимнее в 1ч ночи в последнее воскресенье октября.
РЕГИСТР C (отдельные биты)
────────────────────────────
Все биты сбрасываются по Reset'у или при чтении регистра C.
7 IRQF флаг запроса прерывания. Устанав-
ливается в "1" при условии :
(PF and PIE) or (AF and AIE) or
(UF and UIE).
Если IRQF="1", то на выводе IRQ
(19) устанавливается "0".
6 PF устанавлвается в 1 фронтом сигнала
на выходе внутреннего делителя
частоты, выбранного в соответствии
с RS-разрядами.
5 AF устанавливается в 1 при совпадении
текущего времени и времени будиль-
ника.
4 UF устанавливается в 1 после окончания
цикла обновления.
3 =0
...
0 =0
РЕГИСТР D (отдельные биты)
────────────────────────────
7 устанавливается в лог. "0", если
питание пропадало и информация
недостоверна.
Устанавливается в "1" по Reset'у
или при чтении регистра D.
6 =0
...
0 =0
ФОРМАТ ДАHHЫХ
───────────────
Воскресенье = 1, Понед. = 2 и т.д.
Январь = 1, Февраль = 2 и т.д.
1997 = 97, 1998 = 98 и т.д.
Учитывается число дней в месяце и учитываются високосные года. Если в регистры
#00...#09 записать число в интервале
#C0...#FF - это безразличное состояние.
Т.е. если часы будильника = #FF, то он будет срабатывать каждый час.