?? ntp.lis
字號:
00AC 09F4 brne L5
00AE X0:
00AE .dbline 92
00AE 1EC1 xjmp L4
00B0 L5:
00B0 .dbline 94
00B0 ; //
00B0 ; NTP->Xmit1 = ntohl(NTP->Xmit1); //
00B0 C501 movw R24,R10
00B2 8896 adiw R24,40
00B4 FC01 movw R30,R24
00B6 0081 ldd R16,z+0
00B8 1181 ldd R17,z+1
00BA 2281 ldd R18,z+2
00BC 3381 ldd R19,z+3
00BE 8F93 push R24
00C0 9F93 push R25
00C2 0E940000 xcall _ntohl
00C6 FF91 pop R31
00C8 EF91 pop R30
00CA 0083 std z+0,R16
00CC 1183 std z+1,R17
00CE 2283 std z+2,R18
00D0 3383 std z+3,R19
00D2 .dbline 95
00D2 ; NTP->Xmit2 = ntohl(NTP->Xmit2); //
00D2 C501 movw R24,R10
00D4 8C96 adiw R24,44
00D6 FC01 movw R30,R24
00D8 0081 ldd R16,z+0
00DA 1181 ldd R17,z+1
00DC 2281 ldd R18,z+2
00DE 3381 ldd R19,z+3
00E0 8F93 push R24
00E2 9F93 push R25
00E4 0E940000 xcall _ntohl
00E8 FF91 pop R31
00EA EF91 pop R30
00EC 0083 std z+0,R16
00EE 1183 std z+1,R17
00F0 2283 std z+2,R18
00F2 3383 std z+3,R19
00F4 .dbline 98
00F4 ; //
00F4 ; #ifdef Debug
00F4 ; sprintf((char*)ScratchPad, "\nXmit1:%lu\nXmit2:%lu\n", NTP->Xmit1, NTP->Xmit2);
00F4 F501 movw R30,R10
00F6 24A4 ldd R2,z+44
00F8 35A4 ldd R3,z+45
00FA 46A4 ldd R4,z+46
00FC 57A4 ldd R5,z+47
00FE 2C82 std y+4,R2
0100 3D82 std y+5,R3
0102 4E82 std y+6,R4
0104 5F82 std y+7,R5
0106 F501 movw R30,R10
0108 20A4 ldd R2,z+40
010A 31A4 ldd R3,z+41
010C 42A4 ldd R4,z+42
010E 53A4 ldd R5,z+43
0110 2882 std y+0,R2
0112 3982 std y+1,R3
0114 4A82 std y+2,R4
0116 5B82 std y+3,R5
0118 20E0 ldi R18,<L7
011A 30E0 ldi R19,>L7
011C 00E0 ldi R16,<_ScratchPad
011E 10E0 ldi R17,>_ScratchPad
0120 0E940000 xcall _sprintf
0124 .dbline 99
0124 ; SendDebugStr((char*)ScratchPad);
0124 00E0 ldi R16,<_ScratchPad
0126 10E0 ldi R17,>_ScratchPad
0128 0E940000 xcall _SendDebugStr
012C .dbline 110
012C ; #endif
012C ;
012C ; // Nsec = (double)NTP->Xmit1; // MS-Byte 1st ... shit ... the zilog s32 to double is inaccurate :( .. unless it's the sprintf function that is bad
012C ; // Nfrac = (double)NTP->Xmit2; // as above
012C ; // Nfrac /= 4294967295.0; //
012C ; // FNTPTime = Nsec; //
012C ; // FNTPTime += Nfrac; //
012C ; // FNTPTime /= SecsPerDay; //
012C ; // FNTPTime += 2; // add 2 days
012C ; //
012C ; lag = u16_Get(&NTP_Timer); // how long it took to get the reply back (ms)
012C 00E0 ldi R16,<_NTP_Timer
012E 10E0 ldi R17,>_NTP_Timer
0130 0E940000 xcall _u16_Get
0134 1D87 std y+13,R17
0136 0C87 std y+12,R16
0138 .dbline 111
0138 ; lag >>= 1; //
0138 1801 movw R2,R16
013A 3694 lsr R3
013C 2794 ror R2
013E 3D86 std y+13,R3
0140 2C86 std y+12,R2
0142 .dbline 112
0142 ; dw = (u32)(lag / 1000); // now in seconds
0142 28EE ldi R18,1000
0144 33E0 ldi R19,3
0146 8101 movw R16,R2
0148 0E940000 xcall div16u
014C 1801 movw R2,R16
014E 4424 clr R4
0150 5524 clr R5
0152 FE01 movw R30,R28
0154 2086 std z+8,R2
0156 3186 std z+9,R3
0158 4286 std z+10,R4
015A 5386 std z+11,R5
015C .dbline 113
015C ; NTP->Xmit1 += dw; // take the network lag/response time into account
015C C501 movw R24,R10
015E 8896 adiw R24,40
0160 FE01 movw R30,R28
0162 4084 ldd R4,z+8
0164 5184 ldd R5,z+9
0166 6284 ldd R6,z+10
0168 7384 ldd R7,z+11
016A FC01 movw R30,R24
016C 4081 ldd R20,z+0
016E 5181 ldd R21,z+1
0170 6281 ldd R22,z+2
0172 7381 ldd R23,z+3
0174 440D add R20,R4
0176 551D adc R21,R5
0178 661D adc R22,R6
017A 771D adc R23,R7
017C 4083 std z+0,R20
017E 5183 std z+1,R21
0180 6283 std z+2,R22
0182 7383 std z+3,R23
0184 .dbline 116
0184 ; //
0184 ; // NTP->Xmit1 is the number of seconds since "1st Jan 1900 00:00:00" .. NTP->Xmit2 is the fractional part
0184 ; dw = NTP->Xmit1 % SecsPerDay; // dw = seconds thru the current day
0184 40E8 ldi R20,128
0186 51E5 ldi R21,81
0188 61E0 ldi R22,1
018A 70E0 ldi R23,0
018C F501 movw R30,R10
018E 20A4 ldd R2,z+40
0190 31A4 ldd R3,z+41
0192 42A4 ldd R4,z+42
0194 53A4 ldd R5,z+43
0196 7A93 st -y,R23
0198 6A93 st -y,R22
019A 5A93 st -y,R21
019C 4A93 st -y,R20
019E 8101 movw R16,R2
01A0 9201 movw R18,R4
01A2 0E940000 xcall mod32u
01A6 FE01 movw R30,R28
01A8 0087 std z+8,R16
01AA 1187 std z+9,R17
01AC 2287 std z+10,R18
01AE 3387 std z+11,R19
01B0 .dbline 117
01B0 ; NTP->Xmit1 /= SecsPerDay; // now left with the number of days since "1st Jan 1900 00:00:00"
01B0 C501 movw R24,R10
01B2 8896 adiw R24,40
01B4 1C01 movw R2,R24
01B6 40E8 ldi R20,128
01B8 51E5 ldi R21,81
01BA 61E0 ldi R22,1
01BC 70E0 ldi R23,0
01BE FC01 movw R30,R24
01C0 4080 ldd R4,z+0
01C2 5180 ldd R5,z+1
01C4 6280 ldd R6,z+2
01C6 7380 ldd R7,z+3
01C8 7A93 st -y,R23
01CA 6A93 st -y,R22
01CC 5A93 st -y,R21
01CE 4A93 st -y,R20
01D0 8201 movw R16,R4
01D2 9301 movw R18,R6
01D4 0E940000 xcall div32u
01D8 F101 movw R30,R2
01DA 0083 std z+0,R16
01DC 1183 std z+1,R17
01DE 2283 std z+2,R18
01E0 3383 std z+3,R19
01E2 .dbline 119
01E2 ; //
01E2 ; sec = dw % 60; //
01E2 4CE3 ldi R20,60
01E4 50E0 ldi R21,0
01E6 60E0 ldi R22,0
01E8 70E0 ldi R23,0
01EA FE01 movw R30,R28
01EC 2084 ldd R2,z+8
01EE 3184 ldd R3,z+9
01F0 4284 ldd R4,z+10
01F2 5384 ldd R5,z+11
01F4 7A93 st -y,R23
01F6 6A93 st -y,R22
01F8 5A93 st -y,R21
01FA 4A93 st -y,R20
01FC 8101 movw R16,R2
01FE 9201 movw R18,R4
0200 0E940000 xcall mod32u
0204 7801 movw R14,R16
0206 .dbline 120
0206 ; dw /= 60; //
0206 4CE3 ldi R20,60
0208 50E0 ldi R21,0
020A 60E0 ldi R22,0
020C 70E0 ldi R23,0
020E FE01 movw R30,R28
0210 2084 ldd R2,z+8
0212 3184 ldd R3,z+9
0214 4284 ldd R4,z+10
0216 5384 ldd R5,z+11
0218 7A93 st -y,R23
021A 6A93 st -y,R22
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -