-
- ? dima83
- 14.12.2017 12:19
? a214 - 14.12.2017 08:26
простите за вопрос, но вы подобное уже собирали?
- ? dima83
- 14.12.2017 10:13
а как вы думаете, навскидку, какую разность покажет таймер при прохождении импульса 9 миллисекунд (при самом минимальном рабочем периоде)?
- ? dima83
- 14.12.2017 10:08
кто то скажет, что можно обойтись 2мя ячейками т.к. они 16ти разрядные и в них можно загнать сразу по 2 байта информации... да можно, но как потом их вывести на экран через рекурсивную подпрограмму? это нужно будет брать старший байт потом младшиий...по маске...геморой
- ? dima83
- 14.12.2017 09:24
вот примерный алгоритм моей программы:
НАЧАЛО
ждать перехода порта из лог 0 в лог 1 (т.е. пошел сигнал от пульта)
запустить таймер и ждать окончания сигнала
дождаться окончания сигнала и вычислить разность таймера (запускающий импульс 9 миллисекунд прошел)
если полученная разность таймера находится в предалах 50% - 150% от номинала, то считать импульс достоверным
запустить таймер и ждать окончания паузы (4.5 миллисекунд) - иначе перейти в НАЧАЛО
если полученная разность таймера находится в предалах 50% - 150% от номинала, то считать импульс достоверным - иначе перейти в НАЧАЛО
¤
открыть цикл M=4
открыть цикл N=8
¤
МЕТКА: запустить таймер и ждать прохождения обрамляющего импульса (лог 1 - лог 0) длительностью 560 мкс
ждать прохождения паузы (это и есть младший бит первого байта) и считать его длинну (1 мс либо 2 мс)
во время прохождения очередного обрамляющего импульса вычитанием среднего значения из полученной разности таймера определить значение принятого бита)
¤
записать полученный бит в свободный регистр ОЗУ (выборка регистра в циклу M) в разряд (7)
сдвинуть все разряды регистра вправо
ждать окончания обрамляющего исмпульса: МЕТКА
¤
закрыть цикл N
закрыть цикл M
¤
это фрагмент заполняющий 4 регистра 4мя байтами информации
- ? dima83
- 14.12.2017 08:17
В пике нет ЕМТ драйверов, к которым нужно обращаться только через определенные регистры. Если ты вместо R0 написал R1 то все, кранты!
- ? dima83
- 14.12.2017 07:18
На бейсике я написал прогу для сканирования пульта за пару часов (с учетом своих давно забытых школьных знаний). Она работала, но тайминги опроса порта были слишком долгими. Сам то я до этого изучал программирование на пик-контроллерах, там все намного проще: сколько тебе нужно регистров - столько объявляй и используй. 8ми битное слово. удобное средство отладки (симулятор). возможности полноценного редактирования. Сейчас у меня столько вопросов: с какого адреса можно объявлять массивы данных, что они не перекрывали программу (ведь в бк прога распологается в озу, а в пике в памяти программ)? каким образом можно реализовать побитную запись в регистры массива (в пике это делала команда bcf (установить бит в 0) или bsf (установить бит в 1). Можно ли исмпользовать другие оперативные регистры вместо R1, R2, ... ну, например, для организации влооженных циклов что бы не запутаться...
- ? dima83
- 13.12.2017 16:21
и еще был косяк - не надо было трогать R1 числа отображались неверно
- ? dima83
- 13.12.2017 16:10
вот ошибка:
Z$: MOV (R1)+,RO (вместо 0 написал О)
- ? dima83
- 13.12.2017 16:03
вот:
¤
EMT 14
¤
MOV #20.,R2 MOV #2000,R1
¤
Z$: MOV (R1)+,RO
CALL OU1 SOB R2,Z$ RTS PC
¤
¤
OU1: MOV R0,-(SP) ;
DEC R1 ;
CLR R0 ;
1A: INC R0 ;
SUB #12,@SP ;
BGE 1A ;
ADD #12,@SP ;
DEC R0 ;
BEQ 2A ;
JSR PC,OU1 ;
;
;
2A: MOV (SP)+,R0 ; ADD #60,R0 ;
EMT 16 ;
RTS PC
.END
- ? dima83
- 13.12.2017 14:25
я тоже ставил метку и все равно не пашет!
¤
MOV #20.,R2
MOV #2000,R1
Z: MOV (R1)+,R0
CALL AU1
SOB R2,Z
¤
или дело в знаке доллара? на бк его вроде нет?
- ? dima83
- 13.12.2017 13:48
ну хорошо, а если далее будет идти такой вот блок:
¤
MOV #20.,R2
MOV #2000,R1
MOV (R1)+,R0 CALL AU1
SOB R2,.-2
¤
почему выкидывает в монитор не отработав данный фрагмент?
- ? dima83
- 13.12.2017 13:34
да я вот и читаю...все номера скачал
- ? dima83
- 13.12.2017 13:15
MOV #20.,R2
MOV #2000,R1
Q: CLR (R1)
INC R1
SOB R2,Q
¤
предполагается очистить 20 ячеек начиная с адреса 2000
- ? dima83
- 13.12.2017 11:03
т.е. отдельно работает, но в цикле не получается очистить последовательно ячейки друг за другом
- ? dima83
- 13.12.2017 10:51
вот пример:
mov #1.,2000 ; записываем число 1 в ячейку 2000
mov 2000,R0 ; пересылаем в R0
call OU1 ; на пп. вывода десятичного числа
¤
выдает 1024
- ? dima83
- 13.12.2017 10:45
хорошо буду разбираться
сейчас пытаюсь очистить ячейки памяти под массив данных (нужно 4 байта) не получается. Т.е. очищаю в цикле командой CLR, потом пытаюсь считать ячейку а там совсем не то, что надо.
- ? dima83
- 13.12.2017 08:13
тему записи и считывания файлов я поднимал в другой ветеке
скажите почему при зацикливании проги в турбо 8 и остановке ее клавишей стоп прога вылетает в монитор?
- ? dima83
- 13.12.2017 07:55
В любом случае в эмуляторе прогу мы пишем, что бы потом ее перенести на реальную бк.
На счет драйвера я с вами полностью согласен! Но пусть это будут доступные микросхемы I2C памяти, которые можно зашить "на коленках" череp JDM-программатор.
В журнале Персональный Компьютер БК 1996 №1 публиковался материал по данному вопросу (Модуль хранения программ для БК). Хотелось бы перенести это на современную элементную базу...
- ? dima83
- 10.12.2017 16:05
я не говрю о симуляторе. просто писать не удобно!
- ? dima83
- 10.12.2017 14:48
да я уже разобрался. но уж больно сложная схемотехника, прошивки... как то по-проще бы надо, что бы собрать самому можно было. Ассемблер запускать, небольшие файлы сохранять...
- ? dima83
- 10.12.2017 14:21
Это ужас какой то! Ни кому в голову не приходило написать нормальный отладчик в полноценном windows-окне с возможностью использования буфера обмена и т.д. Как, например, в ассемблере Microchip/
- ? dima83
- 10.12.2017 12:44
я в том плане, что если образ занят я с него файл взять не смогу и записать тоже
- ? dima83
- 10.12.2017 12:31
ерунда получается: если у меня эмулятор запущен в системе дос, то обратиться к образу, в который записывается файл я уже не могу. не удобно(
- ? dima83
- 10.12.2017 12:22
т.е. Disk Error #6
- ? dima83
- 10.12.2017 12:22
не получается - Disk Error 16
- ? dima83
- 10.12.2017 11:15
Вроде рзобрался и с турбо 2 и с турбо 8. И возник еще один вопрос возможно ли каким нибудь образом через эмулятор загонять готовые листинги (что бы их не набивать) в асемблеровский редактор?
- ? dima83
- 10.12.2017 09:50
кроме того там платы подключается к флоппи дисководам и винчестерам! Зачем??? Когда можно все заточить под флеш-карту, которая вместит в себя 100 таких дисководов и винчестеров)
- ? dima83
- 10.12.2017 09:44
с магнитофона очень медленная загрузка. денег не жалко, просто наши деньги отличаются от ваших и не конвертируются
- ? dima83
- 10.12.2017 09:19
Чет не плучается найти. Дайте ссылку!
- ? dima83
- 09.12.2017 10:50
скажите пожалуйста где можно найти Micro+ v2.00 для бк0010-01?
- ? dima83
- 09.12.2017 07:14
Еще небольшая поправка. На самом деле "конца импульсов" не будет, т.к. после передачи всех 4х байт следуют специальные импульсы означающие повтор команды.
- ? Dima83
- 09.12.2017 07:12
Вот спасибо! Буду разбираться. Единственно, что хотел уточнить в MIRAGE вроде метки ставить нельзя т.е. нужно напрямую обращаться к адресам комманд?
- ? dima83
- 06.12.2017 16:08
? MM если нет возможности использовать аппаратные прерывания порта, то пусть опрашивает его программно в цикле
- ? dima83
- 06.12.2017 15:49
т.е. 01
- ? dima83
- 06.12.2017 15:48
MM у меня нету бк11м! у меня бк0010-10
- ? dima83
- 06.12.2017 15:35
MM
На БК-0010-01 от порта прерывания вроде по irq2?, но как его использовать...(
- ? dima83
- 06.12.2017 15:34
И вообще тут кто нибудь может написать фрагмент проги постоянно опрашивающей порт, запускающей таймер по изменению логики на порту, ждущей вновь изменения логики, подсчитывающей разность таймера и выводящей эту разность на экран?)
- ? dima83
- 06.12.2017 15:31
т.е. обрамляющие их вспышки
- ? dima83
- 06.12.2017 15:31
a214
560 мкс это так для примера (именно стколько времени идет вспышка кодирующие импульсы).
- ? dima83
- 06.12.2017 15:09
Ну хорошо. Давайте такой пример: запущена программа на ассемблере. На порту лог.0. Возникает имульс из лог.0 в лог.1 длительностью 560 мкс, потом снова уходит в лог.0. На мониторе указывается разность таймера. ПРИМЕРНО ЧЕМУ ОНА БУДЕТ РОВНА при самом простом построении алгоритма?
- ? dima83
- 06.12.2017 14:42
подобную прогу я написал для pic, она сканирует коды пульта и записывает из во влеш-память. Но, согласитесь, видеть эти коды на экране монитора нимного нагляднее, чем читать их из памяти)
- ? dima83
- 06.12.2017 14:36
a214
http://bk-mg.narod.ru/
- ? dima83
- 06.12.2017 14:35
Измерять длинну инмпульсов я планирую таймером, а именно по изменению логики на порту запускать таймер, далее по изменению логики копировать содержимое таймера в регистр и вычислять разность... Так например в бейсике при длительности запускающего импульса 9мс таймер отработал 209 (наименьшее значение рабочего периода). А вот импульсы 560 мкс эта прога уже не поймает.
- ? dima83
- 06.12.2017 13:44
Если вы не против я формализую задачу, которую хочу осуществить на БК (для этого собственно я ее и реанимировал). Необходимо подключить к одному из разрядов порта ввода ик-приемник и подавать на него команды с пульта дистанционного управления. Задача БК принять каждый байт согласно протоколу NEC и вывести результат на дисплей. Примерно в таком формате:
"ПЕРВЫЙ БАЙТ - 0"
"ВТОРОЙ БАЙТ - 255"
...
"ЧЕТВЕРТЫЙ БАЙТ - 100"
¤
байты можно выводить в десятичном виде
- ? dima83
- 06.12.2017 13:35
a214
Я нашел эту программу, но она не работает. По крайней мере у меня. После запуска указания имен входного и выходного файлов программа преравается выходом в бейсик с сообщением об ошибке.
- ? dima83
- 06.12.2017 13:01
кстати сохраненный в мираже файл можно можно запускать в мониторе) а если его загрузить из под бейсика как оно будет работать?
- ? dima83
- 06.12.2017 12:58
Пардон, был косяк - набрал "MIRAGE", а нужно было "Mirage". Но потом возник другой косяк - попытался загрузить ассемблированный фай (уже в мираж) тот же в wav формате и тут эмулятор завис наглухо.
- ? dima83
- 06.12.2017 12:48
я говорю о ROM-диске. при чем тут звук?
- ? dima83
- 06.12.2017 10:46
Если не в тему то прошу прощения. Сейчас пытался перегнать бинарник Mirage в wav файл для загрузки на бкшке. Файл вроде сконвертировался, но не хочет запускаться в эмуляторе. В чем дело?
- ? dima83
- 06.12.2017 10:43
Понимаете в чем дело. Бк досталась мне совершенно случайно с битой памятью. Я ее восстановил. Решил использовать для сканирования nec протокола с пультов ИК ДУ. Подключил ик-детектор к портуЮ написал программу в бейсике, но временные задержки на выполнение настолько большие, что она не ловит тайминги сигналов с порта. Вот и решил попробовать на ассемблере. Сам то я пишу под пики.В принципе что то общее есть.
-
«
1 | ... | 4 | 5 | 6 | 7 | 8 | »
?