Цитата Сообщение от zx_gamer Посмотреть сообщение
Не получается заставить ВВ55 мигать светодиодом. Частота Z80 3 МГц. Есть ПЗУ 32 КБайт (ОЗУ пока нет). Схема такая: Шины данных и адреса параллельно. ~CS (ПЗУ) включается когда A15 (Z80). ~WR (ПЗУ) когда ~MERQ (Z80) ИЛИ ~WR (Z80). ~RD (ПЗУ) когда ~MERQ (Z80) ИЛИ ~RD (Z80). A0 (ВВ55) когда A0 (Z80). A1 (ВВ55) когда A1 (Z80). ~RD (ВВ55) когда ~IORQ (Z80) ИЛИ ~RD (Z80). ~WR (ВВ55) когда ~IORQ (Z80) ИЛИ ~WR (Z80). RESET (ВВ55) на землю, RESET (Z80) к питанию через резистор.
не увидел здесь ~CS (BB55)


Программа такая:
Код:
begin:
   ; Configure VV55
   ld bc, 80h       ; port
   ld a, 0h           ; byte
   out (FFh), a    ; out
а что здесь делает ld bc,80h?
если я не совсем забыл мнемонику z80 - то команда out (FFh), a запишет значение из a в порт FFh - точнее в порт 00FFh (поскольку а в предыдущей команде ставится в 0) - что приведет к сбросу в 0 бита 0 порта С (который после включения питания настроен на ввод).
если хотелось настроить все порты на вывод - то надо так

Код:
   ld a, 80h           ; byte
   out (FFh), a    ; out
но при этом вывод будет в порт 80FFh - так что надо смотреть как сделана дешифрация ВВ55.



Код:
time_wait:
   ld a, 0         ; for big loop compare
   ld c, 0         ; big wait loop
   ld b, 0         ; small wait loop
small_loop:
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   nop
    nop
   djnz small_loop   ; end small wait loop
   dec c
   cp c
   jr nz, time_wait
ну и здесь как уже сказано - будет бесконечный цикл.

сделать можно так:

Код:
time_wait:
   ld c, FFh         ; big wait loop
   ld b, 0         ; small wait loop
small_loop:
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   nop
   nop
    nop
   djnz small_loop   ; end small wait loop
   dec c
   jr nz, time_wait
или например так:

Код:
 ld hl, 03FFh (подобрать по вкусу)
loop:
  dec hl
  ld a,h
  cp l
  jr nz, loop