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

📄 sio.lis

📁 ATMEGA128的PCF8536驱动程序
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 026A E081              ldd R30,z+0
 026C FF27              clr R31
 026E E80F              add R30,R24
 0270 F91F              adc R31,R25
 0272 4081              ldd R20,z+0
 0274                   .dbline 380
 0274           ;               REV_DIS();
 0274                   .dbline 380
 0274 5798              cbi 0xa,7
 0276                   .dbline 380
 0276                   .dbline 380
 0276                   .dbline 381
 0276           ;               RTbuf->R_count--;
 0276 CB01              movw R24,R22
 0278 0296              adiw R24,2
 027A FC01              movw R30,R24
 027C 8081              ldd R24,z+0
 027E 8150              subi R24,1
 0280 8083              std z+0,R24
 0282                   .dbline 382
 0282           ;               RTbuf->R_front=(RTbuf->R_front+1) % RBUF_SIZE;
 0282 14E6              ldi R17,100
 0284 FB01              movw R30,R22
 0286 0081              ldd R16,z+0
 0288 0F5F              subi R16,255    ; addi 1
 028A 0E940000          xcall mod8u
 028E FB01              movw R30,R22
 0290 0083              std z+0,R16
 0292                   .dbline 383
 0292           ;               REV_EN();
 0292 579A              sbi 0xa,7
 0294                   .dbline 384
 0294           ;               }
 0294           L53:
 0294                   .dbline 385
 0294           ;       return (Btemp);
 0294 042F              mov R16,R20
 0296                   .dbline -2
 0296           L52:
 0296 0E940000          xcall pop_gset2
 029A                   .dbline 0 ; func end
 029A 0895              ret
 029C                   .dbsym r Btemp 20 c
 029C                   .dbsym r RTbuf 22 pS[.1]
 029C                   .dbend
                        .area vector(rom, abs)
                        .org 72
 0048 0C944E01          jmp _uart0_rx_isr
                        .area text(rom, con, rel)
 029C                   .dbfile D:\avrvi\AVRVi_m128_Starter_Kit\PCF8563_USART\source\lib\sio.c
 029C                   .dbfunc e uart0_rx_isr _uart0_rx_isr fV
 029C           ;           data -> R22
 029C           ;         status -> R10
 029C           ;          RTbuf -> R20,R21
                        .even
 029C           _uart0_rx_isr::
 029C 2A92              st -y,R2
 029E 3A92              st -y,R3
 02A0 0A93              st -y,R16
 02A2 1A93              st -y,R17
 02A4 8A93              st -y,R24
 02A6 9A93              st -y,R25
 02A8 EA93              st -y,R30
 02AA FA93              st -y,R31
 02AC 2FB6              in R2,0x3f
 02AE 2A92              st -y,R2
 02B0 0E940000          xcall push_gset3
 02B4                   .dbline -1
 02B4                   .dbline 417
 02B4           ;       
 02B4           ; }
 02B4           ; /*********************************************************************************************************
 02B4           ; ** 函数名称: Tbuf_getchar
 02B4           ; ** 功能描述: 从发送缓冲区读一个字符
 02B4           ; ** 输 入: 
 02B4           ; ** 输出        :  读字符
 02B4           ; ** 全局变量: 无
 02B4           ; ** 调用模块: 
 02B4           ; ** 说明:
 02B4           ; ** 注意:
 02B4           ; ********************************************************************************************************
 02B4           ; unsigned char Tbuf_getchar(void){
 02B4           ;       unsigned char Btemp;
 02B4           ;       if (!Tbuf_empty()){
 02B4           ;               Btemp=RTbuf->T_buf[RTbuf->T_front];
 02B4           ;               TXC_DIS();
 02B4           ;               RTbuf->T_count--;
 02B4           ;               RTbuf->T_front=(RTbuf->T_front+1) % TBUF_SIZE;
 02B4           ;               TXC_EN();
 02B4           ;               return (Btemp);
 02B4           ;       }
 02B4           ; }
 02B4           ; */
 02B4           ; 
 02B4           ; /******************************* 中断处理函数 ***************************
 02B4           ; * 功能:完成数据得的接收和发送
 02B4           ; ***********************************************************************/
 02B4           ; #if USEUART0
 02B4           ; #pragma interrupt_handler uart0_rx_isr:iv_USART0_RXC 
 02B4           ; void uart0_rx_isr(void)
 02B4           ; {
 02B4                   .dbline 420
 02B4           ;  unsigned char status,data;
 02B4           ;  siocirqueue *RTbuf;
 02B4           ;  RTbuf=&RTbuf_UART0;
 02B4 40E0              ldi R20,<_RTbuf_UART0
 02B6 50E0              ldi R21,>_RTbuf_UART0
 02B8                   .dbline 422
 02B8           ; // CLI();
 02B8           ;  status=UCSR0A;
 02B8 ABB0              in R10,0xb
 02BA                   .dbline 423
 02BA           ;  data=UDR0;
 02BA 6CB1              in R22,0xc
 02BC                   .dbline 425
 02BC           ;  //WDR(); //喂狗
 02BC           ;  if((status & (FRAMING_ERROR | DATA_OVERRUN))==0)
 02BC 8A2D              mov R24,R10
 02BE 8871              andi R24,24
 02C0 09F0              breq X2
 02C2 22C0              xjmp L56
 02C4           X2:
 02C4                   .dbline 426
 02C4           ;       {
 02C4                   .dbline 427
 02C4           ;       if(RTbuf->R_count<RBUF_SIZE){
 02C4 FA01              movw R30,R20
 02C6 8281              ldd R24,z+2
 02C8 8436              cpi R24,100
 02CA 08F0              brlo X3
 02CC 1AC0              xjmp L58
 02CE           X3:
 02CE                   .dbline 427
 02CE                   .dbline 428
 02CE           ;               RTbuf->R_count++;
 02CE CA01              movw R24,R20
 02D0 0296              adiw R24,2
 02D2 FC01              movw R30,R24
 02D4 8081              ldd R24,z+0
 02D6 8F5F              subi R24,255    ; addi 1
 02D8 8083              std z+0,R24
 02DA                   .dbline 429
 02DA           ;               RTbuf->R_buf[RTbuf->R_rear]=data;
 02DA CA01              movw R24,R20
 02DC 0496              adiw R24,4
 02DE FA01              movw R30,R20
 02E0 E181              ldd R30,z+1
 02E2 FF27              clr R31
 02E4 E80F              add R30,R24
 02E6 F91F              adc R31,R25
 02E8 6083              std z+0,R22
 02EA                   .dbline 430
 02EA           ;               RTbuf->R_rear=(RTbuf->R_rear+1) % RBUF_SIZE;
 02EA CA01              movw R24,R20
 02EC 0196              adiw R24,1
 02EE 1C01              movw R2,R24
 02F0 14E6              ldi R17,100
 02F2 FC01              movw R30,R24
 02F4 0081              ldd R16,z+0
 02F6 0F5F              subi R16,255    ; addi 1
 02F8 0E940000          xcall mod8u
 02FC F101              movw R30,R2
 02FE 0083              std z+0,R16
 0300                   .dbline 431
 0300           ;               }
 0300 03C0              xjmp L59
 0302           L58:
 0302                   .dbline 433
 0302           ;       else 
 0302           ;          {
 0302                   .dbline 434
 0302           ;          RTbuf->R_overflow=1;
 0302 81E0              ldi R24,1
 0304 FA01              movw R30,R20
 0306 8383              std z+3,R24
 0308                   .dbline 435
 0308           ;          }
 0308           L59:
 0308                   .dbline 436
 0308           L56:
 0308                   .dbline -2
 0308           L55:
 0308 0E940000          xcall pop_gset3
 030C 2990              ld R2,y+
 030E 2FBE              out 0x3f,R2
 0310 F991              ld R31,y+
 0312 E991              ld R30,y+
 0314 9991              ld R25,y+
 0316 8991              ld R24,y+
 0318 1991              ld R17,y+
 031A 0991              ld R16,y+
 031C 3990              ld R3,y+
 031E 2990              ld R2,y+
 0320                   .dbline 0 ; func end
 0320 1895              reti
 0322                   .dbsym r data 22 c
 0322                   .dbsym r status 10 c
 0322                   .dbsym r RTbuf 20 pS[.1]
 0322                   .dbend
                        .area vector(rom, abs)
                        .org 80
 0050 0C949101          jmp _uart0_tx_isr
                        .area text(rom, con, rel)
 0322                   .dbfile D:\avrvi\AVRVi_m128_Starter_Kit\PCF8563_USART\source\lib\sio.c
 0322                   .dbfunc e uart0_tx_isr _uart0_tx_isr fV
 0322           ;          RTbuf -> R20,R21
                        .even
 0322           _uart0_tx_isr::
 0322 2A92              st -y,R2
 0324 3A92              st -y,R3
 0326 0A93              st -y,R16
 0328 1A93              st -y,R17
 032A 8A93              st -y,R24
 032C 9A93              st -y,R25
 032E EA93              st -y,R30
 0330 FA93              st -y,R31
 0332 2FB6              in R2,0x3f
 0334 2A92              st -y,R2
 0336 0E940000          xcall push_gset1
 033A                   .dbline -1
 033A                   .dbline 442
 033A           ;       }
 033A           ; //SEI();
 033A           ; }
 033A           ;       
 033A           ; #pragma interrupt_handler uart0_tx_isr: iv_USART0_TXC
 033A           ; void uart0_tx_isr(void)
 033A           ; {
 033A                   .dbline 446
 033A           ; //CLI();
 033A           ;  siocirqueue *RTbuf;
 033A           ;  //WDR(); //喂狗
 033A           ;  RTbuf=&RTbuf_UART0;
 033A 40E0              ldi R20,<_RTbuf_UART0
 033C 50E0              ldi R21,>_RTbuf_UART0
 033E                   .dbline 447
 033E           ;  if (RTbuf->T_count>0){
 033E 2224              clr R2
 0340 FA01              movw R30,R20
 0342 E659              subi R30,150  ; addi 106
 0344 FF4F              sbci R31,255
 0346 3080              ldd R3,z+0
 0348 2314              cp R2,R3
 034A 08F0              brlo X4
 034C 20C0              xjmp L61
 034E           X4:
 034E                   .dbline 447
 034E                   .dbline 448
 034E           ;       UDR0=RTbuf->T_buf[RTbuf->T_front];
 034E CA01              movw R24,R20
 0350 8559              subi R24,149  ; offset = 107
 0352 9F4F              sbci R25,255
 0354 FA01              movw R30,R20
 0356 E859              subi R30,152  ; addi 104
 0358 FF4F              sbci R31,255
 035A E081              ldd R30,z+0
 035C FF27              clr R31
 035E E80F              add R30,R24
 0360 F91F              adc R31,R25
 0362 2080              ldd R2,z+0
 0364 2CB8              out 0xc,R2
 0366                   .dbline 449
 0366           ;       RTbuf->T_count--;
 0366 CA01              movw R24,R20
 0368 8659              subi R24,150  ; offset = 106
 036A 9F4F              sbci R25,255
 036C FC01              movw R30,R24
 036E 8081              ldd R24,z+0
 0370 8150              subi R24,1
 0372 8083              std z+0,R24
 0374                   .dbline 450
 0374           ;       RTbuf->T_front=(RTbuf->T_front+1) % TBUF_SIZE;
 0374 CA01              movw R24,R20
 0376 8859              subi R24,152  ; offset = 104
 0378 9F4F              sbci R25,255
 037A 1C01              movw R2,R24
 037C 14E6              ldi R17,100
 037E FC01              movw R30,R24
 0380 0081              ldd R16,z+0
 0382 0F5F              subi R16,255    ; addi 1
 0384 0E940000          xcall mod8u
 0388 F101              movw R30,R2
 038A 0083              std z+0,R16
 038C                   .dbline 451
 038C           ;       }
 038C 05C0              xjmp L62
 038E           L61:
 038E                   .dbline 452
 038E 81E0              ldi R24,1
 0390 FA01              movw R30,R20
 0392 E153              subi R30,49  ; addi 207
 0394 FF4F              sbci R31,255
 0396 8083              std z+0,R24
 0398           L62:
 0398                   .dbline -2
 0398           L60:
 0398 0E940000          xcall pop_gset1
 039C 2990              ld R2,y+
 039E 2FBE              out 0x3f,R2
 03A0 F991              ld R31,y+
 03A2 E991              ld R30,y+
 03A4 9991              ld R25,y+
 03A6 8991              ld R24,y+
 03A8 1991              ld R17,y+
 03AA 0991              ld R16,y+
 03AC 3990              ld R3,y+
 03AE 2990              ld R2,y+
 03B0                   .dbline 0 ; func end
 03B0 1895              reti
 03B2                   .dbsym r RTbuf 20 pS[.1]
 03B2                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile D:\avrvi\AVRVi_m128_Starter_Kit\PCF8563_USART\source\lib\sio.c
 0000           _RTbuf_UART0::
 0000                   .blkb 208
 00D0                   .dbsym e RTbuf_UART0 _RTbuf_UART0 S[.1]

⌨️ 快捷键说明

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