📄 ssp.lst
字号:
HI-TECH Software PICC Macro Assembler V9.60
Tue Nov 04 14:20:22 2008
1 processor 16F887
2 opt pw 79
3 psect text0,local,class=CODE,delta=2
4 psect text2,local,class=CODE,delta=2
5 psect text4,local,class=CODE,delta=2
6 psect text5,local,class=CODE,delta=2
7 psect text6,local,class=CODE,delta=2
8 psect temp,global,ovrld,class=BANK0,space=1,de
+ lta=1
9 0000
10 0000
11 0000
12 0000
13 0000
14 0000
15 0000
16 0000
17 0000
18 0000
19
20 psect text0
21 0768 _SSPInit
22 ;ssp.c: 19: void SSPInit(void) {
23 0768 1683 bsf 3,5
24 0769 1303 bcf 3,6 ;carry unused
25 076A 1607 bsf 7,4
26 ;ssp.c: 25: TRISC3 = 1;
27 076B 1587 bsf 7,3
28 ;ssp.c: 28: SSPCON = 0x00;
29 076C 1283 bcf 3,5
30 076D 0194 clrf 20 ;volatile
31 ;ssp.c: 29: SSPEN = 1;
32 076E 1694 bsf 20,5
33 ;ssp.c: 30: CKP = 1;
34 076F 1614 bsf 20,4
35 ;ssp.c: 31: SSPM3 = 1;
36 0770 1594 bsf 20,3
37 ;ssp.c: 32: SSPM2 = 1;
38 0771 1514 bsf 20,2
39 ;ssp.c: 33: SSPM1 = 1;
40 0772 1494 bsf 20,1
41 ;ssp.c: 34: SSPM0 = 0;
42 0773 1014 bcf 20,0
43 ;ssp.c: 36: GCEN = 0;
44 0774 1683 bsf 3,5
45 0775 1391 bcf 17,7
46 ;ssp.c: 37: SSPADD = 0x42;
47 0776 3042 movlw 66
48 0777 0093 movwf 19
49 ;ssp.c: 38: SMP = 1;
50 0778 1794 bsf 20,7
51 ;ssp.c: 40: SSPIF = 0;
52 0779 1283 bcf 3,5
53 077A 118C bcf 12,3
54 ;ssp.c: 41: SSPIE = 1;
55 077B 1683 bsf 3,5
56 077C 158C bsf 12,3
57 ;ssp.c: 42: PEIE = 1;
58 077D 170B bsf 11,6
59 ;ssp.c: 47: Flags.SSPBF = 0;
60 077E 1283 bcf 3,5
61 077F 1023 bcf _Flags,0
62 ;ssp.c: 48: ByteCount = 0;
63 0780 01A1 clrf _ByteCount
64 ;ssp.c: 49: }
65 0781 0008 return ;W free
66
67 psect text2
68 0E5C _LoadSSPBUF
69 ;ssp.c: 151: void LoadSSPBUF(void) {
70 0E5C 0183 clrf 3 ;select bank 0
71 0E5D 0826 movf _SSPCommand,w
72 0E5E 3A03 xorlw 3
73 0E5F 1D03 btfss 3,2
74 0E60 2E77 goto l23
75 ;ssp.c: 157: if (ByteCount < 2*SSPSize) {
76 0E61 0828 movf _SSPSize,w
77 0E62 00BE movwf ?a_LoadSSPBUF
78 0E63 01BF clrf ?a_LoadSSPBUF+1
79 0E64 1003 bcf 3,0
80 0E65 0DBE rlf ?a_LoadSSPBUF
81 0E66 0DBF rlf ?a_LoadSSPBUF+1
82 0E67 0821 movf _ByteCount,w
83 0E68 00C0 movwf ?a_LoadSSPBUF+2
84 0E69 01C1 clrf ?a_LoadSSPBUF+3
85 0E6A 0841 movf ?a_LoadSSPBUF+3,w
86 0E6B 3A80 xorlw 128
87 0E6C 00FA movwf btemp
88 0E6D 083F movf ?a_LoadSSPBUF+1,w
89 0E6E 3A80 xorlw 128
90 0E6F 027A subwf btemp,w
91 0E70 1D03 btfss 3,2
92 0E71 2E74 goto u135
93 0E72 083E movf ?a_LoadSSPBUF,w
94 0E73 0240 subwf ?a_LoadSSPBUF+2,w
95 0E74 u135
96 0E74 1C03 btfss 3,0
97 0E75 2E90 goto L14
98 0E76 2EB8 goto L15
99 ;ssp.c: 161: if (ByteCount == 0)
100 ;ssp.c: 162: IndexCount = SSPIndex;
101 ;ssp.c: 165: SSPBUF = (ByteCount % 2) ? RAW[Ind
+ exCount] : RAW[IndexCount] >> 8;
102 ;ssp.c: 170: } else {
103 ;ssp.c: 174: if (ByteCount == 2*SSPSize*1)
104 ;ssp.c: 175: IndexCount = SSPIndex;
105 ;ssp.c: 178: SSPBUF = (ByteCount % 2) ? AVERAGE
+ [IndexCount] : AVERAGE[IndexCount] >> 8;
106 ;ssp.c: 180: }
107 0E77 l23
108 0E77 0826 movf _SSPCommand,w
109 0E78 3A0C xorlw 12
110 0E79 1D03 btfss 3,2
111 0E7A 2F6F goto l29
112 ;ssp.c: 185: if (ByteCount < 2*SSPSize) {
113 0E7B 0828 movf _SSPSize,w
114 0E7C 00BE movwf ?a_LoadSSPBUF
115 0E7D 01BF clrf ?a_LoadSSPBUF+1
116 0E7E 1003 bcf 3,0
117 0E7F 0DBE rlf ?a_LoadSSPBUF
118 0E80 0DBF rlf ?a_LoadSSPBUF+1
119 0E81 0821 movf _ByteCount,w
120 0E82 00C0 movwf ?a_LoadSSPBUF+2
121 0E83 01C1 clrf ?a_LoadSSPBUF+3
122 0E84 0841 movf ?a_LoadSSPBUF+3,w
123 0E85 3A80 xorlw 128
124 0E86 00FA movwf btemp
125 0E87 083F movf ?a_LoadSSPBUF+1,w
126 0E88 3A80 xorlw 128
127 0E89 027A subwf btemp,w
128 0E8A 1D03 btfss 3,2
129 0E8B 2E8E goto u215
130 0E8C 083E movf ?a_LoadSSPBUF,w
131 0E8D 0240 subwf ?a_LoadSSPBUF+2,w
132 0E8E u215
133 0E8E 1803 btfsc 3,0
134 0E8F 2EA0 goto l30
135 0E90 L14
136 ;ssp.c: 190: if (ByteCount == 0)
137 0E90 08A1 movf _ByteCount
138 0E91 1D03 btfss 3,2
139 0E92 2E95 goto l31
140 ;ssp.c: 191: IndexCount = SSPIndex;
141 0E93 0827 movf _SSPIndex,w
142 0E94 00A5 movwf _IndexCount
143 0E95 l31
144 ;ssp.c: 194: SSPBUF = (ByteCount % 2) ? RAW[Ind
+ exCount] : RAW[IndexCount] >> 8;
145 0E95 1821 btfsc _ByteCount,0
146 0E96 2E9B goto u246
147 0E97 0825 movf _IndexCount,w
148 0E98 0725 addwf _IndexCount,w
149 0E99 3E32 addlw _RAW^(0+256)
150 0E9A 2F14 goto L10
151 0E9B u246
152 0E9B 1303 bcf 3,6 ;carry unused
153 0E9C 0825 movf _IndexCount,w
154 0E9D 0725 addwf _IndexCount,w
155 0E9E 3E32 addlw _RAW^(0+256)
156 0E9F 2F20 goto L11
157 ;ssp.c: 197: } else if (ByteCount <2*SSPSize*2)
+ {
158 0EA0 l30
159 0EA0 0828 movf _SSPSize,w
160 0EA1 00BE movwf ?a_LoadSSPBUF
161 0EA2 01BF clrf ?a_LoadSSPBUF+1
162 0EA3 1003 bcf 3,0
163 0EA4 0DBE rlf ?a_LoadSSPBUF
164 0EA5 0DBF rlf ?a_LoadSSPBUF+1
165 0EA6 1003 bcf 3,0
166 0EA7 0DBE rlf ?a_LoadSSPBUF
167 0EA8 0DBF rlf ?a_LoadSSPBUF+1
168 0EA9 0821 movf _ByteCount,w
169 0EAA 00C0 movwf ?a_LoadSSPBUF+2
170 0EAB 01C1 clrf ?a_LoadSSPBUF+3
171 0EAC 0841 movf ?a_LoadSSPBUF+3,w
172 0EAD 3A80 xorlw 128
173 0EAE 00FA movwf btemp
174 0EAF 083F movf ?a_LoadSSPBUF+1,w
175 0EB0 3A80 xorlw 128
176 0EB1 027A subwf btemp,w
177 0EB2 1D03 btfss 3,2
178 0EB3 2EB6 goto u255
179 0EB4 083E movf ?a_LoadSSPBUF,w
180 0EB5 0240 subwf ?a_LoadSSPBUF+2,w
181 0EB6 u255
182 0EB6 1803 btfsc 3,0
183 0EB7 2ED6 goto l33
184 0EB8 L15
185 ;ssp.c: 202: if (ByteCount == 2*SSPSize*1)
186 0EB8 0828 movf _SSPSize,w
187 0EB9 00BE movwf ?a_LoadSSPBUF
188 0EBA 01BF clrf ?a_LoadSSPBUF+1
189 0EBB 1003 bcf 3,0
190 0EBC 0DBE rlf ?a_LoadSSPBUF
191 0EBD 0DBF rlf ?a_LoadSSPBUF+1
192 0EBE 0821 movf _ByteCount,w
193 0EBF 00C0 movwf ?a_LoadSSPBUF+2
194 0EC0 01C1 clrf ?a_LoadSSPBUF+3
195 0EC1 083F movf ?a_LoadSSPBUF+1,w
196 0EC2 0641 xorwf ?a_LoadSSPBUF+3,w
197 0EC3 1D03 btfss 3,2
198 0EC4 2EC7 goto u265
199 0EC5 083E movf ?a_LoadSSPBUF,w
200 0EC6 0640 xorwf ?a_LoadSSPBUF+2,w
201 0EC7 u265
202 0EC7 1D03 btfss 3,2
203 0EC8 2ECB goto l34
204 ;ssp.c: 203: IndexCount = SSPIndex;
205 0EC9 0827 movf _SSPIndex,w
206 0ECA 00A5 movwf _IndexCount
207 0ECB l34
208 ;ssp.c: 206: SSPBUF = (ByteCount % 2) ? AVERAGE
+ [IndexCount] : AVERAGE[IndexCount] >> 8;
209 0ECB 1821 btfsc _ByteCount,0
210 0ECC 2ED1 goto u286
211 0ECD 0825 movf _IndexCount,w
212 0ECE 0725 addwf _IndexCount,w
213 0ECF 3E10 addlw _AVERAGE^(0+256)
214 0ED0 2F14 goto L10
215 0ED1 u286
216 0ED1 1303 bcf 3,6 ;carry unused
217 0ED2 0825 movf _IndexCount,w
218 0ED3 0725 addwf _IndexCount,w
219 0ED4 3E10 addlw _AVERAGE^(0+256)
220 0ED5 2F20 goto L11
221 ;ssp.c: 209: } else if (ByteCount <2*SSPSize*3)
+ {
222 0ED6 l33
223 0ED6 3003 movlw 3
224 0ED7 00FC movwf btemp+2
225 0ED8 01FD clrf btemp+3
226 0ED9 0828 movf _SSPSize,w
227 0EDA 00FA movwf btemp
228 0EDB 01FB clrf btemp+1
229 0EDC 1003 bcf 3,0
230 0EDD 0DFA rlf btemp
231 0EDE 0DFB rlf btemp+1
232 0EDF 120A 118A 2782 fcall awmul
+ 120A 158A
233 0EE4 087E movf btemp+4,w
234 0EE5 00BE movwf ?a_LoadSSPBUF
235 0EE6 087F movf btemp+5,w
236 0EE7 00BF movwf ?a_LoadSSPBUF+1
237 0EE8 0821 movf _ByteCount,w
238 0EE9 00C0 movwf ?a_LoadSSPBUF+2
239 0EEA 01C1 clrf ?a_LoadSSPBUF+3
240 0EEB 0841 movf ?a_LoadSSPBUF+3,w
241 0EEC 3A80 xorlw 128
242 0EED 00FA movwf btemp
243 0EEE 083F movf ?a_LoadSSPBUF+1,w
244 0EEF 3A80 xorlw 128
245 0EF0 027A subwf btemp,w
246 0EF1 1D03 btfss 3,2
247 0EF2 2EF5 goto u295
248 0EF3 083E movf ?a_LoadSSPBUF,w
249 0EF4 0240 subwf ?a_LoadSSPBUF+2,w
250 0EF5 u295
251 ;ssp.c: 214: if (ByteCount == 2*SSPSize*2)
252 0EF5 1283 bcf 3,5
253 0EF6 1303 bcf 3,6 ;carry unused
254 0EF7 0828 movf _SSPSize,w
255 0EF8 00BE movwf ?a_LoadSSPBUF
256 0EF9 01BF clrf ?a_LoadSSPBUF+1
257 0EFA 1803 btfsc 3,0
258 0EFB 2F24 goto L16
259 0EFC 1003 bcf 3,0
260 0EFD 0DBE rlf ?a_LoadSSPBUF
261 0EFE 0DBF rlf ?a_LoadSSPBUF+1
262 0EFF 1003 bcf 3,0
263 0F00 0DBE rlf ?a_LoadSSPBUF
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -