📄 main.lst
字号:
01DF E051 LDI R21,1
(0421) // CLI();
(0422) status=UCSR0A;
01E0 B0AB IN R10,0x0B
(0423) data=UDR0;
01E1 B16C IN R22,0x0C
(0424) //WDR(); //喂狗
(0425) if((status & (FRAMING_ERROR | DATA_OVERRUN))==0)
01E2 2D8A MOV R24,R10
01E3 7188 ANDI R24,0x18
01E4 F009 BEQ 0x01E6
01E5 C022 RJMP 0x0208
(0426) {
(0427) if(RTbuf->R_count<RBUF_SIZE){
01E6 01FA MOVW R30,R20
01E7 8182 LDD R24,Z+2
01E8 3684 CPI R24,0x64
01E9 F008 BCS 0x01EB
01EA C01A RJMP 0x0205
(0428) RTbuf->R_count++;
01EB 01CA MOVW R24,R20
01EC 9602 ADIW R24,2
01ED 01FC MOVW R30,R24
01EE 8180 LDD R24,Z+0
01EF 5F8F SUBI R24,0xFF
01F0 8380 STD Z+0,R24
(0429) RTbuf->R_buf[RTbuf->R_rear]=data;
01F1 01CA MOVW R24,R20
01F2 9604 ADIW R24,4
01F3 01FA MOVW R30,R20
01F4 81E1 LDD R30,Z+1
01F5 27FF CLR R31
01F6 0FE8 ADD R30,R24
01F7 1FF9 ADC R31,R25
01F8 8360 STD Z+0,R22
(0430) RTbuf->R_rear=(RTbuf->R_rear+1) % RBUF_SIZE;
01F9 01CA MOVW R24,R20
01FA 9601 ADIW R24,1
01FB 011C MOVW R2,R24
01FC E614 LDI R17,0x64
01FD 01FC MOVW R30,R24
01FE 8100 LDD R16,Z+0
01FF 5F0F SUBI R16,0xFF
0200 940E02F8 CALL mod8u
0202 01F1 MOVW R30,R2
0203 8300 STD Z+0,R16
(0431) }
0204 C003 RJMP 0x0208
(0432) else
(0433) {
(0434) RTbuf->R_overflow=1;
0205 E081 LDI R24,1
0206 01FA MOVW R30,R20
0207 8383 STD Z+3,R24
(0435) }
(0436) }
0208 940E0313 CALL pop_gset3
020A 9029 LD R2,Y+
020B BE2F OUT 0x3F,R2
020C 91F9 LD R31,Y+
020D 91E9 LD R30,Y+
020E 9199 LD R25,Y+
020F 9189 LD R24,Y+
0210 9119 LD R17,Y+
0211 9109 LD R16,Y+
0212 9039 LD R3,Y+
0213 9029 LD R2,Y+
0214 9518 RETI
_uart0_tx_isr:
RTbuf --> R20
0215 922A ST R2,-Y
0216 923A ST R3,-Y
0217 930A ST R16,-Y
0218 931A ST R17,-Y
0219 938A ST R24,-Y
021A 939A ST R25,-Y
021B 93EA ST R30,-Y
021C 93FA ST R31,-Y
021D B62F IN R2,0x3F
021E 922A ST R2,-Y
021F 940E0321 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;
0221 E040 LDI R20,0
0222 E051 LDI R21,1
(0447) if (RTbuf->T_count>0){
0223 2422 CLR R2
0224 01FA MOVW R30,R20
0225 59E6 SUBI R30,0x96
0226 4FFF SBCI R31,0xFF
0227 8030 LDD R3,Z+0
0228 1423 CP R2,R3
0229 F008 BCS 0x022B
022A C020 RJMP 0x024B
(0448) UDR0=RTbuf->T_buf[RTbuf->T_front];
022B 01CA MOVW R24,R20
022C 5985 SUBI R24,0x95
022D 4F9F SBCI R25,0xFF
022E 01FA MOVW R30,R20
022F 59E8 SUBI R30,0x98
0230 4FFF SBCI R31,0xFF
0231 81E0 LDD R30,Z+0
0232 27FF CLR R31
0233 0FE8 ADD R30,R24
0234 1FF9 ADC R31,R25
0235 8020 LDD R2,Z+0
0236 B82C OUT 0x0C,R2
(0449) RTbuf->T_count--;
0237 01CA MOVW R24,R20
0238 5986 SUBI R24,0x96
0239 4F9F SBCI R25,0xFF
023A 01FC MOVW R30,R24
023B 8180 LDD R24,Z+0
023C 5081 SUBI R24,1
023D 8380 STD Z+0,R24
(0450) RTbuf->T_front=(RTbuf->T_front+1) % TBUF_SIZE;
023E 01CA MOVW R24,R20
023F 5988 SUBI R24,0x98
0240 4F9F SBCI R25,0xFF
0241 011C MOVW R2,R24
0242 E614 LDI R17,0x64
0243 01FC MOVW R30,R24
0244 8100 LDD R16,Z+0
0245 5F0F SUBI R16,0xFF
0246 940E02F8 CALL mod8u
0248 01F1 MOVW R30,R2
0249 8300 STD Z+0,R16
(0451) }
024A C005 RJMP 0x0250
(0452) else RTbuf->T_disabled=1;
024B E081 LDI R24,1
024C 01FA MOVW R30,R20
024D 53E1 SUBI R30,0x31
024E 4FFF SBCI R31,0xFF
024F 8380 STD Z+0,R24
0250 940E0324 CALL pop_gset1
0252 9029 LD R2,Y+
0253 BE2F OUT 0x3F,R2
0254 91F9 LD R31,Y+
0255 91E9 LD R30,Y+
0256 9199 LD R25,Y+
0257 9189 LD R24,Y+
0258 9119 LD R17,Y+
0259 9109 LD R16,Y+
025A 9039 LD R3,Y+
025B 9029 LD R2,Y+
025C 9518 RETI
FILE: D:\avrvi\AVRVi_m128_Starter_Kit\USART\source\lib\delay.c
(0001) /************************************************
(0002) 文件:delay.c
(0003) 用途:延时函数
(0004) 注意:系统时钟8M
(0005) 创建:2008.1.25
(0006) 修改:2008.1.25
(0007) Copy Right (c) www.avrvi.com AVR与虚拟仪器
(0008) ************************************************/
(0009)
(0010) void delay_1us(void) //1us延时函数
(0011) {
(0012) asm("nop");
_delay_1us:
025D 0000 NOP
025E 9508 RET
_delay_nus:
i --> R20
n --> R22
025F 940E031F CALL push_gset2
0261 01B8 MOVW R22,R16
(0013) }
(0014)
(0015) void delay_nus(unsigned int n) //N us延时函数
(0016) {
(0017) unsigned int i=0;
0262 2744 CLR R20
0263 2755 CLR R21
(0018) for (i=0;i<n;i++)
0264 C003 RJMP 0x0268
(0019) delay_1us();
0265 DFF7 RCALL _delay_1us
0266 5F4F SUBI R20,0xFF
0267 4F5F SBCI R21,0xFF
0268 1746 CP R20,R22
0269 0757 CPC R21,R23
026A F3D0 BCS 0x0265
026B 940E0310 CALL pop_gset2
026D 9508 RET
(0020) }
(0021)
(0022) void delay_1ms(void) //1ms延时函数
(0023) {
(0024) unsigned int i;
(0025) for (i=0;i<1140;i++);
_delay_1ms:
i --> R16
026E 2700 CLR R16
026F 2711 CLR R17
0270 C002 RJMP 0x0273
0271 5F0F SUBI R16,0xFF
0272 4F1F SBCI R17,0xFF
0273 3704 CPI R16,0x74
0274 E0E4 LDI R30,4
0275 071E CPC R17,R30
0276 F3D0 BCS 0x0271
0277 9508 RET
_delay_nms:
i --> R20
n --> R22
0278 940E031F CALL push_gset2
027A 01B8 MOVW R22,R16
(0026) }
(0027)
(0028) void delay_nms(unsigned int n) //N ms延时函数
(0029) {
(0030) unsigned int i=0;
027B 2744 CLR R20
027C 2755 CLR R21
(0031) for (i=0;i<n;i++)
027D C003 RJMP 0x0281
(0032) delay_1ms();
FILE: <library>
027E DFEF RCALL _delay_1ms
027F 5F4F SUBI R20,0xFF
0280 4F5F SBCI R21,0xFF
0281 1746 CP R20,R22
0282 0757 CPC R21,R23
0283 F3D0 BCS 0x027E
0284 940E0310 CALL pop_gset2
0286 9508 RET
div32u:
0287 94E8 BCLR 6
0288 C001 RJMP 0x028A
mod32u:
0289 9468 BSET 6
028A D02F RCALL long_div_prolog
028B 24CC CLR R12
028C C008 RJMP 0x0295
div32s:
028D 94E8 BCLR 6
028E C001 RJMP 0x0290
mod32s:
028F 9468 BSET 6
0290 D029 RCALL long_div_prolog
0291 FD37 SBRC R19,7
0292 D053 RCALL neg_R16_R19
0293 FDB7 SBRC R27,7
0294 D05A RCALL neg_R24_R27
0295 2477 CLR R7
0296 2488 CLR R8
0297 2499 CLR R9
0298 24AA CLR R10
0299 24BB CLR R11
029A D041 RCALL tst_R16_R19
029B F0C1 BEQ 0x02B4
029C D044 RCALL tst_R24_R27
029D F0B1 BEQ 0x02B4
029E E2E8 LDI R30,0x28
029F 0F00 LSL R16
02A0 1F11 ROL R17
02A1 1F22 ROL R18
02A2 1F33 ROL R19
02A3 1C77 ROL R7
02A4 1C88 ROL R8
02A5 1C99 ROL R9
02A6 1CAA ROL R10
02A7 1CBB ROL R11
02A8 1688 CP R8,R24
02A9 0699 CPC R9,R25
02AA 06AA CPC R10,R26
02AB 06BB CPC R11,R27
02AC F028 BCS 0x02B2
02AD 1A88 SUB R8,R24
02AE 0A99 SBC R9,R25
02AF 0AAA SBC R10,R26
02B0 0ABB SBC R11,R27
02B1 9503 INC R16
02B2 95EA DEC R30
02B3 F759 BNE 0x029F
02B4 F426 BRTC 0x02B9
02B5 2D08 MOV R16,R8
02B6 2D19 MOV R17,R9
02B7 2D2A MOV R18,R10
02B8 2D3B MOV R19,R11
02B9 C013 RJMP long_div_epilog
long_div_prolog:
02BA 927A ST R7,-Y
02BB 928A ST R8,-Y
02BC 929A ST R9,-Y
02BD 92AA ST R10,-Y
02BE 92BA ST R11,-Y
02BF 92CA ST R12,-Y
02C0 93EA ST R30,-Y
02C1 938A ST R24,-Y
02C2 939A ST R25,-Y
02C3 93AA ST R26,-Y
02C4 93BA ST R27,-Y
02C5 858B LDD R24,Y+11
02C6 859C LDD R25,Y+12
02C7 85AD LDD R26,Y+13
02C8 85BE LDD R27,Y+14
02C9 2EC3 MOV R12,R19
02CA F00E BRTS 0x02CC
02CB 26CB EOR R12,R27
02CC 9508 RET
long_div_epilog:
02CD FCC7 SBRC R12,7
02CE D017 RCALL neg_R16_R19
02CF 91B9 LD R27,Y+
02D0 91A9 LD R26,Y+
02D1 9199 LD R25,Y+
02D2 9189 LD R24,Y+
02D3 91E9 LD R30,Y+
02D4 90C9 LD R12,Y+
02D5 90B9 LD R11,Y+
02D6 90A9 LD R10,Y+
02D7 9099 LD R9,Y+
02D8 9089 LD R8,Y+
02D9 9079 LD R7,Y+
02DA 9624 ADIW R28,4
02DB 9508 RET
tst_R16_R19:
02DC 2FE0 MOV R30,R16
02DD 2BE1 OR R30,R17
02DE 2BE2 OR R30,R18
02DF 2BE3 OR R30,R19
02E0 9508 RET
tst_R24_R27:
02E1 2FE8 MOV R30,R24
02E2 2BE9 OR R30,R25
02E3 2BEA OR R30,R26
02E4 2BEB OR R30,R27
02E5 9508 RET
neg_R16_R19:
02E6 9500 COM R16
02E7 9510 COM R17
02E8 9520 COM R18
02E9 9530 COM R19
02EA 5F0F SUBI R16,0xFF
02EB 4F1F SBCI R17,0xFF
02EC 4F2F SBCI R18,0xFF
02ED 4F3F SBCI R19,0xFF
02EE 9508 RET
neg_R24_R27:
02EF 9580 COM R24
02F0 9590 COM R25
02F1 95A0 COM R26
02F2 95B0 COM R27
02F3 5F8F SUBI R24,0xFF
02F4 4F9F SBCI R25,0xFF
02F5 4FAF SBCI R26,0xFF
02F6 4FBF SBCI R27,0xFF
02F7 9508 RET
mod8u:
02F8 9468 BSET 6
02F9 C001 RJMP xdiv8u
div8u:
02FA 94E8 BCLR 6
xdiv8u:
02FB 932A ST R18,-Y
02FC 92FA ST R15,-Y
02FD 92EA ST R14,-Y
02FE 24FF CLR R15
02FF 24EE CLR R14
0300 E120 LDI R18,0x10
0301 0F00 LSL R16
0302 1CFF ROL R15
0303 1CEE ROL R14
0304 16E1 CP R14,R17
0305 F010 BCS 0x0308
0306 1AE1 SUB R14,R17
0307 9503 INC R16
0308 952A DEC R18
0309 F7B9 BNE 0x0301
030A F40E BRTC 0x030C
030B 2D0E MOV R16,R14
030C 90E9 LD R14,Y+
030D 90F9 LD R15,Y+
030E 9129 LD R18,Y+
030F 9508 RET
pop_gset2:
0310 E0E2 LDI R30,2
0311 940C0325 JMP pop
pop_gset3:
0313 E0E4 LDI R30,4
0314 940C0325 JMP pop
pop_gset4:
0316 E0E8 LDI R30,0x8
0317 940C0325 JMP pop
push_gset5:
0319 92FA ST R15,-Y
031A 92EA ST R14,-Y
push_gset4:
031B 92DA ST R13,-Y
031C 92CA ST R12,-Y
push_gset3:
031D 92BA ST R11,-Y
031E 92AA ST R10,-Y
push_gset2:
031F 937A ST R23,-Y
0320 936A ST R22,-Y
push_gset1:
0321 935A ST R21,-Y
0322 934A ST R20,-Y
0323 9508 RET
pop_gset1:
0324 E0E1 LDI R30,1
pop:
0325 9149 LD R20,Y+
0326 9159 LD R21,Y+
0327 FDE0 SBRC R30,0
0328 9508 RET
0329 9169 LD R22,Y+
032A 9179 LD R23,Y+
032B FDE1 SBRC R30,1
032C 9508 RET
032D 90A9 LD R10,Y+
032E 90B9 LD R11,Y+
032F FDE2 SBRC R30,2
0330 9508 RET
0331 90C9 LD R12,Y+
0332 90D9 LD R13,Y+
0333 FDE3 SBRC R30,3
0334 9508 RET
0335 90E9 LD R14,Y+
0336 90F9 LD R15,Y+
0337 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -