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

📄 sio.lis

📁 ATMEGA128的PCF8536驱动程序
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 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 + -