📄 keyboard.lst
字号:
HI-TECH Software PICC Macro Assembler V8.05PL1
Serial number: HCPIC-16605 Wed May 6 21:52:06 2009
Licensed to: ONE
1 processor 16F877
2 opt pw 79
3 psect __Z16605RS_,global,delta=1
4 psect strings,global,class=STRING,delta=2
5 psect const1,local,class=CONST,delta=2
6 psect text0,local,class=CODE,delta=2
7 psect text1,local,class=CODE,delta=2
8 0000
9 0000
10 0000
11 0000
12 0000
13 0000
14 0000
15 0000
16 0000
17 0000
18
19 psect __Z16605RS_
20 0190
21 0190
22
23 psect const1
24 0008 0782 addwf 2
25 0009 _KeyCode
26 0009 34EE retlw -18
27 000A 3407 retlw 7
28 000B 34ED retlw -19
29 000C 3408 retlw 8
30 000D 34EB retlw -21
31 000E 3409 retlw 9
32 000F 34E7 retlw -25
33 0010 342F retlw 47
34 0011 34DE retlw -34
35 0012 3404 retlw 4
36 0013 34DD retlw -35
37 0014 3405 retlw 5
38 0015 34DB retlw -37
39 0016 3406 retlw 6
40 0017 34D7 retlw -41
41 0018 342A retlw 42
42 0019 34BE retlw -66
43 001A 3401 retlw 1
44 001B 34BD retlw -67
45 001C 3402 retlw 2
46 001D 34BB retlw -69
47 001E 3403 retlw 3
48 001F 34B7 retlw -73
49 0020 342D retlw 45
50 0021 347E retlw 126
51 0022 3400 retlw 0
52 0023 347D retlw 125
53 0024 3443 retlw 67
54 0025 347B retlw 123
55 0026 343D retlw 61
56 0027 3477 retlw 119
57 0028 342B retlw 43
58
59 psect text0
60 0649 _scankeypad
61 ; _ScanCode assigned to ?a_scankeypad+0
62 0000 _scankeypad$ScanCode set ?a_scankeypad
63 ; _i assigned to ?a_scankeypad+1
64 0000 _scankeypad$i set ?a_scankeypad+1
65 ; _key4L assigned to ?a_scankeypad+2
66 0000 _scankeypad$key4L set ?a_scankeypad+2
67 ; _key4H assigned to ?a_scankeypad+3
68 0000 _scankeypad$key4H set ?a_scankeypad+3
69 ;keyboard.C: 24: char key4H=0,key4L=0,ScanCode=
+ 0,i=0;
70 0649 0183 clrf 3 ;select bank 0
71 064A 01AC clrf ?a_scankeypad+3
72 064B 01AB clrf ?a_scankeypad+2
73 064C 01A9 clrf ?a_scankeypad
74 064D 01AA clrf ?a_scankeypad+1
75 ;keyboard.C: 25: TRISC=0xF0;
76 064E 30F0 movlw -16
77 064F 1683 bsf 3,5
78 0650 0087 movwf 7 ;volatile
79 ;keyboard.C: 26: PORTC=0x00;
80 0651 1283 bcf 3,5
81 0652 0187 clrf 7 ;volatile
82 ;keyboard.C: 27: asm("nop");
83 0653 0000 nop ;#
84 ;keyboard.C: 28: asm("nop");
85 0654 0000 nop ;#
86 ;keyboard.C: 29: key4H=PORTC;
87 0655 0807 movf 7,w ;volatile
88 0656 00AC movwf ?a_scankeypad+3
89 ;keyboard.C: 30: key4H=key4H&0xF0;
90 0657 30F0 movlw -16
91 0658 05AC andwf ?a_scankeypad+3
92 ;keyboard.C: 31: if(key4H!=0xF0)
93 0659 082C movf ?a_scankeypad+3,w
94 065A 3AF0 xorlw -16
95 065B 1903 btfsc 3,2
96 065C 34FF retlw -1
97 ;keyboard.C: 32: {
98 065D 3014 movlw 20
99 065E 00B2 movwf ?_delay
100 065F 01B3 clrf ?_delay+1
101 0660 120A 118A 261F fcall _delay
+ 120A 118A
102 ;keyboard.C: 34: key4H=PORTC;
103 0665 0807 movf 7,w ;volatile
104 0666 00AC movwf ?a_scankeypad+3
105 ;keyboard.C: 35: if(key4H!=0xF0)
106 0667 3AF0 xorlw -16
107 0668 1903 btfsc 3,2
108 0669 34FF retlw -1
109 ;keyboard.C: 36: {
110 066A 300F movlw 15
111 066B 1683 bsf 3,5
112 066C 0087 movwf 7 ;volatile
113 ;keyboard.C: 38: PORTC=0x00;
114 066D 1283 bcf 3,5
115 066E 0187 clrf 7 ;volatile
116 ;keyboard.C: 39: asm("nop");
117 066F 0000 nop ;#
118 ;keyboard.C: 40: asm("nop");
119 0670 0000 nop ;#
120 ;keyboard.C: 41: key4L=PORTC;
121 0671 0807 movf 7,w ;volatile
122 0672 00AB movwf ?a_scankeypad+2
123 ;keyboard.C: 42: key4L=key4L&0x0F;
124 0673 300F movlw 15
125 0674 05AB andwf ?a_scankeypad+2
126 ;keyboard.C: 43: if(key4L!=0x0F)
127 0675 082B movf ?a_scankeypad+2,w
128 0676 3A0F xorlw 15
129 0677 1903 btfsc 3,2
130 0678 34FF retlw -1
131 ;keyboard.C: 44: {
132 0679 082C movf ?a_scankeypad+3,w
133 067A 072B addwf ?a_scankeypad+2,w
134 067B 00A9 movwf ?a_scankeypad
135 ;keyboard.C: 46: i=0;
136 067C 01AA clrf ?a_scankeypad+1
137 ;keyboard.C: 47: while(ScanCode!=KeyCode[i][0])
138 067D l5
139 ;keyboard.C: 50: }
140 067D 3000 movlw _KeyCode shr (0+8)
141 067E 008A movwf 10
142 067F 082A movf ?a_scankeypad+1,w
143 0680 072A addwf ?a_scankeypad+1,w
144 0681 2008 call ((_KeyCode+-1)& (0+2047))| (($)& (0+-2048
+ ))
145 0682 120A 118A pagesel $
146 0684 0629 xorwf ?a_scankeypad,w
147 0685 1903 btfsc 3,2
148 0686 2E89 goto l7
149 ;keyboard.C: 48: {
150 0687 0AAA incf ?a_scankeypad+1
151 0688 2E7D goto l5
152 0689 l7
153 ;keyboard.C: 52: return(KeyCode[i][1]);
154 0689 3000 movlw _KeyCode shr (0+8)
155 068A 008A movwf 10
156 068B 1403 bsf 3,0
157 068C 0D2A rlf ?a_scankeypad+1,w
158 068D 2008 call ((_KeyCode+-1)& (0+2047))| (($)& (0+-2048
+ ))
159 068E 120A 118A pagesel $
160 0690 0008 return
161
162 psect text1
163 0000
164 0000
165 0000
166 0000
167 0000
168 0000
169 0000
170 0000
171 0000
172 0000
173 0000
174 0000
175 0000
176 0000
177 0000
178 0000
179 0000
180 0000
181 0000
182 0000
183 0000
184 0000
185 0000
186 0000
187 0000
188 0000
189 0000
190 0000
191 0000
192 0000
193 0000
194 0000
195 0000
196 0000
197 0000
198 0000
199 0000
200 0000
201 0000
202 0000
203 0000
204 0000
205 0000
206 0000
207 0000
208 0000
209 0000
210 0000
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -