Tyto stránky již nejsou udržovány. Obsah je postupně přesouván/aktualizován na adrese chytrosti.marrek.cz.
3/3
Na této stránce jsou k dispozici zdrojové soubory, které jsem vytvářel při výkladu během výuky. Nejsou to ukázkové a bezchybné zdrojové soubory. Ba naopak, jsou to pracovní neučesané verze, které vznikaly interaktivně ve výuce, často s cílem ukázat, že "takto se to nemá".
1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2 ; Soubor: klaveska.asm
3 ; Datum: 15.05.2012 08:23
4 ; Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
5 ; Licence: GNU/GPL
6 ; Úloha: ovládání klávesnice
7 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
8 KBD EQU P3
9 SEG EQU P2
10 number EQU 48d
11
12 start:
13
14 call rkeyb
15 mov P0, KBD
16 call show
17 jmp start
18
19
20 rkeyb:
21 ; budím 1. sloupec
22 mov KBD, #11111110B
23 mov A, KBD
24 K1:
25 cjne A,#11101110B, K4
26 mov number, #01
27 RET
28 K4:
29 cjne A,#11011110B, K7
30 mov number, #04
31 RET
32 K7:
33 cjne A,#10111110B, KE
34 mov number, #07
35 RET
36 KE:
37 cjne A,#01111110B, K2580
38 mov number, #0EH
39 RET
40
41 K2580: ; budím 2. sloupec
42 mov KBD, #11111101B
43 mov A, KBD
44 K2:
45 cjne A,#11101101B, K5
46 mov number, #02
47 RET
48 K5:
49 cjne A,#11011101B, K8
50 mov number, #05
51 RET
52 K8:
53 cjne A,#10111101B, K0
54 mov number, #08
55 RET
56 K0:
57 cjne A,#01111101B, K369F
58 mov number, #0H
59 RET
60
61 K369F: ; budím 3. sloupec
62 mov KBD, #11111011B
63 mov A, KBD
64 K3:
65 cjne A,#11101011B, K6
66 mov number, #03
67 RET
68 K6:
69 cjne A,#11011011B, K9
70 mov number, #06
71 RET
72 K9:
73 cjne A,#10111011B, KF
74 mov number, #09
75 RET
76 KF:
77 cjne A,#01111011B, KABCD
78 mov number, #0FH
79 RET
80 KABCD: ; třetí sloupec
81 mov KBD, #11110111B
82 mov A, KBD
83 KA:
84 cjne A,#11100111B, KB
85 mov number, #0Ah
86 RET
87 KB:
88 cjne A,#11010111B, KC
89 mov number, #0Bh
90 RET
91 KC:
92 cjne A,#10110111B, KD
93 mov number, #0Ch
94 RET
95 KD:
96 cjne A,#01110111B, KX
97 mov number, #0Dh
98 RET
99 KX:
100 mov KBD, #11111111B
101 RET
102
103
104
105 show:
106 mov DPTR,#segment
107 mov A, number; v A je číslo, které chci zobrazit
108 movc A,@A+DPTR ; číslo, které chci zobrazit najdu v tabulce a uložím opět do A
109 mov SEG, A ; zobrazím číslo vytažené z tabulky
110 RET
111
112 ;; tabulka číslic displaye
113 segment: db 11000000b ; 0
114 db 11111001b ; 1
115 db 10100100b ; 2
116 db 10110000b ; 3
117 db 10011001b ; 4
118 db 10010010b ; 5
119 db 10000010b ; 6
120 db 11111000b ; 7
121 db 10000000b ; 8
122 db 10010000b ; 9
123 db 10001000b ; A
124 db 10000011b ; B
125 db 11000110b ; C
126 db 10100001b ; D
127 db 10000110b ; E
128 db 10001110b ; F
129
130
131 END