📄 jk0061119.lst
字号:
(0180) }
(0181) return(Ptr_send[2]+3);
042F 01F3 MOVW R30,R6
0430 8102 LDD R16,Z+2
0431 5F0D SUBI R16,0xFD
0432 940E1BE4 CALL pop_gset5
0434 9508 RET
_Modbus_Function_3:
b --> R20
a --> R22
i --> R10
Ptr_send --> R18
Ptr_receive --> R16
0435 940E1C02 CALL push_gset3
(0182) }
(0183) /////////////////////////////////////////////////////////////
(0184) char Modbus_Function_3(char *Ptr_receive,char *Ptr_send)
(0185) {
(0186) char i,a,b;
(0187) Ptr_send[1]=0x03;
0437 E083 LDI R24,3
0438 01F9 MOVW R30,R18
0439 8381 STD Z+1,R24
(0188) if((Ptr_receive[2]==0)&&(Ptr_receive[3]<=30))
043A 01F8 MOVW R30,R16
043B 8022 LDD R2,Z+2
043C 2022 TST R2
043D F009 BEQ 0x043F
043E C031 RJMP 0x0470
043F E18E LDI R24,0x1E
0440 01F8 MOVW R30,R16
0441 8023 LDD R2,Z+3
0442 1582 CP R24,R2
0443 F408 BCC 0x0445
0444 C02B RJMP 0x0470
(0189) {
(0190) if(Ptr_receive[3]+Ptr_receive[5]<=30)
0445 01F8 MOVW R30,R16
0446 8025 LDD R2,Z+5
0447 01F8 MOVW R30,R16
0448 8033 LDD R3,Z+3
0449 0C32 ADD R3,R2
044A 1583 CP R24,R3
044B F408 BCC 0x044D
044C C02F RJMP 0x047C
(0191) {
(0192) Ptr_send[2]=2*Ptr_receive[5];
044D 01F8 MOVW R30,R16
044E 8025 LDD R2,Z+5
044F E082 LDI R24,2
0450 9D82 MUL R24,R2
0451 01F9 MOVW R30,R18
0452 8202 STD Z+2,R0
(0193) a=Ptr_receive[3];
0453 01F8 MOVW R30,R16
0454 8163 LDD R22,Z+3
(0194) b=Ptr_receive[5]*2;
0455 01F8 MOVW R30,R16
0456 8025 LDD R2,Z+5
0457 9D82 MUL R24,R2
0458 2D40 MOV R20,R0
(0195) for(i=0;i<b;i++)
0459 24AA CLR R10
045A C012 RJMP 0x046D
(0196) {
(0197) Ptr_send[3+i]=JK_Value[2*a+i];
045B E082 LDI R24,2
045C 9F86 MUL R24,R22
045D 01F0 MOVW R30,R0
045E 2C2A MOV R2,R10
045F 2433 CLR R3
0460 0DE2 ADD R30,R2
0461 1DF3 ADC R31,R3
0462 E988 LDI R24,0x98
0463 E092 LDI R25,2
0464 0FE8 ADD R30,R24
0465 1FF9 ADC R31,R25
0466 8020 LDD R2,Z+0
0467 2DEA MOV R30,R10
0468 27FF CLR R31
0469 0FE2 ADD R30,R18
046A 1FF3 ADC R31,R19
046B 8223 STD Z+3,R2
046C 94A3 INC R10
046D 16A4 CP R10,R20
046E F360 BCS 0x045B
(0198) }
(0199) }
(0200)
(0201) }
046F C00C RJMP 0x047C
(0202) else
(0203) {
(0204) ////show error!
(0205) Ptr_send[1]=0xFF;
0470 EF8F LDI R24,0xFF
0471 01F9 MOVW R30,R18
0472 8381 STD Z+1,R24
(0206) Ptr_send[2]=2;
0473 E082 LDI R24,2
0474 01F9 MOVW R30,R18
0475 8382 STD Z+2,R24
(0207) Ptr_send[3]=0x00;
0476 2422 CLR R2
0477 01F9 MOVW R30,R18
0478 8223 STD Z+3,R2
(0208) Ptr_send[4]=0x04;
0479 E084 LDI R24,4
047A 01F9 MOVW R30,R18
047B 8384 STD Z+4,R24
(0209) }
(0210) return(Ptr_send[2]+3);
047C 01F9 MOVW R30,R18
047D 8102 LDD R16,Z+2
047E 5F0D SUBI R16,0xFD
047F 940E1BDE CALL pop_gset3
0481 9508 RET
_Modbus_Function_5:
c --> R20
Ptr_send --> R18
Ptr_receive --> R16
0482 940E1BE7 CALL push_gset1
(0211) }
(0212) ////////////////////////////////////////////////////////////
(0213) char Modbus_Function_5(char *Ptr_receive,char *Ptr_send)
(0214) {
(0215) char c;
(0216) Ptr_send[1]=0x05;
0484 E085 LDI R24,5
0485 01F9 MOVW R30,R18
0486 8381 STD Z+1,R24
(0217) Ptr_send[2]=Ptr_receive[2];
0487 01F8 MOVW R30,R16
0488 8022 LDD R2,Z+2
0489 01F9 MOVW R30,R18
048A 8222 STD Z+2,R2
(0218) Ptr_send[3]=Ptr_receive[3];
048B 01F8 MOVW R30,R16
048C 8023 LDD R2,Z+3
048D 01F9 MOVW R30,R18
048E 8223 STD Z+3,R2
(0219) Ptr_send[4]=Ptr_receive[4];
048F 01F8 MOVW R30,R16
0490 8024 LDD R2,Z+4
0491 01F9 MOVW R30,R18
0492 8224 STD Z+4,R2
(0220) Ptr_send[5]=Ptr_receive[5];
0493 01F8 MOVW R30,R16
0494 8025 LDD R2,Z+5
0495 01F9 MOVW R30,R18
0496 8225 STD Z+5,R2
(0221) c=6;
0497 E046 LDI R20,6
(0222) if((Ptr_receive[2]==0)&&(Ptr_receive[3]==0))
0498 01F8 MOVW R30,R16
0499 8022 LDD R2,Z+2
049A 2022 TST R2
049B F009 BEQ 0x049D
049C C035 RJMP 0x04D2
049D 01F8 MOVW R30,R16
049E 8023 LDD R2,Z+3
049F 2022 TST R2
04A0 F009 BEQ 0x04A2
04A1 C030 RJMP 0x04D2
(0223) {
(0224) if((Ptr_receive[4]==0xFF)&&(Ptr_receive[5]==0x00))
04A2 01F8 MOVW R30,R16
04A3 8184 LDD R24,Z+4
04A4 3F8F CPI R24,0xFF
04A5 F469 BNE 0x04B3
04A6 01F8 MOVW R30,R16
04A7 8025 LDD R2,Z+5
04A8 2022 TST R2
04A9 F449 BNE 0x04B3
(0225) {
(0226) Flag_JC_FC=1;
04AA E081 LDI R24,1
04AB 93800126 STS 0x126,R24
(0227) JK_IO[0]|=0x01;
04AD 91800122 LDS R24,0x122
04AF 6081 ORI R24,1
04B0 93800122 STS 0x122,R24
(0228) }
04B2 C02C RJMP 0x04DF
(0229) else if((Ptr_receive[4]==0x00)&&(Ptr_receive[5]==0x00))
04B3 01F8 MOVW R30,R16
04B4 8024 LDD R2,Z+4
04B5 2022 TST R2
04B6 F469 BNE 0x04C4
04B7 01F8 MOVW R30,R16
04B8 8025 LDD R2,Z+5
04B9 2022 TST R2
04BA F449 BNE 0x04C4
(0230) {
(0231) Flag_JC_FC=0;
04BB 2422 CLR R2
04BC 92200126 STS 0x126,R2
(0232) JK_IO[0]&=0xFE;
04BE 91800122 LDS R24,0x122
04C0 7F8E ANDI R24,0xFE
04C1 93800122 STS 0x122,R24
(0233) }
04C3 C01B RJMP 0x04DF
(0234) else
(0235) {
(0236) ////show error!
(0237) Ptr_send[1]=0xFF;
04C4 EF8F LDI R24,0xFF
04C5 01F9 MOVW R30,R18
04C6 8381 STD Z+1,R24
(0238) Ptr_send[2]=2;
04C7 E082 LDI R24,2
04C8 01F9 MOVW R30,R18
04C9 8382 STD Z+2,R24
(0239) Ptr_send[3]=0x00;
04CA 2422 CLR R2
04CB 01F9 MOVW R30,R18
04CC 8223 STD Z+3,R2
(0240) Ptr_send[4]=0x05;
04CD E085 LDI R24,5
04CE 01F9 MOVW R30,R18
04CF 8384 STD Z+4,R24
(0241) c=5;
04D0 E045 LDI R20,5
(0242) }
(0243) }
04D1 C00D RJMP 0x04DF
(0244) else
(0245) {
(0246) ////show error!
(0247) Ptr_send[1]=0xFF;
04D2 EF8F LDI R24,0xFF
04D3 01F9 MOVW R30,R18
04D4 8381 STD Z+1,R24
(0248) Ptr_send[2]=2;
04D5 E082 LDI R24,2
04D6 01F9 MOVW R30,R18
04D7 8382 STD Z+2,R24
(0249) Ptr_send[3]=0x00;
04D8 2422 CLR R2
04D9 01F9 MOVW R30,R18
04DA 8223 STD Z+3,R2
(0250) Ptr_send[4]=0x06;
04DB E086 LDI R24,6
04DC 01F9 MOVW R30,R18
04DD 8384 STD Z+4,R24
(0251) c=5;
04DE E045 LDI R20,5
(0252) }
(0253) return(c);
04DF 2F04 MOV R16,R20
04E0 940E1BEA CALL pop_gset1
04E2 9508 RET
_Modbus_Function_16:
Var_temp --> R14
c --> R20
i --> R12
Ptr_send --> R22
Ptr_receive --> R10
04E3 940E1C0A CALL push_gset5
04E5 01B9 MOVW R22,R18
04E6 0158 MOVW R10,R16
(0254) }
(0255) char Modbus_Function_16(char *Ptr_receive,char *Ptr_send)
(0256) {
(0257) char i,c;
(0258) unsigned int Var_temp;
(0259) Ptr_send[1]=0x10;
04E7 E180 LDI R24,0x10
04E8 01FB MOVW R30,R22
04E9 8381 STD Z+1,R24
(0260) Ptr_send[2]=Ptr_receive[2];
04EA 01F5 MOVW R30,R10
04EB 8022 LDD R2,Z+2
04EC 01FB MOVW R30,R22
04ED 8222 STD Z+2,R2
(0261) Ptr_send[3]=Ptr_receive[3];
04EE 01F5 MOVW R30,R10
04EF 8023 LDD R2,Z+3
04F0 01FB MOVW R30,R22
04F1 8223 STD Z+3,R2
(0262) i=Ptr_receive[3];
04F2 01F5 MOVW R30,R10
04F3 80C3 LDD R12,Z+3
(0263) ///////////////////////////////////////////////////////
(0264) Ptr_send[4]=Ptr_receive[4];
04F4 01F5 MOVW R30,R10
04F5 8024 LDD R2,Z+4
04F6 01FB MOVW R30,R22
04F7 8224 STD Z+4,R2
(0265) Ptr_send[5]=Ptr_receive[5];
04F8 01F5 MOVW R30,R10
04F9 8025 LDD R2,Z+5
04FA 01FB MOVW R30,R22
04FB 8225 STD Z+5,R2
(0266) c=6;
04FC E046 LDI R20,6
(0267) if(Ptr_receive[2]==0)
04FD 01F5 MOVW R30,R10
04FE 8022 LDD R2,Z+2
04FF 2022 TST R2
0500 F009 BEQ 0x0502
0501 C080 RJMP 0x0582
(0268) {
(0269) if((i>5)&&(i<28))
0502 E085 LDI R24,5
0503 158C CP R24,R12
0504 F008 BCS 0x0506
0505 C052 RJMP 0x0558
0506 2D8C MOV R24,R12
0507 318C CPI R24,0x1C
0508 F008 BCS 0x050A
0509 C04E RJMP 0x0558
(0270) {
(0271) JK_Value[2*i]=Ptr_receive[7];
050A E082 LDI R24,2
050B 9D8C MUL R24,R12
050C 01F0 MOVW R30,R0
050D E988 LDI R24,0x98
050E E092 LDI R25,2
050F 0FE8 ADD R30,R24
0510 1FF9 ADC R31,R25
0511 01D5 MOVW R26,R10
0512 9617 ADIW R26,7
0513 902C LD R2,0(X)
0514 8220 STD Z+0,R2
(0272) JK_Value[2*i+1]=Ptr_receive[8];
0515 E082 LDI R24,2
0516 9D8C MUL R24,R12
0517 01F0 MOVW R30,R0
0518 E989 LDI R24,0x99
0519 E092 LDI R25,2
051A 0FE8 ADD R30,R24
051B 1FF9 ADC R31,R25
051C 01D5 MOVW R26,R10
051D 9618 ADIW R26,0x8
051E 902C LD R2,0(X)
051F 8220 STD Z+0,R2
(0273) Var_temp=(int)Ptr_receive[7]<<8;
0520 01F5 MOVW R30,R10
0521 80E7 LDD R14,Z+7
0522 24FF CLR R15
0523 2CFE MOV R15,R14
0524 24EE CLR R14
(0274) Var_temp|=(int)Ptr_receive[8];
0525 01F5 MOVW R30,R10
0526 8420 LDD R2,Z+8
0527 2433 CLR R3
0528 28E2 OR R14,R2
0529 28F3 OR R15,R3
(0275) if(ram_array[i-6]!=Var_temp)
052A E082 LDI R24,2
052B 9D8C MUL R24,R12
052C 01F0 MOVW R30,R0
052D E988 LDI R24,0x98
052E E091 LDI R25,1
052F 0FE8 ADD R30,R24
0530 1FF9 ADC R31,R25
0531 8020 LDD R2,Z+0
0532 8031 LDD R3,Z+1
0533 142E CP R2,R14
0534 043F CPC R3,R15
0535 F409 BNE 0x0537
0536 C058 RJMP 0x058F
(0276) {
(0277) EEPROMwrite((int)&EEprom_array[2*i-12],Ptr_receive[7]);
0537 01F5 MOVW R30,R10
0538 8127 LDD R18,Z+7
0539 E082 LDI R24,2
053A 9D8C MUL R24,R12
053B 0180 MOVW R16,R0
053C EF8A LDI R24,0xFA
053D EF9F LDI R25,0xFF
053E 0F08 ADD R16,R24
053F 1F19 ADC R17,R25
0540 940E1C6A CALL _EEPROMwrite
(0278) EEPROMwrite((int)&EEprom_array[2*i-11],Ptr_receive[8]);
0542 01F5 MOVW R30,R10
0543 8520 LDD R18,Z+8
0544 E082 LDI R24,2
0545 9D8C MUL R24,R12
0546 0180 MOVW R16,R0
0547 EF8B LDI R24,0xFB
0548 EF9F LDI R25,0xFF
0549 0F08 ADD R16,R24
054A 1F19 ADC R17,R25
054B 940E1C6A CALL _EEPROMwrite
(0279) WDR();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -