📄 adc.lst
字号:
03B5 81E0 LDD R30,Z+0
03B6 27FF CLR R31
03B7 0FE8 ADD R30,R24
03B8 1FF9 ADC R31,R25
03B9 8140 LDD R20,Z+0
(0380) REV_DIS();
03BA 9857 CBI 0x0A,7
(0381) RTbuf->R_count--;
03BB 01CB MOVW R24,R22
03BC 9602 ADIW R24,2
03BD 01FC MOVW R30,R24
03BE 8180 LDD R24,Z+0
03BF 5081 SUBI R24,1
03C0 8380 STD Z+0,R24
(0382) RTbuf->R_front=(RTbuf->R_front+1) % RBUF_SIZE;
03C1 E614 LDI R17,0x64
03C2 01FB MOVW R30,R22
03C3 8100 LDD R16,Z+0
03C4 5F0F SUBI R16,0xFF
03C5 940E04EB CALL mod8u
03C7 01FB MOVW R30,R22
03C8 8300 STD Z+0,R16
(0383) REV_EN();
03C9 9A57 SBI 0x0A,7
(0384) }
(0385) return (Btemp);
03CA 2F04 MOV R16,R20
03CB 940E0503 CALL pop_gset2
03CD 9508 RET
_uart0_rx_isr:
data --> R22
status --> R10
RTbuf --> R20
03CE 922A ST R2,-Y
03CF 923A ST R3,-Y
03D0 930A ST R16,-Y
03D1 931A ST R17,-Y
03D2 938A ST R24,-Y
03D3 939A ST R25,-Y
03D4 93EA ST R30,-Y
03D5 93FA ST R31,-Y
03D6 B62F IN R2,0x3F
03D7 922A ST R2,-Y
03D8 940E0510 CALL push_gset3
(0386)
(0387) }
(0388) /*********************************************************************************************************
(0389) ** 函数名称: Tbuf_getchar
(0390) ** 功能描述: 从发送缓冲区读一个字符
(0391) ** 输 入:
(0392) ** 输出 : 读字符
(0393) ** 全局变量: 无
(0394) ** 调用模块:
(0395) ** 说明:
(0396) ** 注意:
(0397) ********************************************************************************************************
(0398) unsigned char Tbuf_getchar(void){
(0399) unsigned char Btemp;
(0400) if (!Tbuf_empty()){
(0401) Btemp=RTbuf->T_buf[RTbuf->T_front];
(0402) TXC_DIS();
(0403) RTbuf->T_count--;
(0404) RTbuf->T_front=(RTbuf->T_front+1) % TBUF_SIZE;
(0405) TXC_EN();
(0406) return (Btemp);
(0407) }
(0408) }
(0409) */
(0410)
(0411) /******************************* 中断处理函数 ***************************
(0412) * 功能:完成数据得的接收和发送
(0413) ***********************************************************************/
(0414) #if USEUART0
(0415) #pragma interrupt_handler uart0_rx_isr:iv_USART0_RXC
(0416) void uart0_rx_isr(void)
(0417) {
(0418) unsigned char status,data;
(0419) siocirqueue *RTbuf;
(0420) RTbuf=&RTbuf_UART0;
03DA E24F LDI R20,0x2F
03DB E051 LDI R21,1
(0421) // CLI();
(0422) status=UCSR0A;
03DC B0AB IN R10,0x0B
(0423) data=UDR0;
03DD B16C IN R22,0x0C
(0424) //WDR(); //喂狗
(0425) if((status & (FRAMING_ERROR | DATA_OVERRUN))==0)
03DE 2D8A MOV R24,R10
03DF 7188 ANDI R24,0x18
03E0 F009 BEQ 0x03E2
03E1 C022 RJMP 0x0404
(0426) {
(0427) if(RTbuf->R_count<RBUF_SIZE){
03E2 01FA MOVW R30,R20
03E3 8182 LDD R24,Z+2
03E4 3684 CPI R24,0x64
03E5 F008 BCS 0x03E7
03E6 C01A RJMP 0x0401
(0428) RTbuf->R_count++;
03E7 01CA MOVW R24,R20
03E8 9602 ADIW R24,2
03E9 01FC MOVW R30,R24
03EA 8180 LDD R24,Z+0
03EB 5F8F SUBI R24,0xFF
03EC 8380 STD Z+0,R24
(0429) RTbuf->R_buf[RTbuf->R_rear]=data;
03ED 01CA MOVW R24,R20
03EE 9604 ADIW R24,4
03EF 01FA MOVW R30,R20
03F0 81E1 LDD R30,Z+1
03F1 27FF CLR R31
03F2 0FE8 ADD R30,R24
03F3 1FF9 ADC R31,R25
03F4 8360 STD Z+0,R22
(0430) RTbuf->R_rear=(RTbuf->R_rear+1) % RBUF_SIZE;
03F5 01CA MOVW R24,R20
03F6 9601 ADIW R24,1
03F7 011C MOVW R2,R24
03F8 E614 LDI R17,0x64
03F9 01FC MOVW R30,R24
03FA 8100 LDD R16,Z+0
03FB 5F0F SUBI R16,0xFF
03FC 940E04EB CALL mod8u
03FE 01F1 MOVW R30,R2
03FF 8300 STD Z+0,R16
(0431) }
0400 C003 RJMP 0x0404
(0432) else
(0433) {
(0434) RTbuf->R_overflow=1;
0401 E081 LDI R24,1
0402 01FA MOVW R30,R20
0403 8383 STD Z+3,R24
(0435) }
(0436) }
0404 940E0506 CALL pop_gset3
0406 9029 LD R2,Y+
0407 BE2F OUT 0x3F,R2
0408 91F9 LD R31,Y+
0409 91E9 LD R30,Y+
040A 9199 LD R25,Y+
040B 9189 LD R24,Y+
040C 9119 LD R17,Y+
040D 9109 LD R16,Y+
040E 9039 LD R3,Y+
040F 9029 LD R2,Y+
0410 9518 RETI
_uart0_tx_isr:
RTbuf --> R20
0411 922A ST R2,-Y
0412 923A ST R3,-Y
0413 930A ST R16,-Y
0414 931A ST R17,-Y
0415 938A ST R24,-Y
0416 939A ST R25,-Y
0417 93EA ST R30,-Y
0418 93FA ST R31,-Y
0419 B62F IN R2,0x3F
041A 922A ST R2,-Y
041B 940E0514 CALL push_gset1
(0437) //SEI();
(0438) }
(0439)
(0440) #pragma interrupt_handler uart0_tx_isr: iv_USART0_TXC
(0441) void uart0_tx_isr(void)
(0442) {
(0443) //CLI();
(0444) siocirqueue *RTbuf;
(0445) //WDR(); //喂狗
(0446) RTbuf=&RTbuf_UART0;
041D E24F LDI R20,0x2F
041E E051 LDI R21,1
(0447) if (RTbuf->T_count>0){
041F 2422 CLR R2
0420 01FA MOVW R30,R20
0421 59E6 SUBI R30,0x96
0422 4FFF SBCI R31,0xFF
0423 8030 LDD R3,Z+0
0424 1423 CP R2,R3
0425 F008 BCS 0x0427
0426 C020 RJMP 0x0447
(0448) UDR0=RTbuf->T_buf[RTbuf->T_front];
0427 01CA MOVW R24,R20
0428 5985 SUBI R24,0x95
0429 4F9F SBCI R25,0xFF
042A 01FA MOVW R30,R20
042B 59E8 SUBI R30,0x98
042C 4FFF SBCI R31,0xFF
042D 81E0 LDD R30,Z+0
042E 27FF CLR R31
042F 0FE8 ADD R30,R24
0430 1FF9 ADC R31,R25
0431 8020 LDD R2,Z+0
0432 B82C OUT 0x0C,R2
(0449) RTbuf->T_count--;
0433 01CA MOVW R24,R20
0434 5986 SUBI R24,0x96
0435 4F9F SBCI R25,0xFF
0436 01FC MOVW R30,R24
0437 8180 LDD R24,Z+0
0438 5081 SUBI R24,1
0439 8380 STD Z+0,R24
(0450) RTbuf->T_front=(RTbuf->T_front+1) % TBUF_SIZE;
043A 01CA MOVW R24,R20
043B 5988 SUBI R24,0x98
043C 4F9F SBCI R25,0xFF
043D 011C MOVW R2,R24
043E E614 LDI R17,0x64
043F 01FC MOVW R30,R24
0440 8100 LDD R16,Z+0
0441 5F0F SUBI R16,0xFF
0442 940E04EB CALL mod8u
0444 01F1 MOVW R30,R2
0445 8300 STD Z+0,R16
(0451) }
0446 C005 RJMP 0x044C
(0452) else RTbuf->T_disabled=1;
FILE: <library>
0447 E081 LDI R24,1
0448 01FA MOVW R30,R20
0449 53E1 SUBI R30,0x31
044A 4FFF SBCI R31,0xFF
044B 8380 STD Z+0,R24
044C 940E0517 CALL pop_gset1
044E 9029 LD R2,Y+
044F BE2F OUT 0x3F,R2
0450 91F9 LD R31,Y+
0451 91E9 LD R30,Y+
0452 9199 LD R25,Y+
0453 9189 LD R24,Y+
0454 9119 LD R17,Y+
0455 9109 LD R16,Y+
0456 9039 LD R3,Y+
0457 9029 LD R2,Y+
0458 9518 RETI
push_arg4:
0459 933A ST R19,-Y
045A 932A ST R18,-Y
push_arg2:
045B 931A ST R17,-Y
045C 930A ST R16,-Y
045D 9508 RET
mod16u:
045E 9468 BSET 6
045F C001 RJMP xdiv16u
div16u:
0460 94E8 BCLR 6
xdiv16u:
0461 92EA ST R14,-Y
0462 92FA ST R15,-Y
0463 938A ST R24,-Y
0464 24EE CLR R14
0465 24FF CLR R15
0466 E180 LDI R24,0x10
0467 0F00 LSL R16
0468 1F11 ROL R17
0469 1CEE ROL R14
046A 1CFF ROL R15
046B 16E2 CP R14,R18
046C 06F3 CPC R15,R19
046D F018 BCS 0x0471
046E 1AE2 SUB R14,R18
046F 0AF3 SBC R15,R19
0470 9503 INC R16
0471 958A DEC R24
0472 F7A1 BNE 0x0467
0473 F416 BRTC 0x0476
0474 2D0E MOV R16,R14
0475 2D1F MOV R17,R15
0476 9189 LD R24,Y+
0477 90F9 LD R15,Y+
0478 90E9 LD R14,Y+
0479 9508 RET
div32u:
047A 94E8 BCLR 6
047B C001 RJMP 0x047D
mod32u:
047C 9468 BSET 6
047D D02F RCALL long_div_prolog
047E 24CC CLR R12
047F C008 RJMP 0x0488
div32s:
0480 94E8 BCLR 6
0481 C001 RJMP 0x0483
mod32s:
0482 9468 BSET 6
0483 D029 RCALL long_div_prolog
0484 FD37 SBRC R19,7
0485 D053 RCALL neg_R16_R19
0486 FDB7 SBRC R27,7
0487 D05A RCALL neg_R24_R27
0488 2477 CLR R7
0489 2488 CLR R8
048A 2499 CLR R9
048B 24AA CLR R10
048C 24BB CLR R11
048D D041 RCALL tst_R16_R19
048E F0C1 BEQ 0x04A7
048F D044 RCALL tst_R24_R27
0490 F0B1 BEQ 0x04A7
0491 E2E8 LDI R30,0x28
0492 0F00 LSL R16
0493 1F11 ROL R17
0494 1F22 ROL R18
0495 1F33 ROL R19
0496 1C77 ROL R7
0497 1C88 ROL R8
0498 1C99 ROL R9
0499 1CAA ROL R10
049A 1CBB ROL R11
049B 1688 CP R8,R24
049C 0699 CPC R9,R25
049D 06AA CPC R10,R26
049E 06BB CPC R11,R27
049F F028 BCS 0x04A5
04A0 1A88 SUB R8,R24
04A1 0A99 SBC R9,R25
04A2 0AAA SBC R10,R26
04A3 0ABB SBC R11,R27
04A4 9503 INC R16
04A5 95EA DEC R30
04A6 F759 BNE 0x0492
04A7 F426 BRTC 0x04AC
04A8 2D08 MOV R16,R8
04A9 2D19 MOV R17,R9
04AA 2D2A MOV R18,R10
04AB 2D3B MOV R19,R11
04AC C013 RJMP long_div_epilog
long_div_prolog:
04AD 927A ST R7,-Y
04AE 928A ST R8,-Y
04AF 929A ST R9,-Y
04B0 92AA ST R10,-Y
04B1 92BA ST R11,-Y
04B2 92CA ST R12,-Y
04B3 93EA ST R30,-Y
04B4 938A ST R24,-Y
04B5 939A ST R25,-Y
04B6 93AA ST R26,-Y
04B7 93BA ST R27,-Y
04B8 858B LDD R24,Y+11
04B9 859C LDD R25,Y+12
04BA 85AD LDD R26,Y+13
04BB 85BE LDD R27,Y+14
04BC 2EC3 MOV R12,R19
04BD F00E BRTS 0x04BF
04BE 26CB EOR R12,R27
04BF 9508 RET
long_div_epilog:
04C0 FCC7 SBRC R12,7
04C1 D017 RCALL neg_R16_R19
04C2 91B9 LD R27,Y+
04C3 91A9 LD R26,Y+
04C4 9199 LD R25,Y+
04C5 9189 LD R24,Y+
04C6 91E9 LD R30,Y+
04C7 90C9 LD R12,Y+
04C8 90B9 LD R11,Y+
04C9 90A9 LD R10,Y+
04CA 9099 LD R9,Y+
04CB 9089 LD R8,Y+
04CC 9079 LD R7,Y+
04CD 9624 ADIW R28,4
04CE 9508 RET
tst_R16_R19:
04CF 2FE0 MOV R30,R16
04D0 2BE1 OR R30,R17
04D1 2BE2 OR R30,R18
04D2 2BE3 OR R30,R19
04D3 9508 RET
tst_R24_R27:
04D4 2FE8 MOV R30,R24
04D5 2BE9 OR R30,R25
04D6 2BEA OR R30,R26
04D7 2BEB OR R30,R27
04D8 9508 RET
neg_R16_R19:
04D9 9500 COM R16
04DA 9510 COM R17
04DB 9520 COM R18
04DC 9530 COM R19
04DD 5F0F SUBI R16,0xFF
04DE 4F1F SBCI R17,0xFF
04DF 4F2F SBCI R18,0xFF
04E0 4F3F SBCI R19,0xFF
04E1 9508 RET
neg_R24_R27:
04E2 9580 COM R24
04E3 9590 COM R25
04E4 95A0 COM R26
04E5 95B0 COM R27
04E6 5F8F SUBI R24,0xFF
04E7 4F9F SBCI R25,0xFF
04E8 4FAF SBCI R26,0xFF
04E9 4FBF SBCI R27,0xFF
04EA 9508 RET
mod8u:
04EB 9468 BSET 6
04EC C001 RJMP xdiv8u
div8u:
04ED 94E8 BCLR 6
xdiv8u:
04EE 932A ST R18,-Y
04EF 92FA ST R15,-Y
04F0 92EA ST R14,-Y
04F1 24FF CLR R15
04F2 24EE CLR R14
04F3 E120 LDI R18,0x10
04F4 0F00 LSL R16
04F5 1CFF ROL R15
04F6 1CEE ROL R14
04F7 16E1 CP R14,R17
04F8 F010 BCS 0x04FB
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -