⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 8880.lis

📁 使用8880实现DTMF通信及拨号的程序.
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 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 + -