Получилось 2 мксек.Код:;========================================================== ; На линиях PORTD фиксируются изменения состояния адресов ;4 PCINT2 PORTD in YL,PIND ;+1 адрес сканирования ld scanFF,Y ;+2 скан код из текущего буфера out PORTB,scanFF ;+1 выдать в порт данных ;=8 тактов => 1 Мксек при 8 МГц ; Регистровая пара Y по умолчанию указывает на 256 байтный буфер, ; в котором сформирована таблица с кодами нажатых клавиш ; Это в случае матрицы 8*8 ; ---- ; Для дополнительных 3 бит нужно будет сформировать еще один буфер на 256 байт ; Для ускорения работы сделаем его со старшим байтом адреса, отличающимся ; на 1 бит от первого буфера, например 0200h и 0300h sbr YH,1<<0 ;+1 -> Y=03xx ; теперь прочитаем код нажатых клавиш из нового буфера ld scanFF,Y ;+2 ; а вот теперь надо обязательно запомнить регистр статуса МК in tempS,SREG ;+1 сохранить СТАТУС in port_C,PINC ;+1 текущее состояние порта C andi port_C,0xF8 ;+1 обнулить 3 мл. бита or scanFF,port_C ;+1 добавим 3 бита из буфера клавиш out PORTC,scanFF ;+1 ;= 16 тактов => 2 мксек ; завершили выдачу во второй порт клавиатуры cbr YH,1<<0 ; Y=02xxh out SREG,tempS ; восстановить СТАТУС reti ;+4 возврат ;**********************************************************
Посмотри, если есть возможность, сколько времени в ОРИОНЕ занимает чтение порта клавиатуры.
Если больше 2 мксек до момента фиксации данных, то может и пройдет.
На спектруме, при тактовой частоте 3.5 Мгц реакция должна быть не более 0.7 мксек.
А у Ориона по моему тактовая = 2 МГц если я не ошибаюсь?




Ответить с цитированием