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

📄 serial.lis

📁 使用8880实现DTMF通信及拨号的程序.
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 00E2           ;        if (*com_status.send_cur_ptr==0 || com_status.send_cur_ptr==send_buf+SEND_BUFLEN){
 00E2 2080              ldd R2,z+0
 00E4 2220              tst R2
 00E6 29F0              breq L30
 00E8           X5:
 00E8 80E0              ldi R24,<_send_buf+50
 00EA 90E0              ldi R25,>_send_buf+50
 00EC E817              cp R30,R24
 00EE F907              cpc R31,R25
 00F0 21F4              brne L25
 00F2           X6:
 00F2           L30:
 00F2                   .dbline 54
 00F2                   .dbline 55
 00F2           ;               UCSRB&=~0x20;
 00F2 5598              cbi 0xa,5
 00F4                   .dbline 56
 00F4           ;               com_status.sending=0;
 00F4 2224              clr R2
 00F6 20926C00          sts _com_status+8,R2
 00FA                   .dbline 57
 00FA           ;        }
 00FA           L25:
 00FA                   .dbline -2
 00FA           L23:
 00FA                   .dbline 0 ; func end
 00FA 2990              ld R2,y+
 00FC 2FBE              out 0x3f,R2
 00FE F991              ld R31,y+
 0100 E991              ld R30,y+
 0102 9991              ld R25,y+
 0104 8991              ld R24,y+
 0106 2990              ld R2,y+
 0108 1895              reti
 010A                   .dbend
 010A                   .dbfunc e serial_send _serial_send fV
 010A           ;            buf -> R10,R11
                        .even
 010A           _serial_send::
 010A AA92              st -y,R10
 010C BA92              st -y,R11
 010E 5801              movw R10,R16
 0110                   .dbline -1
 0110                   .dbline 60
 0110           ; }
 0110           ; void serial_send(char *buf)
 0110           ; {
 0110                   .dbline 61
 0110           ;        if (*buf==0) return;
 0110 F501              movw R30,R10
 0112 2080              ldd R2,z+0
 0114 2220              tst R2
 0116 09F4              brne L36
 0118           X7:
 0118                   .dbline 61
 0118 12C0              rjmp L32
 011A           L35:
 011A                   .dbline 62
 011A           ;        while (com_status.sending);
 011A           L36:
 011A                   .dbline 62
 011A 20906C00          lds R2,_com_status+8
 011E 2220              tst R2
 0120 E1F7              brne L35
 0122           X8:
 0122                   .dbline 63
 0122           ;        strcpy(send_buf,buf);
 0122 9501              movw R18,R10
 0124 00E0              ldi R16,<_send_buf
 0126 10E0              ldi R17,>_send_buf
 0128 00D0              rcall _strcpy
 012A                   .dbline 64
 012A           ;        com_status.send_cur_ptr=send_buf;
 012A 80E0              ldi R24,<_send_buf
 012C 90E0              ldi R25,>_send_buf
 012E 90936B00          sts _com_status+6+1,R25
 0132 80936A00          sts _com_status+6,R24
 0136                   .dbline 65
 0136           ;        com_status.sending=-1;
 0136 8FEF              ldi R24,255
 0138 80936C00          sts _com_status+8,R24
 013C                   .dbline 66
 013C           ;        UCSRB|=0x20;
 013C 559A              sbi 0xa,5
 013E                   .dbline -2
 013E           L32:
 013E                   .dbline 0 ; func end
 013E B990              ld R11,y+
 0140 A990              ld R10,y+
 0142 0895              ret
 0144                   .dbsym r buf 10 pc
 0144                   .dbend
 0144                   .dbfunc e serial_recv _serial_recv fi
 0144           ;            len -> R20,R21
 0144           ;         buflen -> R18,R19
 0144           ;            buf -> R16,R17
                        .even
 0144           _serial_recv::
 0144 4A93              st -y,R20
 0146 5A93              st -y,R21
 0148                   .dbline -1
 0148                   .dbline 69
 0148           ; }
 0148           ; unsigned int serial_recv(char *buf,unsigned int buflen)
 0148           ; {
 0148                   .dbline 70
 0148           ;        unsigned int len=0;
 0148 4427              clr R20
 014A 5527              clr R21
 014C                   .dbline 71
 014C           ;        if (com_status.read_start_ptr==com_status.read_end_ptr) return 0;
 014C 20906600          lds R2,_com_status+2
 0150 30906700          lds R3,_com_status+2+1
 0154 40906400          lds R4,_com_status
 0158 50906500          lds R5,_com_status+1
 015C 4214              cp R4,R2
 015E 5304              cpc R5,R3
 0160 01F5              brne L46
 0162           X9:
 0162                   .dbline 71
 0162 0027              clr R16
 0164 1127              clr R17
 0166 36C0              rjmp L41
 0168           L45:
 0168                   .dbline 72
 0168           ;        while(com_status.read_start_ptr!=com_status.read_end_ptr && len<buflen-1){
 0168                   .dbline 73
 0168           ;               *buf++=*com_status.read_start_ptr++;
 0168 E0916400          lds R30,_com_status
 016C F0916500          lds R31,_com_status+1
 0170 D801              movw R26,R16
 0172 0190              ld R0,Z+
 0174 F0936500          sts _com_status+1,R31
 0178 E0936400          sts _com_status,R30
 017C 0D92              st X+,R0
 017E 8D01              movw R16,R26
 0180                   .dbline 74
 0180           ;               len++;
 0180 4F5F              subi R20,255  ; offset = 1
 0182 5F4F              sbci R21,255
 0184                   .dbline 75
 0184           ;               if (com_status.read_start_ptr==recv_buf+RECV_BUFLEN)
 0184 80E0              ldi R24,<_recv_buf+50
 0186 90E0              ldi R25,>_recv_buf+50
 0188 20906400          lds R2,_com_status
 018C 30906500          lds R3,_com_status+1
 0190 2816              cp R2,R24
 0192 3906              cpc R3,R25
 0194 31F4              brne L49
 0196           X10:
 0196                   .dbline 76
 0196           ;                  com_status.read_start_ptr=recv_buf;
 0196 80E0              ldi R24,<_recv_buf
 0198 90E0              ldi R25,>_recv_buf
 019A 90936500          sts _com_status+1,R25
 019E 80936400          sts _com_status,R24
 01A2           L49:
 01A2                   .dbline 77
 01A2           ;        }
 01A2           L46:
 01A2                   .dbline 72
 01A2 20906600          lds R2,_com_status+2
 01A6 30906700          lds R3,_com_status+2+1
 01AA 40906400          lds R4,_com_status
 01AE 50906500          lds R5,_com_status+1
 01B2 4214              cp R4,R2
 01B4 5304              cpc R5,R3
 01B6 29F0              breq L52
 01B8           X11:
 01B8 C901              movw R24,R18
 01BA 0197              sbiw R24,1
 01BC 4817              cp R20,R24
 01BE 5907              cpc R21,R25
 01C0 98F2              brlo L45
 01C2           X12:
 01C2           L52:
 01C2                   .dbline 78
 01C2           ;        *(--buf)=0;
 01C2 C801              movw R24,R16
 01C4 0197              sbiw R24,1
 01C6 2224              clr R2
 01C8 FC01              movw R30,R24
 01CA 2082              std z+0,R2
 01CC                   .dbline 79
 01CC           ;        return --len;
 01CC CA01              movw R24,R20
 01CE 0197              sbiw R24,1
 01D0 AC01              movw R20,R24
 01D2 8C01              movw R16,R24
 01D4                   .dbline -2
 01D4           L41:
 01D4                   .dbline 0 ; func end
 01D4 5991              ld R21,y+
 01D6 4991              ld R20,y+
 01D8 0895              ret
 01DA                   .dbsym r len 20 i
 01DA                   .dbsym r buflen 18 i
 01DA                   .dbsym r buf 16 pc
 01DA                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile E:\Shuaihu\AVR\8880\serial.c
 0000           _send_buf::
 0000                   .blkb 50
 0032                   .dbsym e send_buf _send_buf A[50:50]c
 0032           _recv_buf::
 0032                   .blkb 50
 0064                   .dbsym e recv_buf _recv_buf A[50:50]c
 0064           _com_status::
 0064                   .blkb 9
 006D                   .dbstruct 0 9 tagSERIAL_PORT_STATUS
 006D                   .dbfield 0 read_start_ptr pc
 006D                   .dbfield 2 read_end_ptr pc
 006D                   .dbfield 4 recv_cur_ptr pc
 006D                   .dbfield 6 send_cur_ptr pc
 006D                   .dbfield 8 sending c
 006D                   .dbend
 006D                   .dbsym e com_status _com_status S[tagSERIAL_PORT_STATUS]
 006D           ; }
 006D           ; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -