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

📄 sio.lis

📁 bootloader
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 00CE           ;       else {
 00CE                   .dbline 129
 00CE           ;               do{
 00CE           L20:
 00CE                   .dbline 130
 00CE           L21:
 00CE                   .dbline 130
 00CE           ;                       while(Com_putchar(*p,RTbuf)==0);//WDR(); //喂狗;
 00CE 9B01              movw R18,R22
 00D0 FA01              movw R30,R20
 00D2 0081              ldd R16,z+0
 00D4 D4DF              xcall _Com_putchar
 00D6 0023              tst R16
 00D8 D1F3              breq L20
 00DA                   .dbline 131
 00DA           L18:
 00DA                   .dbline 131
 00DA FA01              movw R30,R20
 00DC 8191              ld R24,Z+
 00DE AF01              movw R20,R30
 00E0 8A30              cpi R24,10
 00E2 A9F7              brne L21
 00E4                   .dbline 132
 00E4           L9:
 00E4                   .dbline -2
 00E4           L7:
 00E4 0E940000          xcall pop_gset4
 00E8                   .dbline 0 ; func end
 00E8 0895              ret
 00EA                   .dbsym r i 12 c
 00EA                   .dbsym r RTbuf 22 pS[.1]
 00EA                   .dbsym r len 10 c
 00EA                   .dbsym r p 20 pc
 00EA                   .dbend
 00EA                   .dbfunc e Com_getchar _Com_getchar fc
 00EA           ;          RTbuf -> R20,R21
 00EA           ;           mode -> R22
                        .even
 00EA           _Com_getchar::
 00EA 0E940000          xcall push_gset2
 00EE A901              movw R20,R18
 00F0 602F              mov R22,R16
 00F2                   .dbline -1
 00F2                   .dbline 147
 00F2           ;                       }while(*p++!='\n');
 00F2           ;       }
 00F2           ;       
 00F2           ; }
 00F2           ; /*********************************************************************************************************
 00F2           ; ** 函数名称: Com_getchar
 00F2           ; ** 功能描述: 从串行口输入一个字符
 00F2           ; ** 输 入: mode:0不需等待,在调用函数前检测Com_R_count的值
 00F2           ; **              1 等待数据到来
 00F2           ; ** 输出        : 读入的字符
 00F2           ; ** 全局变量: 无
 00F2           ; ** 调用模块: 
 00F2           ; ** 说明:
 00F2           ; ** 注意:
 00F2           ; ********************************************************************************************************/
 00F2           ; 
 00F2           ; uint8 Com_getchar (uint8 mode,siocirqueue *RTbuf) {
 00F2           L24:
 00F2                   .dbline 155
 00F2           L25:
 00F2                   .dbline 155
 00F2           ; //WDR(); //喂狗
 00F2           ; //    Delay(Delay_Comget,MaxLimit_Comget_Delay);
 00F2           ; //    if (mode>0) while(Com_R_count(RTbuf)==0 && !DelayOvf(Delay_Comget))//WDR(); //喂狗;
 00F2           ; //    if (DelayOvf(Delay_Comget))
 00F2           ; //        return 0;    //时间超时
 00F2           ; //    else 
 00F2           ;           
 00F2           ;               while(!Com_R_count(RTbuf));
 00F2 8A01              movw R16,R20
 00F4 35D0              xcall _Com_R_count
 00F6 0023              tst R16
 00F8 E1F3              breq L24
 00FA                   .dbline 156
 00FA           ;               return (Rbuf_getchar(RTbuf));// 串行口输入正确,返回输入的字符
 00FA 8A01              movw R16,R20
 00FC 96D0              xcall _Rbuf_getchar
 00FE                   .dbline -2
 00FE           L23:
 00FE 0E940000          xcall pop_gset2
 0102                   .dbline 0 ; func end
 0102 0895              ret
 0104                   .dbsym r RTbuf 20 pS[.1]
 0104                   .dbsym r mode 22 c
 0104                   .dbend
 0104                   .dbfunc e Com_Rbuf_Clear _Com_Rbuf_Clear fV
 0104           ;          RTbuf -> R20,R21
                        .even
 0104           _Com_Rbuf_Clear::
 0104 0E940000          xcall push_gset1
 0108 A801              movw R20,R16
 010A                   .dbline -1
 010A                   .dbline 161
 010A           ; }
 010A           ; 
 010A           ; 
 010A           ; 
 010A           ; void Com_Rbuf_Clear(siocirqueue *RTbuf){
 010A                   .dbline 162
 010A           ;       Rbuf_init(RTbuf);
 010A 8A01              movw R16,R20
 010C 2CD0              xcall _Rbuf_init
 010E                   .dbline -2
 010E           L27:
 010E 0E940000          xcall pop_gset1
 0112                   .dbline 0 ; func end
 0112 0895              ret
 0114                   .dbsym r RTbuf 20 pS[.1]
 0114                   .dbend
 0114                   .dbfunc e Com_getstring _Com_getstring fc
 0114           ;              i -> R20
 0114           ;          RTbuf -> R22,R23
 0114           ;            len -> R12
 0114           ;              p -> R10,R11
                        .even
 0114           _Com_getstring::
 0114 0E940000          xcall push_gset4
 0118 C22E              mov R12,R18
 011A 5801              movw R10,R16
 011C 6885              ldd R22,y+8
 011E 7985              ldd R23,y+9
 0120                   .dbline -1
 0120                   .dbline 167
 0120           ; }
 0120           ; 
 0120           ; 
 0120           ; 
 0120           ; uint8 Com_getstring (uint8 *p,uint8 len,siocirqueue *RTbuf) {
 0120                   .dbline 168
 0120           ; uint8 i=0;
 0120 4427              clr R20
 0122                   .dbline 170
 0122           ; //WDR(); //喂狗
 0122           ; if (len>0 ){
 0122 2224              clr R2
 0124 2C14              cp R2,R12
 0126 60F4              brsh L29
 0128                   .dbline 170
 0128                   .dbline 171
 0128 07C0              xjmp L34
 012A           L31:
 012A                   .dbline 171
 012A                   .dbline 173
 012A 9B01              movw R18,R22
 012C 01E0              ldi R16,1
 012E DDDF              xcall _Com_getchar
 0130 F501              movw R30,R10
 0132 0193              st Z+,R16
 0134 5F01              movw R10,R30
 0136                   .dbline 174
 0136           L32:
 0136                   .dbline 171
 0136 4395              inc R20
 0138           L34:
 0138                   .dbline 171
 0138           ;       for(i=0;i<len;i++){
 0138 4C15              cp R20,R12
 013A B8F3              brlo L31
 013C                   .dbline 175
 013C           ;               //WDR(); //喂狗
 013C           ;               *p++=Com_getchar(1,RTbuf);
 013C           ;               }
 013C           ;       return(len);
 013C 0C2D              mov R16,R12
 013E 0DC0              xjmp L28
 0140           L29:
 0140                   .dbline 177
 0140           ;       }
 0140           ;       else{
 0140           L35:
 0140                   .dbline 180
 0140           ;               
 0140           ;               
 0140           ;               do{
 0140                   .dbline 181
 0140           ;                               *p++=Com_getchar(1,RTbuf);
 0140 9B01              movw R18,R22
 0142 01E0              ldi R16,1
 0144 D2DF              xcall _Com_getchar
 0146 F501              movw R30,R10
 0148 0193              st Z+,R16
 014A 5F01              movw R10,R30
 014C                   .dbline 182
 014C           ;                               i++;
 014C 4395              inc R20
 014E                   .dbline 184
 014E           L36:
 014E                   .dbline 184
 014E           ;                               //WDR(); //喂狗
 014E           ;                       }while(*(p-1)!='\n');
 014E F501              movw R30,R10
 0150 3197              sbiw R30,1
 0152 8081              ldd R24,z+0
 0154 8A30              cpi R24,10
 0156 A1F7              brne L35
 0158                   .dbline 187
 0158           ; //                    *p++=Com_getchar(1,RTbuf);
 0158           ; //                    *(p)=0;
 0158           ;               return(i);
 0158 042F              mov R16,R20
 015A                   .dbline -2
 015A           L28:
 015A 0E940000          xcall pop_gset4
 015E                   .dbline 0 ; func end
 015E 0895              ret
 0160                   .dbsym r i 20 c
 0160                   .dbsym r RTbuf 22 pS[.1]
 0160                   .dbsym r len 12 c
 0160                   .dbsym r p 10 pc
 0160                   .dbend
 0160                   .dbfunc e Com_R_count _Com_R_count fc
 0160           ;          RTbuf -> R16,R17
                        .even
 0160           _Com_R_count::
 0160                   .dbline -1
 0160                   .dbline 203
 0160           ;               }
 0160           ;       
 0160           ; }
 0160           ; 
 0160           ; 
 0160           ; /*********************************************************************************************************
 0160           ; ** 函数名称: Com_R_count
 0160           ; ** 功能描述: 返回接收缓冲区字符个数函数
 0160           ; ** 输 入: 
 0160           ; ** 输出        : 字符个数
 0160           ; ** 全局变量: 无
 0160           ; ** 调用模块: 
 0160           ; ** 说明:
 0160           ; ** 注意:
 0160           ; ********************************************************************************************************/
 0160           ; uint8 Com_R_count(siocirqueue *RTbuf){
 0160                   .dbline 204
 0160           ; return RTbuf->R_count;
 0160 F801              movw R30,R16
 0162 0281              ldd R16,z+2
 0164                   .dbline -2
 0164           L38:
 0164                   .dbline 0 ; func end
 0164 0895              ret
 0166                   .dbsym r RTbuf 16 pS[.1]
 0166                   .dbend
 0166                   .dbfunc e Rbuf_init _Rbuf_init fV
 0166           ;          RTbuf -> R16,R17
                        .even
 0166           _Rbuf_init::
 0166                   .dbline -1
 0166                   .dbline 216
 0166           ; }
 0166           ; /*********************************************************************************************************
 0166           ; ** 函数名称: Rbuf_init
 0166           ; ** 功能描述: 接收缓冲区初始化
 0166           ; ** 输 入: 
 0166           ; ** 输出        : 
 0166           ; ** 全局变量: 无
 0166           ; ** 调用模块: 
 0166           ; ** 说明:
 0166           ; ** 注意:
 0166           ; ********************************************************************************************************/
 0166           ; void Rbuf_init(siocirqueue *RTbuf){
 0166                   .dbline 217
 0166           ;       RTbuf->R_front=0;
 0166 2224              clr R2
 0168 F801              movw R30,R16
 016A 2082              std z+0,R2
 016C                   .dbline 218
 016C           ;       RTbuf->R_rear=0;
 016C 2182              std z+1,R2
 016E                   .dbline 219
 016E           ;     RTbuf->R_count=0;
 016E F801              movw R30,R16
 0170 2282              std z+2,R2
 0172                   .dbline 220
 0172           ;       RTbuf->R_overflow=0;
 0172 F801              movw R30,R16
 0174 2382              std z+3,R2
 0176                   .dbline -2
 0176           L39:
 0176                   .dbline 0 ; func end
 0176 0895              ret
 0178                   .dbsym r RTbuf 16 pS[.1]
 0178                   .dbend
 0178                   .dbfunc e Tbuf_init _Tbuf_init fV
 0178           ;          RTbuf -> R16,R17
                        .even
 0178           _Tbuf_init::
 0178                   .dbline -1
 0178                   .dbline 232
 0178           ; }
 0178           ; /*********************************************************************************************************
 0178           ; ** 函数名称: Tbuf_init
 0178           ; ** 功能描述: 发送缓冲区初始化
 0178           ; ** 输 入: 
 0178           ; ** 输出        : 
 0178           ; ** 全局变量: 无
 0178           ; ** 调用模块: 
 0178           ; ** 说明:
 0178           ; ** 注意:
 0178           ; ********************************************************************************************************/
 0178           ; void Tbuf_init(siocirqueue *RTbuf){
 0178                   .dbline 233
 0178           ;       RTbuf->T_front=0;
 0178 2224              clr R2
 017A F801              movw R30,R16
 017C 2686              std z+14,R2
 017E                   .dbline 234
 017E           ;       RTbuf->T_rear=0;
 017E F801              movw R30,R16

⌨️ 快捷键说明

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