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

📄 sio.lis

📁 bootloader
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 0180 2786              std z+15,R2
 0182                   .dbline 235
 0182           ;     RTbuf->T_count=0;
 0182 F801              movw R30,R16
 0184 208A              std z+16,R2
 0186                   .dbline 236
 0186           ;       RTbuf->T_disabled=1;
 0186 81E0              ldi R24,1
 0188 F801              movw R30,R16
 018A 838F              std z+27,R24
 018C                   .dbline -2
 018C           L40:
 018C                   .dbline 0 ; func end
 018C 0895              ret
 018E                   .dbsym r RTbuf 16 pS[.1]
 018E                   .dbend
 018E                   .dbfunc e Rbuf_empty _Rbuf_empty fc
 018E           ;          RTbuf -> R16,R17
                        .even
 018E           _Rbuf_empty::
 018E 0E940000          xcall push_gset1
 0192                   .dbline -1
 0192                   .dbline 248
 0192           ;       }
 0192           ; /*********************************************************************************************************
 0192           ; ** 函数名称: Rbuf_empty
 0192           ; ** 功能描述: 接收缓冲区判空
 0192           ; ** 输 入: 
 0192           ; ** 输出        :  TRUE 空 FALSE 非空
 0192           ; ** 全局变量: 无
 0192           ; ** 调用模块: 
 0192           ; ** 说明:
 0192           ; ** 注意:
 0192           ; ********************************************************************************************************/
 0192           ; uint8 Rbuf_empty(siocirqueue *RTbuf){
 0192                   .dbline 249
 0192           ;       return RTbuf->R_count==0;
 0192 F801              movw R30,R16
 0194 2280              ldd R2,z+2
 0196 2220              tst R2
 0198 19F4              brne L42
 019A 41E0              ldi R20,1
 019C 50E0              ldi R21,0
 019E 02C0              xjmp L43
 01A0           L42:
 01A0 4427              clr R20
 01A2 5527              clr R21
 01A4           L43:
 01A4 042F              mov R16,R20
 01A6                   .dbline -2
 01A6           L41:
 01A6 0E940000          xcall pop_gset1
 01AA                   .dbline 0 ; func end
 01AA 0895              ret
 01AC                   .dbsym r RTbuf 16 pS[.1]
 01AC                   .dbend
 01AC                   .dbfunc e Tbuf_full _Tbuf_full fc
 01AC           ;          RTbuf -> R16,R17
                        .even
 01AC           _Tbuf_full::
 01AC 0E940000          xcall push_gset1
 01B0                   .dbline -1
 01B0                   .dbline 287
 01B0           ;       }
 01B0           ; /*********************************************************************************************************
 01B0           ; ** 函数名称: Tbuf_empty
 01B0           ; ** 功能描述: 发送缓冲区判空
 01B0           ; ** 输 入: 
 01B0           ; ** 输出        :  TRUE 空 FALSE 非空
 01B0           ; ** 全局变量: 无
 01B0           ; ** 调用模块: 
 01B0           ; ** 说明:
 01B0           ; ** 注意:
 01B0           ; ********************************************************************************************************
 01B0           ; uint8 Tbuf_empty(void){
 01B0           ;       return RTbuf->T_count==0;
 01B0           ;       }
 01B0           ; /*********************************************************************************************************
 01B0           ; ** 函数名称: Rbuf_full
 01B0           ; ** 功能描述: 接收缓冲区判满
 01B0           ; ** 输 入: 
 01B0           ; ** 输出        :  TRUE 满 FALSE 非满
 01B0           ; ** 全局变量: 无
 01B0           ; ** 调用模块: 
 01B0           ; ** 说明:
 01B0           ; ** 注意:
 01B0           ; ********************************************************************************************************
 01B0           ; uint8 Rbuf_full (void){
 01B0           ;       return RTbuf->R_count==RBUF_SIZE;
 01B0           ;       }
 01B0           ; /*********************************************************************************************************
 01B0           ; ** 函数名称: Tbuf_full
 01B0           ; ** 功能描述: 发送缓冲区判满
 01B0           ; ** 输 入: 
 01B0           ; ** 输出        :  TRUE 满 FALSE 非满
 01B0           ; ** 全局变量: 无
 01B0           ; ** 调用模块: 
 01B0           ; ** 说明:
 01B0           ; ** 注意:
 01B0           ; ********************************************************************************************************/
 01B0           ; uint8 Tbuf_full(siocirqueue *RTbuf){
 01B0                   .dbline 288
 01B0           ;       return RTbuf->T_count==TBUF_SIZE;
 01B0 F801              movw R30,R16
 01B2 8089              ldd R24,z+16
 01B4 8A30              cpi R24,10
 01B6 19F4              brne L45
 01B8 41E0              ldi R20,1
 01BA 50E0              ldi R21,0
 01BC 02C0              xjmp L46
 01BE           L45:
 01BE 4427              clr R20
 01C0 5527              clr R21
 01C2           L46:
 01C2 042F              mov R16,R20
 01C4                   .dbline -2
 01C4           L44:
 01C4 0E940000          xcall pop_gset1
 01C8                   .dbline 0 ; func end
 01C8 0895              ret
 01CA                   .dbsym r RTbuf 16 pS[.1]
 01CA                   .dbend
 01CA                   .dbfunc e Tbuf_putchar _Tbuf_putchar fV
 01CA           ;          RTbuf -> R20,R21
 01CA           ;              x -> R22
                        .even
 01CA           _Tbuf_putchar::
 01CA 0E940000          xcall push_gset2
 01CE A901              movw R20,R18
 01D0 602F              mov R22,R16
 01D2                   .dbline -1
 01D2                   .dbline 319
 01D2           ;       }
 01D2           ; /*********************************************************************************************************
 01D2           ; ** 函数名称: Rbuf_putchar
 01D2           ; ** 功能描述: 把一个字符放入接收缓冲区
 01D2           ; ** 输 入: 
 01D2           ; ** 输出        :  
 01D2           ; ** 全局变量: 无
 01D2           ; ** 调用模块: 
 01D2           ; ** 说明:
 01D2           ; ** 注意:
 01D2           ; ********************************************************************************************************
 01D2           ; void  Rbuf_putchar (uint8 x){
 01D2           ;       if(!Rbuf_full()){
 01D2           ;               REV_DIS();
 01D2           ;               RTbuf->R_count++;
 01D2           ;               RTbuf->R_buf[RTbuf->R_rear]=x;
 01D2           ;               RTbuf->R_rear=(RTbuf->R_rear+1) % RBUF_SIZE;
 01D2           ;               REV_EN();
 01D2           ;       }
 01D2           ; }
 01D2           ; /*********************************************************************************************************
 01D2           ; ** 函数名称: Tbuf_putchar
 01D2           ; ** 功能描述: 把一个字符放入发送缓冲区
 01D2           ; ** 输 入: 
 01D2           ; ** 输出        :  
 01D2           ; ** 全局变量: 无
 01D2           ; ** 调用模块: 
 01D2           ; ** 说明:
 01D2           ; ** 注意:
 01D2           ; ********************************************************************************************************/
 01D2           ; void Tbuf_putchar(uint8 x,siocirqueue *RTbuf){
 01D2                   .dbline 320
 01D2           ;       if(!Tbuf_full(RTbuf)){
 01D2 8A01              movw R16,R20
 01D4 EBDF              xcall _Tbuf_full
 01D6 0023              tst R16
 01D8 09F0              breq X1
 01DA 24C0              xjmp L48
 01DC           X1:
 01DC                   .dbline 320
 01DC                   .dbline 321
 01DC           ;               TXC_DIS();
 01DC                   .dbline 321
 01DC 5698              cbi 0xa,6
 01DE                   .dbline 321
 01DE                   .dbline 321
 01DE                   .dbline 322
 01DE           ;               if (RTbuf->T_disabled)
 01DE FA01              movw R30,R20
 01E0 238C              ldd R2,z+27
 01E2 2220              tst R2
 01E4 29F0              breq L50
 01E6                   .dbline 323
 01E6           ;                       {
 01E6                   .dbline 324
 01E6           ;                       UDR0=x;
 01E6 6CB9              out 0xc,R22
 01E8                   .dbline 325
 01E8           ;                       RTbuf->T_disabled=0;
 01E8 2224              clr R2
 01EA FA01              movw R30,R20
 01EC 238E              std z+27,R2
 01EE                   .dbline 326
 01EE           ;                       }
 01EE 19C0              xjmp L51
 01F0           L50:
 01F0                   .dbline 328
 01F0           ;               else
 01F0           ;                       {
 01F0                   .dbline 329
 01F0           ;                       RTbuf->T_count++;
 01F0 CA01              movw R24,R20
 01F2 4096              adiw R24,16
 01F4 FC01              movw R30,R24
 01F6 8081              ldd R24,z+0
 01F8 8F5F              subi R24,255    ; addi 1
 01FA 8083              std z+0,R24
 01FC                   .dbline 330
 01FC           ;                       RTbuf->T_buf[RTbuf->T_rear]=x;
 01FC CA01              movw R24,R20
 01FE 4196              adiw R24,17
 0200 FA01              movw R30,R20
 0202 E785              ldd R30,z+15
 0204 FF27              clr R31
 0206 E80F              add R30,R24
 0208 F91F              adc R31,R25
 020A 6083              std z+0,R22
 020C                   .dbline 331
 020C           ;                       RTbuf->T_rear=(RTbuf->T_rear+1) % TBUF_SIZE;
 020C CA01              movw R24,R20
 020E 0F96              adiw R24,15
 0210 1C01              movw R2,R24
 0212 1AE0              ldi R17,10
 0214 FC01              movw R30,R24
 0216 0081              ldd R16,z+0
 0218 0F5F              subi R16,255    ; addi 1
 021A 0E940000          xcall mod8u
 021E F101              movw R30,R2
 0220 0083              std z+0,R16
 0222                   .dbline 332
 0222           ;                       }
 0222           L51:
 0222                   .dbline 333
 0222                   .dbline 333
 0222 569A              sbi 0xa,6
 0224                   .dbline 333
 0224                   .dbline 333
 0224                   .dbline 334
 0224           L48:
 0224                   .dbline -2
 0224           L47:
 0224 0E940000          xcall pop_gset2
 0228                   .dbline 0 ; func end
 0228 0895              ret
 022A                   .dbsym r RTbuf 20 pS[.1]
 022A                   .dbsym r x 22 c
 022A                   .dbend
 022A                   .dbfunc e Rbuf_getchar _Rbuf_getchar fc
 022A           ;          Btemp -> R20
 022A           ;          RTbuf -> R22,R23
                        .even
 022A           _Rbuf_getchar::
 022A 0E940000          xcall push_gset2
 022E B801              movw R22,R16
 0230                   .dbline -1
 0230                   .dbline 372
 0230           ;               TXC_EN();
 0230           ;       }
 0230           ; }
 0230           ; /*********************************************************************************************************
 0230           ; ** 函数名称: Rbuf_getstring
 0230           ; ** 功能描述: 从接收缓冲区返回当前子串指针
 0230           ; ** 输 入: 
 0230           ; ** 输出        :  当前子串指针
 0230           ; ** 全局变量: 无
 0230           ; ** 调用模块: 
 0230           ; ** 说明:
 0230           ; ** 注意:
 0230           ; ********************************************************************************************************
 0230           ; uint8 * Rbuf_getstring(void){
 0230           ;       return (RTbuf->R_buf[RTbuf->R_front]);
 0230           ; }
 0230           ; /*********************************************************************************************************
 0230           ; ** 函数名称: Tbuf_getstring
 0230           ; ** 功能描述: 从发送缓冲区返回当前子串指针
 0230           ; ** 输 入: 
 0230           ; ** 输出        :  当前子串指针
 0230           ; ** 全局变量: 无
 0230           ; ** 调用模块: 
 0230           ; ** 说明:
 0230           ; ** 注意:
 0230           ; ********************************************************************************************************
 0230           ; uint8 * Tbuf_getstring(void){
 0230           ;       return (RTbuf->T_buf[RTbuf->T_front]);
 0230           ; }
 0230           ; /*********************************************************************************************************
 0230           ; ** 函数名称: Rbuf_putchar
 0230           ; ** 功能描述: 从接收缓冲区读一个字符
 0230           ; ** 输 入: 
 0230           ; ** 输出        :  读字符
 0230           ; ** 全局变量: 无
 0230           ; ** 调用模块: 
 0230           ; ** 说明:
 0230           ; ** 注意:
 0230           ; ********************************************************************************************************/
 0230           ; uint8 Rbuf_getchar(siocirqueue *RTbuf){
 0230                   .dbline 373
 0230           ;       uint8 Btemp=0;
 0230 4427              clr R20
 0232                   .dbline 374
 0232           ;       if (!Rbuf_empty(RTbuf)){
 0232 8B01              movw R16,R22
 0234 ACDF              xcall _Rbuf_empty
 0236 0023              tst R16
 0238 C1F4              brne L53
 023A                   .dbline 374
 023A                   .dbline 375
 023A           ;               Btemp=RTbuf->R_buf[RTbuf->R_front];
 023A CB01              movw R24,R22
 023C 0496              adiw R24,4

⌨️ 快捷键说明

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