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