Важная информация

User Tag List

Страница 83 из 83 ПерваяПервая ... 7980818283
Показано с 821 по 823 из 823

Тема: ЭТЮДЫ

  1. #821
    Veteran Аватар для Destr
    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,558
    Благодарностей: 704
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Reobne Посмотреть сообщение
    Заключи вызов макроса как процедуру, прибавив вначале метку а в конце RET.
    Перед началом цикла опроса сделай один лишний разок CALL, только как инициализацию, не глядя на Z.
    А в цикле вызывай CALL и смотри флаг Z.
    Предполагается юзать именно как макрос, чтоб хранить предыдущее значение прямо в теле проги, а не делать на каждый сигнал свою ячейку отдельно где-то в памяти (ведь если сигналов будет несколько - то в теле вызываемой процедуры уже нельзя хранить предыдущее состояние)

    - - - Добавлено - - -

    Кажется домучал (были уже рабочие варианты у меня, просто эмуль подвёл - ведь тестил через ALT+F3 зажав клавишу, а эмуль не сразу опрашивает оказывается, если сделать задержку - то при зажатой кнопке изначально - передний фронт не детектится, т.е. всё как надо работает)
    Код:
    	MACRO FN_KEY key	;  отрицательный фронт, key=high порт/mask (#7f04="m"), Z=1 - фронт был
    .prev		LD A,#FF
    		CPL
    		AND low key
    		LD (.mask+1),A
    		LD A,high key
    		IN A,(#FE)
    		LD (.prev+1),A
    .mask		AND 0
    	ENDM
    	
    	MACRO FP_KEY key	; положительный фронт, key=high порт/mask  (#7f04="m"), Z=1 - фронт был
    .prev		LD A,#00
    		AND low key
    		LD (.mask+1),A
    		LD A,high key
    		IN A,(#FE)
    		LD (.prev+1),A
    		CPL
    .mask		AND 0
    	ENDM
    Reobne, а формула клика (т.е. 0-1-0) как получается? Там уже надо видимо хранить 2 предыдущих значения, причём обновлять не каждый вызов, а ставить флаг что мол была клавиша отжатой, потом была нажатой, а теперь вот снова отжалась - тут-то и подымать флаг "клик!" ?
    Последний раз редактировалось Destr; 06.06.2019 в 21:23.

  2. Этот пользователь поблагодарил Destr за это полезное сообщение:
    Reobne (06.06.2019)

  3. #822
    Master
    Регистрация
    26.11.2013
    Адрес
    г. Новосибирск
    Сообщений
    627
    Благодарностей: 294
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Всё правильно!

    Но у меня есть подозрение, что ты не до конца серьёзно отнёсся к теме начальной инициализации. Тебе показалось, что я предлагаю из какой-то прихоти заменить макрос на подпрограмму. Но я предлагал оставить макрос, но заключить его в подпрограмму. И не из прихоти, а для начальной инициализации.

    Предположим в игре есть ГГ, который вот вот умрёт. Игрок давит на "R", но отпустить кнопку не успевает, ГГ умирает по игровой причине. Показывается анимация смерти, потом надпись: "Приготовся!". Игрок уже отпустил "R", готовится такой. А макрос твой помнит, что кнопка R, переиграть, была нажата. И как только начнётся главный игровой цикл, твой макрос увидит, что кнопку только что отпустили. И игрок потеряет вместо одной жизни сразу две жизни. Это плохо.

  4. #823
    Veteran Аватар для Destr
    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,558
    Благодарностей: 704
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Reobne Посмотреть сообщение
    Но у меня есть подозрение, что ты не до конца серьёзно отнёсся к теме начальной инициализации.
    Ну вначале предыдущее состояние хранилось отдельно, если будут недоразумения - то прикручу в подпрограмму.
    Хотя есть мысля попробовать опрашивать клаву так-же как опрашивает свои входы PLC
    (там в начале цикла все порты читаются в специальную таблицу и все действия уже опираются на неё. Даже если состояние сигнала сменится - всё равно с точки зрения контроллера ничего не поменялось, ну до следующего цикла, т.е когда все процедуры которые есть отработают, и всё начинается снова. Так-же кстати с выводом - можно сколько угодно щёлкать всякими битами, но физически на портах вывода сигнал поменяется только в самом конце). Вроде бы это должно помоч боротся со всякими дребезгами и сменой нажатий в неудобный момент.

Страница 83 из 83 ПерваяПервая ... 7980818283

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Этюды: как бы написать поизящнее.
    от AndTorp в разделе Программирование
    Ответов: 5
    Последнее: 17.03.2008, 01:43
  2. Ответов: 0
    Последнее: 18.08.2006, 21:40
  3. Этюды: печать шрифтом 5x5...
    от breeze в разделе Программирование
    Ответов: 12
    Последнее: 27.03.2005, 04:21

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •