Вход

Просмотр полной версии : написал прогу под проц, что не так ?



SergSV
12.10.2008, 19:16
написал прогу под Z80.программа нужна для опроса кнопок, расчета данных и вывода всего на светодиодн6ые матрицы.Залил прогу в ПЗУ но не хочет записывать данные в порт. В самом начале запретил прерывая. Может их надо разрешить перед тем как выводить в порт ? как правильно сделать ?

caro
12.10.2008, 19:30
написал прогу под Z80.программа нужна для опроса кнопок, расчета данных и вывода всего на светодиодн6ые матрицы.Залил прогу в ПЗУ но не хочет записывать данные в порт. В самом начале запретил прерывая. Может их надо разрешить перед тем как выводить в порт ? как правильно сделать ?Прерывания не влияют на работу с портами.
Для начала не плохо бы показать схему того устройства, для которого пишется программа.
Порты у тебя адресуются как порты (выборка сигналом /IORQ) или как ячейки памяти (выборка сигналом /MREQ)?
Ну и текст программы тоже не плохо увидеть.
А так ставить вопрос практически бесполезно, для ответа не достаточно информации.

balu_dark
12.10.2008, 20:03
кстати а стэк ты не забыл проинить в область РАМа куда нибудь? это самая распространенная ошибка если ты новичек. как правило много людей наступают на эти грабли! а без инита стэка вызов подпрограмм просто будет вешать машинку или отправлять по неизвестному адресу но как правило не по адресу возврата из процедуры.

SergSV
12.10.2008, 21:56
стек прописал.схемку могу накидать но в P-CADe.
обращение к потрам происходит так
LD C,251
LD A,'00000001'
OUT (C),A

balu_dark
12.10.2008, 22:08
ну а В ты иниш нулем то? почему бы не использовать IN A,(251) и OUT (251),A

SergSV
12.10.2008, 22:38
в В ноль не прописывал. а вот что-то я тормознул, надо так переделать )

boo_boo
12.10.2008, 22:44
ага, дешифрация порта (который 251) каким образом происходит? исправный Z80 не может не выдавать на ША/ШД что положено. или прочий хардвер это не ловит, или чтото передавливает значения на шинах, или все изначально не работает, вроде нет других вариантов...

SergSV
14.10.2008, 20:20
часть схемы выкладываю в формате 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

проверь с вот таким дополнением

SergSV
14.10.2008, 23:05
смотрел частотомером на выходе IORQ . то есть то нет сигнала. попробую с задержкой сделать

GriV
08.11.2008, 08:59
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 не появляется больше... А всё остальное точно работает? Тактовый генератор и т.д.?