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

📄 sio.lis

📁 bootloader
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 023E FB01              movw R30,R22
 0240 E081              ldd R30,z+0
 0242 FF27              clr R31
 0244 E80F              add R30,R24
 0246 F91F              adc R31,R25
 0248 4081              ldd R20,z+0
 024A                   .dbline 376
 024A           ;               REV_DIS();
 024A                   .dbline 376
 024A 5798              cbi 0xa,7
 024C                   .dbline 376
 024C                   .dbline 376
 024C                   .dbline 377
 024C           ;               RTbuf->R_count--;
 024C CB01              movw R24,R22
 024E 0296              adiw R24,2
 0250 FC01              movw R30,R24
 0252 8081              ldd R24,z+0
 0254 8150              subi R24,1
 0256 8083              std z+0,R24
 0258                   .dbline 378
 0258           ;               RTbuf->R_front=(RTbuf->R_front+1) % RBUF_SIZE;
 0258 1AE0              ldi R17,10
 025A FB01              movw R30,R22
 025C 0081              ldd R16,z+0
 025E 0F5F              subi R16,255    ; addi 1
 0260 0E940000          xcall mod8u
 0264 FB01              movw R30,R22
 0266 0083              std z+0,R16
 0268                   .dbline 379
 0268           ;               REV_EN();
 0268 579A              sbi 0xa,7
 026A                   .dbline 380
 026A           ;               }
 026A           L53:
 026A                   .dbline 381
 026A           ;       return (Btemp);
 026A 042F              mov R16,R20
 026C                   .dbline -2
 026C           L52:
 026C 0E940000          xcall pop_gset2
 0270                   .dbline 0 ; func end
 0270 0895              ret
 0272                   .dbsym r Btemp 20 c
 0272                   .dbsym r RTbuf 22 pS[.1]
 0272                   .dbend
                        .area vector(rom, abs)
                        .org 44
 002C 0C943901          jmp _uart0_rx_isr
                        .area text(rom, con, rel)
 0272                   .dbfile D:\桌面\avr程序设计\串口通讯范例\sio.c
 0272                   .dbfunc e uart0_rx_isr _uart0_rx_isr fV
 0272           ;           data -> R22
 0272           ;         status -> R10
 0272           ;          RTbuf -> R20,R21
                        .even
 0272           _uart0_rx_isr::
 0272 2A92              st -y,R2
 0274 3A92              st -y,R3
 0276 0A93              st -y,R16
 0278 1A93              st -y,R17
 027A 8A93              st -y,R24
 027C 9A93              st -y,R25
 027E EA93              st -y,R30
 0280 FA93              st -y,R31
 0282 2FB6              in R2,0x3f
 0284 2A92              st -y,R2
 0286 0E940000          xcall push_gset3
 028A                   .dbline -1
 028A                   .dbline 413
 028A           ;       
 028A           ; }
 028A           ; /*********************************************************************************************************
 028A           ; ** 函数名称: Tbuf_getchar
 028A           ; ** 功能描述: 从发送缓冲区读一个字符
 028A           ; ** 输 入: 
 028A           ; ** 输出        :  读字符
 028A           ; ** 全局变量: 无
 028A           ; ** 调用模块: 
 028A           ; ** 说明:
 028A           ; ** 注意:
 028A           ; ********************************************************************************************************
 028A           ; uint8 Tbuf_getchar(void){
 028A           ;       uint8 Btemp;
 028A           ;       if (!Tbuf_empty()){
 028A           ;               Btemp=RTbuf->T_buf[RTbuf->T_front];
 028A           ;               TXC_DIS();
 028A           ;               RTbuf->T_count--;
 028A           ;               RTbuf->T_front=(RTbuf->T_front+1) % TBUF_SIZE;
 028A           ;               TXC_EN();
 028A           ;               return (Btemp);
 028A           ;       }
 028A           ; }
 028A           ; */
 028A           ; 
 028A           ; /******************************* 中断处理函数 ***************************
 028A           ; * 功能:完成数据得的接收和发送
 028A           ; ***********************************************************************/
 028A           ; #if USEUART0
 028A           ; #pragma interrupt_handler uart0_rx_isr:iv_USART0_RXC 
 028A           ; void uart0_rx_isr(void)
 028A           ; {
 028A                   .dbline 416
 028A           ;  uint8 status,data;
 028A           ;  siocirqueue *RTbuf;
 028A           ;  RTbuf=&RTbuf_UART0;
 028A 40E0              ldi R20,<_RTbuf_UART0
 028C 50E0              ldi R21,>_RTbuf_UART0
 028E                   .dbline 418
 028E           ; // CLI();
 028E           ;  status=UCSR0A;
 028E ABB0              in R10,0xb
 0290                   .dbline 419
 0290           ;  data=UDR0;
 0290 6CB1              in R22,0xc
 0292                   .dbline 421
 0292           ;  //WDR(); //喂狗
 0292           ;  if((status & (FRAMING_ERROR | DATA_OVERRUN))==0)
 0292 8A2D              mov R24,R10
 0294 8871              andi R24,24
 0296 09F0              breq X2
 0298 22C0              xjmp L56
 029A           X2:
 029A                   .dbline 422
 029A           ;       {
 029A                   .dbline 423
 029A           ;       if(RTbuf->R_count<RBUF_SIZE){
 029A FA01              movw R30,R20
 029C 8281              ldd R24,z+2
 029E 8A30              cpi R24,10
 02A0 08F0              brlo X3
 02A2 1AC0              xjmp L58
 02A4           X3:
 02A4                   .dbline 423
 02A4                   .dbline 424
 02A4           ;               RTbuf->R_count++;
 02A4 CA01              movw R24,R20
 02A6 0296              adiw R24,2
 02A8 FC01              movw R30,R24
 02AA 8081              ldd R24,z+0
 02AC 8F5F              subi R24,255    ; addi 1
 02AE 8083              std z+0,R24
 02B0                   .dbline 425
 02B0           ;               RTbuf->R_buf[RTbuf->R_rear]=data;
 02B0 CA01              movw R24,R20
 02B2 0496              adiw R24,4
 02B4 FA01              movw R30,R20
 02B6 E181              ldd R30,z+1
 02B8 FF27              clr R31
 02BA E80F              add R30,R24
 02BC F91F              adc R31,R25
 02BE 6083              std z+0,R22
 02C0                   .dbline 426
 02C0           ;               RTbuf->R_rear=(RTbuf->R_rear+1) % RBUF_SIZE;
 02C0 CA01              movw R24,R20
 02C2 0196              adiw R24,1
 02C4 1C01              movw R2,R24
 02C6 1AE0              ldi R17,10
 02C8 FC01              movw R30,R24
 02CA 0081              ldd R16,z+0
 02CC 0F5F              subi R16,255    ; addi 1
 02CE 0E940000          xcall mod8u
 02D2 F101              movw R30,R2
 02D4 0083              std z+0,R16
 02D6                   .dbline 427
 02D6           ;               }
 02D6 03C0              xjmp L59
 02D8           L58:
 02D8                   .dbline 429
 02D8           ;       else 
 02D8           ;          {
 02D8                   .dbline 430
 02D8           ;          RTbuf->R_overflow=1;
 02D8 81E0              ldi R24,1
 02DA FA01              movw R30,R20
 02DC 8383              std z+3,R24
 02DE                   .dbline 431
 02DE           ;          }
 02DE           L59:
 02DE                   .dbline 432
 02DE           L56:
 02DE                   .dbline -2
 02DE           L55:
 02DE 0E940000          xcall pop_gset3
 02E2 2990              ld R2,y+
 02E4 2FBE              out 0x3f,R2
 02E6 F991              ld R31,y+
 02E8 E991              ld R30,y+
 02EA 9991              ld R25,y+
 02EC 8991              ld R24,y+
 02EE 1991              ld R17,y+
 02F0 0991              ld R16,y+
 02F2 3990              ld R3,y+
 02F4 2990              ld R2,y+
 02F6                   .dbline 0 ; func end
 02F6 1895              reti
 02F8                   .dbsym r data 22 c
 02F8                   .dbsym r status 10 c
 02F8                   .dbsym r RTbuf 20 pS[.1]
 02F8                   .dbend
                        .area vector(rom, abs)
                        .org 52
 0034 0C947C01          jmp _uart0_tx_isr
                        .area text(rom, con, rel)
 02F8                   .dbfile D:\桌面\avr程序设计\串口通讯范例\sio.c
 02F8                   .dbfunc e uart0_tx_isr _uart0_tx_isr fV
 02F8           ;          RTbuf -> R20,R21
                        .even
 02F8           _uart0_tx_isr::
 02F8 2A92              st -y,R2
 02FA 3A92              st -y,R3
 02FC 0A93              st -y,R16
 02FE 1A93              st -y,R17
 0300 8A93              st -y,R24
 0302 9A93              st -y,R25
 0304 EA93              st -y,R30
 0306 FA93              st -y,R31
 0308 2FB6              in R2,0x3f
 030A 2A92              st -y,R2
 030C 0E940000          xcall push_gset1
 0310                   .dbline -1
 0310                   .dbline 438
 0310           ;       }
 0310           ; //SEI();
 0310           ; }
 0310           ;       
 0310           ; #pragma interrupt_handler uart0_tx_isr: iv_USART0_TXC
 0310           ; void uart0_tx_isr(void)
 0310           ; {
 0310                   .dbline 442
 0310           ; //CLI();
 0310           ;  siocirqueue *RTbuf;
 0310           ;  //WDR(); //喂狗
 0310           ;  RTbuf=&RTbuf_UART0;
 0310 40E0              ldi R20,<_RTbuf_UART0
 0312 50E0              ldi R21,>_RTbuf_UART0
 0314                   .dbline 443
 0314           ;  if (RTbuf->T_count>0){
 0314 2224              clr R2
 0316 FA01              movw R30,R20
 0318 3088              ldd R3,z+16
 031A 2314              cp R2,R3
 031C 08F0              brlo X4
 031E 1BC0              xjmp L61
 0320           X4:
 0320                   .dbline 443
 0320                   .dbline 444
 0320           ;       UDR0=RTbuf->T_buf[RTbuf->T_front];
 0320 CA01              movw R24,R20
 0322 4196              adiw R24,17
 0324 FA01              movw R30,R20
 0326 E685              ldd R30,z+14
 0328 FF27              clr R31
 032A E80F              add R30,R24
 032C F91F              adc R31,R25
 032E 2080              ldd R2,z+0
 0330 2CB8              out 0xc,R2
 0332                   .dbline 445
 0332           ;       RTbuf->T_count--;
 0332 CA01              movw R24,R20
 0334 4096              adiw R24,16
 0336 FC01              movw R30,R24
 0338 8081              ldd R24,z+0
 033A 8150              subi R24,1
 033C 8083              std z+0,R24
 033E                   .dbline 446
 033E           ;       RTbuf->T_front=(RTbuf->T_front+1) % TBUF_SIZE;
 033E CA01              movw R24,R20
 0340 0E96              adiw R24,14
 0342 1C01              movw R2,R24
 0344 1AE0              ldi R17,10
 0346 FC01              movw R30,R24
 0348 0081              ldd R16,z+0
 034A 0F5F              subi R16,255    ; addi 1
 034C 0E940000          xcall mod8u
 0350 F101              movw R30,R2
 0352 0083              std z+0,R16
 0354                   .dbline 447
 0354           ;       }
 0354 03C0              xjmp L62
 0356           L61:
 0356                   .dbline 448
 0356 81E0              ldi R24,1
 0358 FA01              movw R30,R20
 035A 838F              std z+27,R24
 035C           L62:
 035C                   .dbline -2
 035C           L60:
 035C 0E940000          xcall pop_gset1
 0360 2990              ld R2,y+
 0362 2FBE              out 0x3f,R2
 0364 F991              ld R31,y+
 0366 E991              ld R30,y+
 0368 9991              ld R25,y+
 036A 8991              ld R24,y+
 036C 1991              ld R17,y+
 036E 0991              ld R16,y+
 0370 3990              ld R3,y+
 0372 2990              ld R2,y+
 0374                   .dbline 0 ; func end
 0374 1895              reti
 0376                   .dbsym r RTbuf 20 pS[.1]
 0376                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile D:\桌面\avr程序设计\串口通讯范例\sio.c
 0000           _RTbuf_UART0::
 0000                   .blkb 28
 001C                   .dbsym e RTbuf_UART0 _RTbuf_UART0 S[.1]

⌨️ 快捷键说明

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