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

📄 main.lis

📁 uIP是免费的TCP/IP协议栈,我们将它移植到我们的AVR以太网开发板中
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 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 + -