Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- LJMP START
- ORG 100H
- START:
- LCALL LCD_CLR
- LOOP_NO:
- MOV R0,#CSKB0 ;adres klawiszy 0..7
- MOVX A,@R0 ;odczyt stanu klawiszy
- CPL A
- JNZ KEY_YES ;czy klawisz naciœniêty
- INC R0 ;adres klawiszy 8..
- MOVX A,@R0
- CPL A
- JZ LOOP_NO ;czy klawisz naciœniêty
- KEY_YES: ;eliminacja drgañ styków
- MOV R2,A ;zapamiêtaj stan klawiszy
- MOV A,#10
- LCALL DELAY_MS
- MOVX A,@R0 ;odczyt stanu klawiszy
- CPL A
- XRL A,R2 ;porównaj z zapamiêtanym
- JNZ LOOP_NO ;czy stan stabilny
- ;-klawisz nadal wciœniêty
- MOV A,R2 ;stan klawiszy do A
- ;ustaw wstêpn¹ wartoœæ R2
- ;zale¿nie od zestawu klawiszy
- MOV R2,#07H ;klawisze 8..
- CJNE R0,#CSKB0,LOOP_NR
- MOV R2,#0FFH ;klawisze 0..7
- LOOP_NR: ;przekodowanie klawisza
- INC R2 ;kod 1z8 na numer 0..15
- RRC A
- JNC LOOP_NR
- MOV A,R2 ;przekodowanie klawisza
- ACALL KEY_CODE ;na kody LCD za pomoc¹
- ;procedury koduj¹cej
- LCALL WRITE_DATA ;wypisz kod klawisza
- LOOP_YES:
- MOV R0,#CSKB0 ;adres klawiszy 0..7
- MOVX A,@R0 ;odczyt stanu klawiszy
- CPL A
- JNZ LOOP_YES ;czy klawisz zwolniony
- INC R0 ;adres klawiszy 8..
- MOVX A,@R0 ;odczyt stanu klawiszy
- CPL A
- JNZ LOOP_YES ;czy klawisz zwolniony
- SJMP LOOP_NO ;powrót do oczekiwania
- ;na naciœniêcie klawisza
- ;**************************************
- ;Podprogram zamieniaj¹cy numery klawiszy
- ;0..15 na kody znaków LCD
- KEY_CODE:
- INC A ;pomiñ rozkaz RET
- MOVC A,@A+PC ;pobierz kod
- RET
- DB 30H,31H,32H ;0,1,2
- DB 33H,34H,35H ;3,4,5
- DB 36H,37H,38H ;6,7,8
- DB 39H,3CH,3EH ;9,<,>
- DB 5EH,76H,7FH ;^,v,Esc
- DB 0AEH ;Enter
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement