User Tag List

Показано с 1 по 10 из 12

Тема: Сканирование клавиатуры

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    02.02.2014
    Адрес
    г. Одесса, Украина
    Сообщений
    337
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Сканирование клавиатуры

    В Вектор USER №11 в разделе ПРОГРАММИРОВАНИЕ PPI КР580ВВ55А даётся пример сканирования клавиатуры по прерыванию. Попробовал ее использовать, но она почему то пишет в экранную область, где не могу найти. На сколько я разобрался то в ячейке MSXOB+1 хранится номер байта в буфере KEYBUF нажатых кнопок.
    Видимо нужно периодически смотреть не ноль ли там. Если не ноль прочесть из буфера нажатые кнопки и обнулить эту ячейку. Может я не правильно понял как этот пример использовать. Может у кого то есть пример исходника сканирования клавиатуры.
    Код:
            ; 8080 assembler code
            .hexfile keyscan_test.hex
            .binfile keyscan_test.r0m
            ; try "hex" for downloading in hex format
            .download bin  
            .objcopy objcopy
            .postbuild echo "Gotovo!"
            ;.nodump 
    .org	$0
    jmp start
    .org	$38
    RST7:
    	jmp INTRPT
    	
    
    .org 	$100
    
    
    
    
    STKEY:	db 01000010b
    ;статус клавиатуры
    NEWKEY:	ds 9
    OLDKEY:	ds 9
    KEYBUF:	ds 16
    RPTKEY:	db 13
    INTRPT:	push h
    	push d
    	push b
    	push psw
    	lxi h,STKEY
    	mov a,m
    	xri 10000b
    	mov m,a
    	ani 10000b
    ;scan or code?
    	jz KEYWRK
    	in 3
    	sta SCRL+1
    	mvi a,8Ah
    	out 0
    	mov a,m
    	out 1
    	mov c,a
    	inx h
    	in 1
    	ori 11111b
    	mov m,a
    	mvi b,11111110b
    int1:	mov a,b
    	out 3
    	rlc
    	mov b,a
    	in 2
    	inx h
    	mov m,a
    	jc int1
    	mvi a,88h
    	out 0
    	mov a,c
    	out 1
    	mvi a,0		;10000b
    	out 2
    SCRL:	mvi a,0	;dummy
    	out 3
    intf:	pop psw
    	pop b
    	pop d
    	pop h
    	ei
    	ret
    
    
    KEYWRK:	lxi h,intf
    	push h
    	lxi h,0A6AEh
    ;'xra m, ana m
    	shld PRESS7	;@PRESS
    ;seach for new pressed keys
    	call PRESS6	;PRESS?
    	rnz
    	lxi h,RPTKEY
    	dcr m
    	rnz
    	inr m
    	lxi h,0B72Fh
    ;'cma, ora a
    	shld PRESS7	;@PRESS
    	jmp pres5
    
    
    
    
    PRESS6:	lxi h,OLDKEY+8
    	lxi d,NEWKEY+8
    	mvi b,9
    pres1:	ldax d
    	cmp m
    	dcx h
    	dcx d
    	jnz pres2
    	dcr b
    	jnz pres1
    MSXOB:	lxi h,0
    	mov a,l
    	sub h
    	rat
    pres2:	mvi a,13
    	sta RPTKEY
    	pop h	;-1 ret
    pres5:	lxi h,OLDKEY+8
    	lxi d,NEWKEY+8
    	mvi c,64
    pres3:	ldax d
    	mov b,a
    PRESS7:	nop	;ana m cma
    	nop	;xra m ora a
    	mov m,b
    	jz nokey
    ;поиск бита
    	push h
    	push d
    	push b
    	mvi b,8
    kcod1:	dcr c
    	rlc
    	cc putbuf
    	dcr b
    	jnz kcod1
    	pop b
    	pop d
    	pop h
    nokey:	dcx h
    	dcx d
    	mov a,c
    	sui 8
    	mov c,a
    	jnz pres3
    ;else mode keys
    	ldax d
    	cmp m
    	rz
    	mov m,a
    	dcx d
    	cpi 10011111b
    ;US+SS?
    	mvi b,00100000b
    ;CAPS switch
    	jz ccod1
    	cpi 01011111b
    ;RUS+SS?
    	mvi b,01000000b
    ;QWER/JCUK switch
    	jz ccod1
    	ani 10000000b
    ;RUS?
    	rnz
    	mvi b,10001000b
    ;Rus & lamp switch
    ccod1:	ldax d
    	xra b
    	stax d
    	rat
    
    
    putbuf:	push psw
    ;push or don't modify BC!
    	lxi h,KBUF
    	push h
    	mov a,c
    	cpi 63	;space?
    	mvi a,32
    	rz
    ;... ... etc.
    	mov a,c
    	cpi 11h	;1
    	mvi a,33
    	rz	
    	mov a,c
    	cpi 07h	;DOWN
    	mvi a,07h
    	rz	
    	mov a,c
    	cpi 05h	;UP
    	mvi a,05h
    	rz	
    
    
    
    KBUF:	mov e,a
    	lhld MSXOB+1	;Загрузить в HL содержимое ячейки с адресом a16
    	mov a,l
    	inr a		;инкрементировать A
    	ani 15		;Логическое И непосредственные данные с A
    	cmp h		;Сравнить A с H
    	jz kbuf1
    	sta MSXOB+1	;Записать A по адресу a16
    	mvi a,1
    	out 0
    	mov a,l
    	lxi h,KEYBUF
    	add l
    	mov l,a
    	jnc adhla
    	inr h
    adhla:	xra a
    	out 0
    	mov m,e
    kbuf1:	pop psw
    	rat
    
    
    start:
    
    	ei
    
    
    cicl:
    	nop
    	jmp cicl
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	keyscan_test.jpg 
Просмотров:	236 
Размер:	19.3 Кб 
ID:	50759  

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

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

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

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

Похожие темы

  1. Различное сканирование для Spectrum
    от SysCat в разделе Несортированное железо
    Ответов: 22
    Последнее: 14.09.2020, 21:26
  2. Распайка клавиатуры
    от razer в разделе Устройства ввода
    Ответов: 5
    Последнее: 02.06.2013, 21:16
  3. Куплю клавиатуры
    от voin в разделе Барахолка (архив)
    Ответов: 0
    Последнее: 24.12.2011, 22:13
  4. Книги на сканирование
    от NUK в разделе Пресса
    Ответов: 14
    Последнее: 12.09.2009, 18:19

Ваши права

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