📄 main.lis
字号:
0074 B0E0 ldi R27,0
0076 20900000 lds R2,_timerCounter
007A 3324 clr R3
007C 4424 clr R4
007E 5524 clr R5
0080 8215 cp R24,R2
0082 9305 cpc R25,R3
0084 A405 cpc R26,R4
0086 B505 cpc R27,R5
0088 0CF0 brlt X7
008A 60C0 xjmp L14
008C X7:
008C .dbline 115
008C ; {
008C .dbline 116
008C ; timerCounter = 0;
008C 2224 clr R2
008E 20920000 sts _timerCounter,R2
0092 .dbline 118
0092 ;
0092 ; for(i = 0; i < UIP_CONNS; i++)
0092 CC24 clr R12
0094 1BC0 xjmp L20
0096 L17:
0096 .dbline 119
0096 ; {
0096 L21:
0096 .dbline 120
0096 .dbline 120
0096 83E2 ldi R24,35
0098 8C9D mul R24,R12
009A 1001 movw R2,R0
009C 80E0 ldi R24,<_uip_conns
009E 90E0 ldi R25,>_uip_conns
00A0 280E add R2,R24
00A2 391E adc R3,R25
00A4 30920100 sts _uip_conn+1,R3
00A8 20920000 sts _uip_conn,R2
00AC .dbline 120
00AC 02E0 ldi R16,2
00AE 0E940000 xcall _uip_process
00B2 .dbline 120
00B2 L22:
00B2 .dbline 120
00B2 ; uip_periodic(i);
00B2 .dbline 123
00B2 ;
00B2 ; // transmit a packet, if one is ready
00B2 ; if(uip_len > 0)
00B2 20900000 lds R2,_uip_len
00B6 30900100 lds R3,_uip_len+1
00BA 2220 tst R2
00BC 11F4 brne X1
00BE 3320 tst R3
00C0 21F0 breq L24
00C2 X1:
00C2 .dbline 124
00C2 ; {
00C2 .dbline 125
00C2 ; uip_arp_out();
00C2 0E940000 xcall _uip_arp_out
00C6 .dbline 126
00C6 ; nic_send();
00C6 0E940000 xcall _nic_send
00CA .dbline 127
00CA ; }
00CA L24:
00CA .dbline 128
00CA L18:
00CA .dbline 118
00CA C394 inc R12
00CC L20:
00CC .dbline 118
00CC 8C2D mov R24,R12
00CE 8A30 cpi R24,10
00D0 10F3 brlo L17
00D2 .dbline 131
00D2 ; }
00D2 ;
00D2 ; /* Call the ARP timer function every 10 seconds. */
00D2 ; if(++arptimer == 20)
00D2 8A2D mov R24,R10
00D4 8F5F subi R24,255 ; addi 1
00D6 A82E mov R10,R24
00D8 8431 cpi R24,20
00DA C1F5 brne L14
00DC .dbline 132
00DC ; {
00DC .dbline 133
00DC ; uip_arp_timer();
00DC 0E940000 xcall _uip_arp_timer
00E0 .dbline 134
00E0 ; arptimer = 0;
00E0 AA24 clr R10
00E2 .dbline 135
00E2 ; }
00E2 .dbline 136
00E2 ; }
00E2 .dbline 137
00E2 ; }
00E2 34C0 xjmp L14
00E4 L13:
00E4 .dbline 139
00E4 ; else // packet received
00E4 ; {
00E4 .dbline 141
00E4 ; // process an IP packet
00E4 ; if(BUF->type == htons(UIP_ETHTYPE_IP))
00E4 00E0 ldi R16,2048
00E6 18E0 ldi R17,8
00E8 0E940000 xcall _htons
00EC 20900C00 lds R2,_uip_buf+12
00F0 30900D00 lds R3,_uip_buf+12+1
00F4 2016 cp R2,R16
00F6 3106 cpc R3,R17
00F8 91F4 brne L28
00FA .dbline 142
00FA ; {
00FA .dbline 145
00FA ; // add the source to the ARP cache
00FA ; // also correctly set the ethernet packet length before processing
00FA ; uip_arp_ipin();
00FA 0E940000 xcall _uip_arp_ipin
00FE .dbline 146
00FE ; uip_input();
00FE 01E0 ldi R16,1
0100 0E940000 xcall _uip_process
0104 .dbline 149
0104 ;
0104 ; // transmit a packet, if one is ready
0104 ; if(uip_len > 0)
0104 20900000 lds R2,_uip_len
0108 30900100 lds R3,_uip_len+1
010C 2220 tst R2
010E 11F4 brne X2
0110 3320 tst R3
0112 E1F0 breq L29
0114 X2:
0114 .dbline 150
0114 ; {
0114 .dbline 151
0114 ; uip_arp_out();
0114 0E940000 xcall _uip_arp_out
0118 .dbline 152
0118 ; nic_send();
0118 0E940000 xcall _nic_send
011C .dbline 153
011C ; }
011C .dbline 154
011C ; }
011C 17C0 xjmp L29
011E L28:
011E .dbline 156
011E ; // process an ARP packet
011E ; else if(BUF->type == htons(UIP_ETHTYPE_ARP))
011E 06E0 ldi R16,2054
0120 18E0 ldi R17,8
0122 0E940000 xcall _htons
0126 20900C00 lds R2,_uip_buf+12
012A 30900D00 lds R3,_uip_buf+12+1
012E 2016 cp R2,R16
0130 3106 cpc R3,R17
0132 61F4 brne L33
0134 .dbline 157
0134 ; {
0134 .dbline 158
0134 ; uip_arp_arpin();
0134 0E940000 xcall _uip_arp_arpin
0138 .dbline 161
0138 ;
0138 ; // transmit a packet, if one is ready
0138 ; if(uip_len > 0)
0138 20900000 lds R2,_uip_len
013C 30900100 lds R3,_uip_len+1
0140 2220 tst R2
0142 11F4 brne X3
0144 3320 tst R3
0146 11F0 breq L36
0148 X3:
0148 .dbline 162
0148 ; nic_send();
0148 0E940000 xcall _nic_send
014C L36:
014C .dbline 163
014C ; }
014C L33:
014C L29:
014C .dbline 164
014C ; }
014C L14:
014C .dbline 165
014C L11:
014C .dbline 107
014C 80CF xjmp L10
014E X4:
014E .dbline 167
014E ; }
014E ;
014E ; return 1;
014E 01E0 ldi R16,1
0150 10E0 ldi R17,0
0152 .dbline -2
0152 L9:
0152 .dbline 0 ; func end
0152 0895 ret
0154 .dbsym r arptimer 10 c
0154 .dbsym r i 12 c
0154 .dbend
.area bss(ram, con, rel)
0000 .dbfile D:\hexok项目\AVRNET项目\AVRNET光盘\AVRuIP\main.c
0000 _timerCounter:
0000 .blkb 1
0001 .dbsym s timerCounter _timerCounter c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -