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