Просмотр полной версии : написал прогу под проц, что не так ?
написал прогу под Z80.программа нужна для опроса кнопок, расчета данных и вывода всего на светодиодн6ые матрицы.Залил прогу в ПЗУ но не хочет записывать данные в порт. В самом начале запретил прерывая. Может их надо разрешить перед тем как выводить в порт ? как правильно сделать ?
написал прогу под Z80.программа нужна для опроса кнопок, расчета данных и вывода всего на светодиодн6ые матрицы.Залил прогу в ПЗУ но не хочет записывать данные в порт. В самом начале запретил прерывая. Может их надо разрешить перед тем как выводить в порт ? как правильно сделать ?Прерывания не влияют на работу с портами.
Для начала не плохо бы показать схему того устройства, для которого пишется программа.
Порты у тебя адресуются как порты (выборка сигналом /IORQ) или как ячейки памяти (выборка сигналом /MREQ)?
Ну и текст программы тоже не плохо увидеть.
А так ставить вопрос практически бесполезно, для ответа не достаточно информации.
balu_dark
12.10.2008, 20:03
кстати а стэк ты не забыл проинить в область РАМа куда нибудь? это самая распространенная ошибка если ты новичек. как правило много людей наступают на эти грабли! а без инита стэка вызов подпрограмм просто будет вешать машинку или отправлять по неизвестному адресу но как правило не по адресу возврата из процедуры.
стек прописал.схемку могу накидать но в P-CADe.
обращение к потрам происходит так
LD C,251
LD A,'00000001'
OUT (C),A
balu_dark
12.10.2008, 22:08
ну а В ты иниш нулем то? почему бы не использовать IN A,(251) и OUT (251),A
в В ноль не прописывал. а вот что-то я тормознул, надо так переделать )
ага, дешифрация порта (который 251) каким образом происходит? исправный Z80 не может не выдавать на ША/ШД что положено. или прочий хардвер это не ловит, или чтото передавливает значения на шинах, или все изначально не работает, вроде нет других вариантов...
часть схемы выкладываю в формате P-CAD и в обычном формате
А писал самою простую прогу что бы проверить вывод в порты и что-то результата нет.Пробывал два проца. Процы рабочии100 %.При нажатии на кнопку "СБРОС" сигнад IORQ появляется и пропадает .Где я мог ошибиться?
10_______ DI
20________LD SP,#8050
30_MET___LD A,'01010101'
40________OUT (252),A
50________OUT (254),A
60________LD A,"10101010'
70________OUT (252),A
80________OUT (254),A
90________JR MET
balu_dark
14.10.2008, 22:42
тебя больно бить или как? ты небось по светодиодам смотриш вывод идет или нет? а ты не прикидывал скорость смены состояний порта при работе твоей проги?
по твоему коду состояния будут меняться эдак килогерц под 200. причем даже переход из состояния в состояние - заметить чем то кроме осцилографа - не реально! наши глазки - все что более 25 герц - не различают! пробуй такую доработку проги:
10_______ DI
20________LD SP,#8050
30_MET___LD A,'01010101'
40________OUT (252),A
50________OUT (254),A
LD BC,20000
loop DEC BC
CMP BC,0 ;тут не уверен так как на зетке очень давно на асме не писал
JNZ loop
60________LD A,"10101010'
70________OUT (252),A
80________OUT (254),A
LD BC,20000
loop1 DEC BC
CMP BC,0 ;тут не уверен так как на зетке очень давно на асме не писал
JNZ loop1
90________JR MET
проверь с вот таким дополнением
смотрел частотомером на выходе IORQ . то есть то нет сигнала. попробую с задержкой сделать
10_______ DI
20________LD SP,#8050
30_MET___LD A,'01010101'
40________OUT (252),A
50________OUT (254),A
51________LD BC,20000
52_loop___DEC BC
53________LD A,B
54________OR C
55________JR NZ,loop
60________LD A,"10101010'
70________OUT (252),A
80________OUT (254),A
81________LD BC,20000
82_loop1__DEC BC
83________LD A,B
84________OR C
85________JR NZ,loop1
90________JR MET[/quote]
Добавлено через 2 минуты
Если IORQ не появляется больше... А всё остальное точно работает? Тактовый генератор и т.д.?
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot