📄 sio.lis
字号:
0196 ; RTbuf->T_disabled=1;
0196 81E0 ldi R24,1
0198 F801 movw R30,R16
019A E153 subi R30,49 ; addi 207
019C FF4F sbci R31,255
019E 8083 std z+0,R24
01A0 .dbline -2
01A0 L40:
01A0 .dbline 0 ; func end
01A0 0895 ret
01A2 .dbsym r RTbuf 16 pS[.1]
01A2 .dbend
01A2 .dbfunc e Rbuf_empty _Rbuf_empty fc
01A2 ; RTbuf -> R16,R17
.even
01A2 _Rbuf_empty::
01A2 0E940000 xcall push_gset1
01A6 .dbline -1
01A6 .dbline 252
01A6 ; }
01A6 ; /*********************************************************************************************************
01A6 ; ** 函数名称: Rbuf_empty
01A6 ; ** 功能描述: 接收缓冲区判空
01A6 ; ** 输 入:
01A6 ; ** 输出 : TRUE 空 FALSE 非空
01A6 ; ** 全局变量: 无
01A6 ; ** 调用模块:
01A6 ; ** 说明:
01A6 ; ** 注意:
01A6 ; ********************************************************************************************************/
01A6 ; unsigned char Rbuf_empty(siocirqueue *RTbuf){
01A6 .dbline 253
01A6 ; return RTbuf->R_count==0;
01A6 F801 movw R30,R16
01A8 2280 ldd R2,z+2
01AA 2220 tst R2
01AC 19F4 brne L42
01AE 41E0 ldi R20,1
01B0 50E0 ldi R21,0
01B2 02C0 xjmp L43
01B4 L42:
01B4 4427 clr R20
01B6 5527 clr R21
01B8 L43:
01B8 042F mov R16,R20
01BA .dbline -2
01BA L41:
01BA 0E940000 xcall pop_gset1
01BE .dbline 0 ; func end
01BE 0895 ret
01C0 .dbsym r RTbuf 16 pS[.1]
01C0 .dbend
01C0 .dbfunc e Tbuf_full _Tbuf_full fc
01C0 ; RTbuf -> R16,R17
.even
01C0 _Tbuf_full::
01C0 0E940000 xcall push_gset1
01C4 .dbline -1
01C4 .dbline 291
01C4 ; }
01C4 ; /*********************************************************************************************************
01C4 ; ** 函数名称: Tbuf_empty
01C4 ; ** 功能描述: 发送缓冲区判空
01C4 ; ** 输 入:
01C4 ; ** 输出 : TRUE 空 FALSE 非空
01C4 ; ** 全局变量: 无
01C4 ; ** 调用模块:
01C4 ; ** 说明:
01C4 ; ** 注意:
01C4 ; ********************************************************************************************************
01C4 ; unsigned char Tbuf_empty(void){
01C4 ; return RTbuf->T_count==0;
01C4 ; }
01C4 ; /*********************************************************************************************************
01C4 ; ** 函数名称: Rbuf_full
01C4 ; ** 功能描述: 接收缓冲区判满
01C4 ; ** 输 入:
01C4 ; ** 输出 : TRUE 满 FALSE 非满
01C4 ; ** 全局变量: 无
01C4 ; ** 调用模块:
01C4 ; ** 说明:
01C4 ; ** 注意:
01C4 ; ********************************************************************************************************
01C4 ; unsigned char Rbuf_full (void){
01C4 ; return RTbuf->R_count==RBUF_SIZE;
01C4 ; }
01C4 ; /*********************************************************************************************************
01C4 ; ** 函数名称: Tbuf_full
01C4 ; ** 功能描述: 发送缓冲区判满
01C4 ; ** 输 入:
01C4 ; ** 输出 : TRUE 满 FALSE 非满
01C4 ; ** 全局变量: 无
01C4 ; ** 调用模块:
01C4 ; ** 说明:
01C4 ; ** 注意:
01C4 ; ********************************************************************************************************/
01C4 ; unsigned char Tbuf_full(siocirqueue *RTbuf){
01C4 .dbline 292
01C4 ; return RTbuf->T_count==TBUF_SIZE;
01C4 F801 movw R30,R16
01C6 E659 subi R30,150 ; addi 106
01C8 FF4F sbci R31,255
01CA 8081 ldd R24,z+0
01CC 8436 cpi R24,100
01CE 19F4 brne L45
01D0 41E0 ldi R20,1
01D2 50E0 ldi R21,0
01D4 02C0 xjmp L46
01D6 L45:
01D6 4427 clr R20
01D8 5527 clr R21
01DA L46:
01DA 042F mov R16,R20
01DC .dbline -2
01DC L44:
01DC 0E940000 xcall pop_gset1
01E0 .dbline 0 ; func end
01E0 0895 ret
01E2 .dbsym r RTbuf 16 pS[.1]
01E2 .dbend
01E2 .dbfunc e Tbuf_putchar _Tbuf_putchar fV
01E2 ; RTbuf -> R20,R21
01E2 ; x -> R22
.even
01E2 _Tbuf_putchar::
01E2 0E940000 xcall push_gset2
01E6 A901 movw R20,R18
01E8 602F mov R22,R16
01EA .dbline -1
01EA .dbline 323
01EA ; }
01EA ; /*********************************************************************************************************
01EA ; ** 函数名称: Rbuf_putchar
01EA ; ** 功能描述: 把一个字符放入接收缓冲区
01EA ; ** 输 入:
01EA ; ** 输出 :
01EA ; ** 全局变量: 无
01EA ; ** 调用模块:
01EA ; ** 说明:
01EA ; ** 注意:
01EA ; ********************************************************************************************************
01EA ; void Rbuf_putchar (unsigned char x){
01EA ; if(!Rbuf_full()){
01EA ; REV_DIS();
01EA ; RTbuf->R_count++;
01EA ; RTbuf->R_buf[RTbuf->R_rear]=x;
01EA ; RTbuf->R_rear=(RTbuf->R_rear+1) % RBUF_SIZE;
01EA ; REV_EN();
01EA ; }
01EA ; }
01EA ; /*********************************************************************************************************
01EA ; ** 函数名称: Tbuf_putchar
01EA ; ** 功能描述: 把一个字符放入发送缓冲区
01EA ; ** 输 入:
01EA ; ** 输出 :
01EA ; ** 全局变量: 无
01EA ; ** 调用模块:
01EA ; ** 说明:
01EA ; ** 注意:
01EA ; ********************************************************************************************************/
01EA ; void Tbuf_putchar(unsigned char x,siocirqueue *RTbuf){
01EA .dbline 324
01EA ; if(!Tbuf_full(RTbuf)){
01EA 8A01 movw R16,R20
01EC E9DF xcall _Tbuf_full
01EE 0023 tst R16
01F0 09F0 breq X1
01F2 2DC0 xjmp L48
01F4 X1:
01F4 .dbline 324
01F4 .dbline 325
01F4 ; TXC_DIS();
01F4 .dbline 325
01F4 5698 cbi 0xa,6
01F6 .dbline 325
01F6 .dbline 325
01F6 .dbline 326
01F6 ; if (RTbuf->T_disabled)
01F6 FA01 movw R30,R20
01F8 E153 subi R30,49 ; addi 207
01FA FF4F sbci R31,255
01FC 2080 ldd R2,z+0
01FE 2220 tst R2
0200 39F0 breq L50
0202 .dbline 327
0202 ; {
0202 .dbline 328
0202 ; UDR0=x;
0202 6CB9 out 0xc,R22
0204 .dbline 329
0204 ; RTbuf->T_disabled=0;
0204 2224 clr R2
0206 FA01 movw R30,R20
0208 E153 subi R30,49 ; addi 207
020A FF4F sbci R31,255
020C 2082 std z+0,R2
020E .dbline 330
020E ; }
020E 1EC0 xjmp L51
0210 L50:
0210 .dbline 332
0210 ; else
0210 ; {
0210 .dbline 333
0210 ; RTbuf->T_count++;
0210 CA01 movw R24,R20
0212 8659 subi R24,150 ; offset = 106
0214 9F4F sbci R25,255
0216 FC01 movw R30,R24
0218 8081 ldd R24,z+0
021A 8F5F subi R24,255 ; addi 1
021C 8083 std z+0,R24
021E .dbline 334
021E ; RTbuf->T_buf[RTbuf->T_rear]=x;
021E CA01 movw R24,R20
0220 8559 subi R24,149 ; offset = 107
0222 9F4F sbci R25,255
0224 FA01 movw R30,R20
0226 E759 subi R30,151 ; addi 105
0228 FF4F sbci R31,255
022A E081 ldd R30,z+0
022C FF27 clr R31
022E E80F add R30,R24
0230 F91F adc R31,R25
0232 6083 std z+0,R22
0234 .dbline 335
0234 ; RTbuf->T_rear=(RTbuf->T_rear+1) % TBUF_SIZE;
0234 CA01 movw R24,R20
0236 8759 subi R24,151 ; offset = 105
0238 9F4F sbci R25,255
023A 1C01 movw R2,R24
023C 14E6 ldi R17,100
023E FC01 movw R30,R24
0240 0081 ldd R16,z+0
0242 0F5F subi R16,255 ; addi 1
0244 0E940000 xcall mod8u
0248 F101 movw R30,R2
024A 0083 std z+0,R16
024C .dbline 336
024C ; }
024C L51:
024C .dbline 337
024C .dbline 337
024C 569A sbi 0xa,6
024E .dbline 337
024E .dbline 337
024E .dbline 338
024E L48:
024E .dbline -2
024E L47:
024E 0E940000 xcall pop_gset2
0252 .dbline 0 ; func end
0252 0895 ret
0254 .dbsym r RTbuf 20 pS[.1]
0254 .dbsym r x 22 c
0254 .dbend
0254 .dbfunc e Rbuf_getchar _Rbuf_getchar fc
0254 ; Btemp -> R20
0254 ; RTbuf -> R22,R23
.even
0254 _Rbuf_getchar::
0254 0E940000 xcall push_gset2
0258 B801 movw R22,R16
025A .dbline -1
025A .dbline 376
025A ; TXC_EN();
025A ; }
025A ; }
025A ; /*********************************************************************************************************
025A ; ** 函数名称: Rbuf_getstring
025A ; ** 功能描述: 从接收缓冲区返回当前子串指针
025A ; ** 输 入:
025A ; ** 输出 : 当前子串指针
025A ; ** 全局变量: 无
025A ; ** 调用模块:
025A ; ** 说明:
025A ; ** 注意:
025A ; ********************************************************************************************************
025A ; unsigned char * Rbuf_getstring(void){
025A ; return (RTbuf->R_buf[RTbuf->R_front]);
025A ; }
025A ; /*********************************************************************************************************
025A ; ** 函数名称: Tbuf_getstring
025A ; ** 功能描述: 从发送缓冲区返回当前子串指针
025A ; ** 输 入:
025A ; ** 输出 : 当前子串指针
025A ; ** 全局变量: 无
025A ; ** 调用模块:
025A ; ** 说明:
025A ; ** 注意:
025A ; ********************************************************************************************************
025A ; unsigned char * Tbuf_getstring(void){
025A ; return (RTbuf->T_buf[RTbuf->T_front]);
025A ; }
025A ; /*********************************************************************************************************
025A ; ** 函数名称: Rbuf_putchar
025A ; ** 功能描述: 从接收缓冲区读一个字符
025A ; ** 输 入:
025A ; ** 输出 : 读字符
025A ; ** 全局变量: 无
025A ; ** 调用模块:
025A ; ** 说明:
025A ; ** 注意:
025A ; ********************************************************************************************************/
025A ; unsigned char Rbuf_getchar(siocirqueue *RTbuf){
025A .dbline 377
025A ; unsigned char Btemp=0;
025A 4427 clr R20
025C .dbline 378
025C ; if (!Rbuf_empty(RTbuf)){
025C 8B01 movw R16,R22
025E A1DF xcall _Rbuf_empty
0260 0023 tst R16
0262 C1F4 brne L53
0264 .dbline 378
0264 .dbline 379
0264 ; Btemp=RTbuf->R_buf[RTbuf->R_front];
0264 CB01 movw R24,R22
0266 0496 adiw R24,4
0268 FB01 movw R30,R22
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -