📄 sio.lis
字号:
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 + -