📄 8880.lis
字号:
023A 9991 ld R25,y+
023C 8991 ld R24,y+
023E 3991 ld R19,y+
0240 2991 ld R18,y+
0242 1991 ld R17,y+
0244 0991 ld R16,y+
0246 9990 ld R9,y+
0248 8990 ld R8,y+
024A 7990 ld R7,y+
024C 6990 ld R6,y+
024E 5990 ld R5,y+
0250 4990 ld R4,y+
0252 3990 ld R3,y+
0254 2990 ld R2,y+
0256 1990 ld R1,y+
0258 0990 ld R0,y+
025A 1895 reti
025C .dbsym r c 10 c
025C .dbend
025C .dbfunc e M8880_Send _M8880_Send fV
025C ; c -> R20,R21
025C ; count -> R10
025C ; x -> R12,R13
.even
025C _M8880_Send::
025C 00D0 rcall push_xgset303C
025E A22E mov R10,R18
0260 6801 movw R12,R16
0262 .dbline -1
0262 .dbline 137
0262 ; }
0262 ; void M8880_Send(char *x,char count)
0262 ; {
0262 .dbline 139
0262 ; char *c;
0262 ; if (count==0) return;
0262 AA20 tst R10
0264 09F4 brne L54
0266 X9:
0266 .dbline 139
0266 1CC0 rjmp L50
0268 L53:
0268 .dbline 140
0268 ; while(M8880_State.Sending);
0268 L54:
0268 .dbline 140
0268 20900A00 lds R2,_M8880_State+10
026C 2220 tst R2
026E E1F7 brne L53
0270 X10:
0270 .dbline 141
0270 ; M8880_State.SendCount=count;
0270 A0920000 sts _M8880_State,R10
0274 .dbline 142
0274 ; M8880_State.Sending=-1;
0274 8FEF ldi R24,255
0276 80930A00 sts _M8880_State+10,R24
027A .dbline 143
027A ; c=sendbuf;
027A 40E0 ldi R20,<_sendbuf
027C 50E0 ldi R21,>_sendbuf
027E .dbline 144
027E ; for (;count>0;count--){
027E 07C0 rjmp L61
0280 L58:
0280 .dbline 144
0280 .dbline 145
0280 ; *c++=*x++;
0280 F601 movw R30,R12
0282 DA01 movw R26,R20
0284 0190 ld R0,Z+
0286 6F01 movw R12,R30
0288 0D92 st X+,R0
028A AD01 movw R20,R26
028C .dbline 146
028C ; }
028C L59:
028C .dbline 144
028C AA94 dec R10
028E L61:
028E .dbline 144
028E 80E0 ldi R24,0
0290 8A15 cp R24,R10
0292 B0F3 brlo L58
0294 X11:
0294 .dbline 147
0294 ; M8880_WriteChar(*M8880_State.CurSend);
0294 E0910100 lds R30,_M8880_State+1
0298 F0910200 lds R31,_M8880_State+1+1
029C 0081 ldd R16,z+0
029E B0DE rcall _M8880_WriteChar
02A0 .dbline -2
02A0 L50:
02A0 .dbline 0 ; func end
02A0 00C0 rjmp pop_xgset303C
02A2 .dbsym r c 20 pc
02A2 .dbsym r count 10 c
02A2 .dbsym r x 12 pc
02A2 .dbend
.area data(ram, con, rel)
0010 .dbfile E:\Shuaihu\AVR\8880\8880.c
0010 _number::
0010 .blkb 2
.area idata
0010 0A01 .byte 10,1
.area data(ram, con, rel)
0012 .dbfile E:\Shuaihu\AVR\8880\8880.c
0012 .blkb 2
.area idata
0012 0203 .byte 2,3
.area data(ram, con, rel)
0014 .dbfile E:\Shuaihu\AVR\8880\8880.c
0014 .blkb 2
.area idata
0014 0405 .byte 4,5
.area data(ram, con, rel)
0016 .dbfile E:\Shuaihu\AVR\8880\8880.c
0016 .blkb 2
.area idata
0016 0607 .byte 6,7
.area data(ram, con, rel)
0018 .dbfile E:\Shuaihu\AVR\8880\8880.c
0018 .blkb 2
.area idata
0018 0809 .byte 8,9
.area data(ram, con, rel)
001A .dbfile E:\Shuaihu\AVR\8880\8880.c
001A .dbsym e number _number A[10:10]c
.area text(rom, con, rel)
02A2 .dbfile E:\Shuaihu\AVR\8880\8880.c
02A2 .dbfunc e M8880_Dial _M8880_Dial fV
02A2 ; c -> R20,R21
02A2 ; x -> R10,R11
.even
02A2 _M8880_Dial::
02A2 00D0 rcall push_xgset300C
02A4 5801 movw R10,R16
02A6 .dbline -1
02A6 .dbline 151
02A6 ; }
02A6 ; char number[]={10,1,2,3,4,5,6,7,8,9};
02A6 ; void M8880_Dial(char *x)
02A6 ; {
02A6 .dbline 153
02A6 ; char *c;
02A6 ; if (*x==0) return;
02A6 F501 movw R30,R10
02A8 2080 ldd R2,z+0
02AA 2220 tst R2
02AC 09F4 brne L67
02AE X12:
02AE .dbline 153
02AE 29C0 rjmp L63
02B0 L66:
02B0 .dbline 154
02B0 ; while(M8880_State.Sending);
02B0 L67:
02B0 .dbline 154
02B0 20900A00 lds R2,_M8880_State+10
02B4 2220 tst R2
02B6 E1F7 brne L66
02B8 X13:
02B8 .dbline 155
02B8 ; M8880_State.SendCount=0;
02B8 2224 clr R2
02BA 20920000 sts _M8880_State,R2
02BE .dbline 156
02BE ; M8880_State.Sending=-1;
02BE 8FEF ldi R24,255
02C0 80930A00 sts _M8880_State+10,R24
02C4 .dbline 157
02C4 ; c=sendbuf;
02C4 40E0 ldi R20,<_sendbuf
02C6 50E0 ldi R21,>_sendbuf
02C8 12C0 rjmp L72
02CA L71:
02CA .dbline 158
02CA ; while(*x){
02CA .dbline 159
02CA ; *c++=number[(*x++)-'0'];
02CA 80E0 ldi R24,<_number-48
02CC 90E0 ldi R25,>_number-48
02CE F501 movw R30,R10
02D0 2190 ld R2,Z+
02D2 5F01 movw R10,R30
02D4 E22D mov R30,R2
02D6 FF27 clr R31
02D8 E80F add R30,R24
02DA F91F adc R31,R25
02DC 2080 ldd R2,z+0
02DE FA01 movw R30,R20
02E0 2192 st Z+,R2
02E2 AF01 movw R20,R30
02E4 .dbline 160
02E4 ; M8880_State.SendCount++;
02E4 80910000 lds R24,_M8880_State
02E8 8F5F subi R24,255 ; addi 1
02EA 80930000 sts _M8880_State,R24
02EE .dbline 161
02EE ; }
02EE L72:
02EE .dbline 158
02EE F501 movw R30,R10
02F0 2080 ldd R2,z+0
02F2 2220 tst R2
02F4 51F7 brne L71
02F6 X14:
02F6 .dbline 162
02F6 ; M8880_WriteChar(*M8880_State.CurSend);
02F6 E0910100 lds R30,_M8880_State+1
02FA F0910200 lds R31,_M8880_State+1+1
02FE 0081 ldd R16,z+0
0300 7FDE rcall _M8880_WriteChar
0302 .dbline -2
0302 L63:
0302 .dbline 0 ; func end
0302 00C0 rjmp pop_xgset300C
0304 .dbsym r c 20 pc
0304 .dbsym r x 10 pc
0304 .dbend
0304 .dbfunc e M8880_Recv _M8880_Recv fV
0304 ; count -> R18
0304 ; buf -> R16,R17
.even
0304 _M8880_Recv::
0304 .dbline -1
0304 .dbline 165
0304 ; }
0304 ; void M8880_Recv(char* buf,char count)
0304 ; {
0304 .dbline 166
0304 ; if (count==0) return;
0304 2223 tst R18
0306 09F4 brne L77
0308 X15:
0308 .dbline 166
0308 37C0 rjmp L76
030A L77:
030A .dbline 167
030A ; M8880_State.RecvIntCount=count;
030A 20930300 sts _M8880_State+3,R18
030E L80:
030E .dbline 168
030E ; while(M8880_State.RecvStartPtr==M8880_State.RecvEndPtr);
030E L81:
030E .dbline 168
030E 20900600 lds R2,_M8880_State+6
0312 30900700 lds R3,_M8880_State+6+1
0316 40900400 lds R4,_M8880_State+4
031A 50900500 lds R5,_M8880_State+4+1
031E 4214 cp R4,R2
0320 5304 cpc R5,R3
0322 A9F3 breq L80
0324 X16:
0324 1BC0 rjmp L86
0326 L85:
0326 .dbline 169
0326 ; while(M8880_State.RecvStartPtr!=M8880_State.RecvEndPtr){
0326 .dbline 170
0326 ; *buf++=*M8880_State.RecvStartPtr++;
0326 E0910400 lds R30,_M8880_State+4
032A F0910500 lds R31,_M8880_State+4+1
032E D801 movw R26,R16
0330 0190 ld R0,Z+
0332 F0930500 sts _M8880_State+4+1,R31
0336 E0930400 sts _M8880_State+4,R30
033A 0D92 st X+,R0
033C 8D01 movw R16,R26
033E .dbline 171
033E ; if (M8880_State.RecvStartPtr==recvbuf+M8880_RECV_BUFSIZE)
033E 80E0 ldi R24,<_recvbuf+50
0340 90E0 ldi R25,>_recvbuf+50
0342 20900400 lds R2,_M8880_State+4
0346 30900500 lds R3,_M8880_State+4+1
034A 2816 cp R2,R24
034C 3906 cpc R3,R25
034E 31F4 brne L91
0350 X17:
0350 .dbline 172
0350 ; M8880_State.RecvStartPtr=recvbuf;
0350 80E0 ldi R24,<_recvbuf
0352 90E0 ldi R25,>_recvbuf
0354 90930500 sts _M8880_State+4+1,R25
0358 80930400 sts _M8880_State+4,R24
035C L91:
035C .dbline 173
035C ; }
035C L86:
035C .dbline 169
035C 20900600 lds R2,_M8880_State+6
0360 30900700 lds R3,_M8880_State+6+1
0364 40900400 lds R4,_M8880_State+4
0368 50900500 lds R5,_M8880_State+4+1
036C 4214 cp R4,R2
036E 5304 cpc R5,R3
0370 D1F6 brne L85
0372 X18:
0372 .dbline 174
0372 ; *buf=0;
0372 2224 clr R2
0374 F801 movw R30,R16
0376 2082 std z+0,R2
0378 .dbline -2
0378 L76:
0378 .dbline 0 ; func end
0378 0895 ret
037A .dbsym r count 18 c
037A .dbsym r buf 16 pc
037A .dbend
037A .dbfunc e M8880_CPDial _M8880_CPDial fV
037A ; c -> R20
037A ; x -> R12,R13
037A ; buf -> R10,R11
.even
037A _M8880_CPDial::
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -