📄 key.lst
字号:
HI-TECH Software PICC Macro Assembler V8.05PL1
Serial number: HCPIC-71097 Thu Dec 20 19:08:35 2007
Licensed to: ONE
1 processor 16F877A
2 opt pw 79
3 psect __Z71097RS_,global,delta=1
4 psect text0,local,class=CODE,delta=2
5 psect text1,local,class=CODE,delta=2
6 psect text3,local,class=CODE,delta=2
7 psect text4,local,class=CODE,delta=2
8 psect rbss_0,global,class=BANK0,space=1,delta=
+ 1
9 psect temp,global,ovrld,class=BANK0,space=1,de
+ lta=1
10 0000
11 0000
12 0000
13 0000
14 0000
15 0000
16 0000
17 0000
18 0000
19 0000
20
21 psect __Z71097RS_
22 0190
23 0190
24
25 psect text0
26 168F _Key_Init
27 ;key.c: 41: ADCON1 = 0x07;
28 168F 3007 movlw 7
29 1690 1683 bsf 3,5
30 1691 1303 bcf 3,6 ;carry unused
31 1692 009F movwf 31 ;volatile
32 ;key.c: 42: TRISA = 0x00;
33 1693 0185 clrf 5 ;volatile
34 ;key.c: 43: PORTA = 0x00;
35 1694 1283 bcf 3,5
36 1695 0185 clrf 5 ;volatile
37 ;key.c: 44: }
38 1696 0008 return
39
40 psect text1
41 178A _Key_ScanMatrix
42 ; _value_key assigned to ?a_Key_ScanMatrix+0
43 0000 _Key_ScanMatrix$value_key set ?a_Key_ScanMatrix
44 ; _value_portc assigned to ?a_Key_ScanMatrix+1
45 0000 _Key_ScanMatrix$value_portc set ?a_Key_ScanMatr
+ ix+1
46 ;key.c: 56: unsigned char value_portc = 0x00;
47 178A 0183 clrf 3 ;select bank 0
48 178B 01D6 clrf ?a_Key_ScanMatrix+1
49 ;key.c: 57: unsigned char value_key = 0x00;
50 178C 01D5 clrf ?a_Key_ScanMatrix
51 ;key.c: 59: TRISC = 0xF0;
52 178D 30F0 movlw -16
53 178E 1683 bsf 3,5
54 178F 0087 movwf 7 ;volatile
55 ;key.c: 60: PORTC = 0x00;
56 1790 1283 bcf 3,5
57 1791 0187 clrf 7 ;volatile
58 ;key.c: 61: asm("nop");
59 1792 0000 nop ;#
60 ;key.c: 62: asm("nop");
61 1793 0000 nop ;#
62 ;key.c: 63: value_portc = PORTC;
63 1794 0807 movf 7,w ;volatile
64 1795 00D6 movwf ?a_Key_ScanMatrix+1
65 ;key.c: 64: value_portc &= 0xF0;
66 1796 30F0 movlw -16
67 1797 05D6 andwf ?a_Key_ScanMatrix+1
68 ;key.c: 65: value_key = value_portc;
69 1798 0856 movf ?a_Key_ScanMatrix+1,w
70 1799 00D5 movwf ?a_Key_ScanMatrix
71 ;key.c: 66: if(value_key != 0xF0)
72 179A 3AF0 xorlw -16
73 179B 1903 btfsc 3,2
74 179C 2FAA goto l5
75 ;key.c: 67: {
76 179D 300F movlw 15
77 179E 1683 bsf 3,5
78 179F 0087 movwf 7 ;volatile
79 ;key.c: 69: PORTC = 0x00;
80 17A0 1283 bcf 3,5
81 17A1 0187 clrf 7 ;volatile
82 ;key.c: 70: asm("nop");
83 17A2 0000 nop ;#
84 ;key.c: 71: asm("nop");
85 17A3 0000 nop ;#
86 ;key.c: 72: value_portc = PORTC;
87 17A4 0807 movf 7,w ;volatile
88 17A5 00D6 movwf ?a_Key_ScanMatrix+1
89 ;key.c: 73: value_portc &= 0x0F;
90 17A6 300F movlw 15
91 17A7 05D6 andwf ?a_Key_ScanMatrix+1
92 ;key.c: 74: value_key |= value_portc;
93 17A8 0856 movf ?a_Key_ScanMatrix+1,w
94 17A9 04D5 iorwf ?a_Key_ScanMatrix
95 17AA l5
96 ;key.c: 75: }
97 17AA 0855 movf ?a_Key_ScanMatrix,w
98 ;key.c: 77: }
99 17AB 0008 return
100 ;key.c: 87: KEY_PARAM Keypad_Scan(void)
101 ;key.c: 88: {
102 17AC _Keypad_Scan
103 ; _key_num assigned to ?a_Keypad_Scan+0
104 0000 _Keypad_Scan$key_num set ?a_Keypad_Scan
105 ; _key_value assigned to ?a_Keypad_Scan+1
106 0000 _Keypad_Scan$key_value set ?a_Keypad_Scan+1
107 ; _key assigned to ?a_Keypad_Scan+2
108 0000 _Keypad_Scan$key set ?a_Keypad_Scan+2
109 ;key.c: 89: unsigned char key_num = 0;
110 17AC 0183 clrf 3 ;select bank 0
111 17AD 01D0 clrf ?a_Keypad_Scan
112 ;key.c: 90: unsigned char key_value = 0;
113 17AE 01D1 clrf ?a_Keypad_Scan+1
114 ;key.c: 91: KEY_PARAM key;
115 17AF 278A fcall _Key_ScanMatrix
116 17B0 00D1 movwf ?a_Keypad_Scan+1
117 ;key.c: 94: if(key_flag == 0)
118 17B1 08A3 movf _key_flag
119 17B2 1D03 btfss 3,2
120 17B3 2FD5 goto l7
121 ;key.c: 95: {
122 17B4 0851 movf ?a_Keypad_Scan+1,w
123 17B5 3AF0 xorlw -16
124 17B6 1903 btfsc 3,2
125 17B7 2FF0 goto l15
126 ;key.c: 97: {
127 ;key.c: 99: }
128 ;key.c: 101: {
129 17B8 0851 movf ?a_Keypad_Scan+1,w
130 17B9 00A5 movwf _keypad_old
131 ;key.c: 103: Delay_10ms_ISR(2);
132 17BA 3002 movlw 2
133 17BB 00D5 movwf ?_Delay_10ms_ISR
134 17BC 01D6 clrf ?_Delay_10ms_ISR+1
135 17BD 120A 158A 2012 fcall _Delay_10ms_ISR
+ 160A 118A
136 ;key.c: 104: key_value = Key_ScanMatrix();
137 17C2 278A fcall _Key_ScanMatrix
138 17C3 00D1 movwf ?a_Keypad_Scan+1
139 ;key.c: 105: if(key_value == 0xF0)
140 17C4 3AF0 xorlw -16
141 17C5 1903 btfsc 3,2
142 17C6 2FF0 goto l15
143 ;key.c: 106: {
144 ;key.c: 108: }
145 ;key.c: 110: {
146 17C7 0851 movf ?a_Keypad_Scan+1,w
147 17C8 00A4 movwf _keypad_new
148 ;key.c: 112: if(keypad_old == keypad_new)
149 17C9 0625 xorwf _keypad_old,w
150 17CA 1D03 btfss 3,2
151 17CB 2FF0 goto l15
152 ;key.c: 113: {
153 17CC 0825 movf _keypad_old,w
154 17CD 00D0 movwf ?a_Keypad_Scan
155 ;key.c: 115: key.code = keypad_old;
156 17CE 0825 movf _keypad_old,w
157 17CF 00D2 movwf ?a_Keypad_Scan+2
158 17D0 01D3 clrf ?a_Keypad_Scan+3
159 ;key.c: 116: key.state = KEY_PRESS;
160 17D1 01D4 clrf ?a_Keypad_Scan+4
161 ;key.c: 117: key_flag = 1;
162 17D2 01A3 clrf _key_flag
163 17D3 0AA3 incf _key_flag
164 ;key.c: 118: }
165 17D4 2FF2 goto l14
166 ;key.c: 120: {
167 ;key.c: 122: }
168 ;key.c: 124: }
169 ;key.c: 125: }
170 ;key.c: 126: }
171 17D5 l7
172 ;key.c: 128: {
173 17D5 278A fcall _Key_ScanMatrix
174 17D6 00D1 movwf ?a_Keypad_Scan+1
175 ;key.c: 130: if(key_value == 0xF0)
176 17D7 3AF0 xorlw -16
177 17D8 1D03 btfss 3,2
178 17D9 2FF0 goto l15
179 ;key.c: 131: {
180 17DA 3002 movlw 2
181 17DB 00D5 movwf ?_Delay_10ms_ISR
182 17DC 01D6 clrf ?_Delay_10ms_ISR+1
183 17DD 120A 158A 2012 fcall _Delay_10ms_ISR
+ 160A 118A
184 ;key.c: 133: key_value = Key_ScanMatrix();
185 17E2 278A fcall _Key_ScanMatrix
186 17E3 00D1 movwf ?a_Keypad_Scan+1
187 ;key.c: 134: if(key_value == 0xF0)
188 17E4 3AF0 xorlw -16
189 17E5 1D03 btfss 3,2
190 17E6 2FF2 goto l14
191 ;key.c: 135: {
192 17E7 0825 movf _keypad_old,w
193 17E8 00D0 movwf ?a_Keypad_Scan
194 ;key.c: 137: key.code = keypad_old;
195 17E9 0825 movf _keypad_old,w
196 17EA 00D2 movwf ?a_Keypad_Scan+2
197 17EB 01D3 clrf ?a_Keypad_Scan+3
198 ;key.c: 138: key.state = KEY_RELEASE;
199 17EC 01D4 clrf ?a_Keypad_Scan+4
200 17ED 0AD4 incf ?a_Keypad_Scan+4
201 ;key.c: 139: key_flag = 0;
202 17EE 01A3 clrf _key_flag
203 ;key.c: 140: }
204 ;key.c: 142: else
205 17EF 2FF2 goto l14
206 17F0 l15
207 ;key.c: 143: {
208 17F0 30FF movlw -1
209 17F1 00D0 movwf ?a_Keypad_Scan
210 ;key.c: 145: }
211 17F2 l14
212 ;key.c: 146: }
213 ;key.c: 147: if(key_num == 0xFF)
214 17F2 0F50 incfsz ?a_Keypad_Scan,w
215 17F3 2FF9 goto l18
216 ;key.c: 148: {
217 17F4 30FF movlw 255
218 17F5 00D2 movwf ?a_Keypad_Scan+2
219 17F6 01D3 clrf ?a_Keypad_Scan+3
220 ;key.c: 150: key.state = KEY_RELEASE;
221 17F7 01D4 clrf ?a_Keypad_Scan+4
222 17F8 0AD4 incf ?a_Keypad_Scan+4
223 17F9 l18
224 ;key.c: 151: }
225 17F9 0852 movf ?a_Keypad_Scan+2,w
226 17FA 00F0 movwf btemp
227 17FB 0853 movf ?a_Keypad_Scan+3,w
228 17FC 00F1 movwf btemp+1
229 17FD 0854 movf ?a_Keypad_Scan+4,w
230 17FE 00F2 movwf btemp+2
231 ;key.c: 153: }
232 17FF 0008 return
233
234 psect text3
235 ;key.c: 163: KEY_VALUE Keypad_HighISR(void)
236 ;key.c: 164: {
237 0BF4 _Keypad_HighISR
238 ; _key_org_value assigned to ?a_Keypad_HighISR+
+ 0
239 0000 _Keypad_HighISR$key_org_value set ?a_Keypad_Hig
+ hISR
240 ; _key_map_value assigned to ?a_Keypad_HighISR+
+ 1
241 0000 _Keypad_HighISR$key_map_value set ?a_Keypad_Hig
+ hISR+1
242 ; _key assigned to ?a_Keypad_HighISR+2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -