📄 comm.lis
字号:
029A 90E0 ldi R25,>_act
029C E0910200 lds R30,_txd_llc_job
02A0 FF27 clr R31
02A2 E80F add R30,R24
02A4 F91F adc R31,R25
02A6 2224 clr R2
02A8 2082 std z+0,R2
02AA .dbline 192
02AA ; txd_frm[0]=txd_mesg_addr;
02AA 20903400 lds R2,_txd_mesg_addr
02AE 20926100 sts _txd_frm,R2
02B2 .dbline 193
02B2 ; txd_frm[1]=txd_mesg_len;
02B2 20903300 lds R2,_txd_mesg_len
02B6 20926200 sts _txd_frm+1,R2
02BA .dbline 194
02BA ; fcs=txd_frm[0]^txd_frm[1];
02BA 00916100 lds R16,_txd_frm
02BE 0225 eor R16,R2
02C0 .dbline 195
02C0 ; for(i=0;i<txd_mesg_len;i++)
02C0 2227 clr R18
02C2 15C0 xjmp L46
02C4 L43:
02C4 .dbline 196
02C4 .dbline 196
02C4 80E0 ldi R24,<_txd_mesg
02C6 90E0 ldi R25,>_txd_mesg
02C8 E22F mov R30,R18
02CA FF27 clr R31
02CC E80F add R30,R24
02CE F91F adc R31,R25
02D0 2080 ldd R2,z+0
02D2 80E0 ldi R24,<_txd_frm+2
02D4 90E0 ldi R25,>_txd_frm+2
02D6 E22F mov R30,R18
02D8 FF27 clr R31
02DA E80F add R30,R24
02DC F91F adc R31,R25
02DE 2082 std z+0,R2
02E0 .dbline 197
02E0 E22F mov R30,R18
02E2 FF27 clr R31
02E4 E80F add R30,R24
02E6 F91F adc R31,R25
02E8 2080 ldd R2,z+0
02EA 0225 eor R16,R2
02EC .dbline 198
02EC L44:
02EC .dbline 195
02EC 2395 inc R18
02EE L46:
02EE .dbline 195
02EE 20903300 lds R2,_txd_mesg_len
02F2 2215 cp R18,R2
02F4 38F3 brlo L43
02F6 .dbline 199
02F6 ; { txd_frm[i+2]=txd_mesg[i];
02F6 ; fcs=fcs^txd_frm[i+2];
02F6 ; }
02F6 ; txd_frm_len=txd_mesg_len+3;
02F6 822D mov R24,R2
02F8 8D5F subi R24,253 ; addi 3
02FA 80936000 sts _txd_frm_len,R24
02FE .dbline 200
02FE ; txd_frm[txd_frm_len-1]=fcs;
02FE 80E0 ldi R24,<_txd_frm-1
0300 90E0 ldi R25,>_txd_frm-1
0302 E0916000 lds R30,_txd_frm_len
0306 FF27 clr R31
0308 E80F add R30,R24
030A F91F adc R31,R25
030C 0083 std z+0,R16
030E .dbline 201
030E ; txd_cnt=0;
030E 2224 clr R2
0310 20924E00 sts _txd_cnt,R2
0314 .dbline 202
0314 ; txd_ins_flag=0;
0314 20924B00 sts _txd_ins_flag,R2
0318 .dbline 203
0318 ; tx485_busy=1;
0318 81E0 ldi R24,1
031A 80934F00 sts _tx485_busy,R24
031E .dbline 204
031E ; mac_txd_th=2;
031E 82E0 ldi R24,2
0320 80934800 sts _mac_txd_th,R24
0324 .dbline 205
0324 ; PORTC|=(1<<DE_485);
0324 A89A sbi 0x15,0
0326 .dbline 206
0326 ; UDR=0xe9;
0326 89EE ldi R24,233
0328 8CB9 out 0xc,R24
032A .dbline -2
032A L40:
032A .dbline 0 ; func end
032A 0895 ret
032C .dbsym r fcs 16 c
032C .dbsym r i 18 c
032C .dbend
032C .dbfunc e rs485_app_job1 _rs485_app_job1 fV
032C ; flow_temp -> y+4
032C ; fcs -> <dead>
032C ; i -> <dead>
032C ; rxd_mesg_temp -> y+0
032C ; temp -> R10,R11
.even
032C _rs485_app_job1::
032C 0E940000 xcall push_gset3
0330 2897 sbiw R28,8
0332 .dbline -1
0332 .dbline 211
0332 ; }
0332 ;
0332 ; /*********************************/
0332 ; void rs485_app_job1(void)
0332 ; {
0332 .dbline 216
0332 ; char i,fcs;
0332 ; unsigned int temp;
0332 ; unsigned long int flow_temp;
0332 ; unsigned long int rxd_mesg_temp;
0332 ; act[rs485_app_job]=0;
0332 80E0 ldi R24,<_act
0334 90E0 ldi R25,>_act
0336 E0910100 lds R30,_rs485_app_job
033A FF27 clr R31
033C E80F add R30,R24
033E F91F adc R31,R25
0340 2224 clr R2
0342 2082 std z+0,R2
0344 .dbline 218
0344 ;
0344 ; if((rxd_mesg_addr!=BROADCAST_ADDR)&&(rxd_mesg[0]=='R')&&(rxd_mesg[1]=='I')&&(rxd_mesg[2]=='D')) /* 读取设备地址命令e9 01 03 52 49 44 5d */
0344 80914500 lds R24,_rxd_mesg_addr
0348 8F31 cpi R24,31
034A 31F1 breq L51
034C 80913500 lds R24,_rxd_mesg
0350 8235 cpi R24,82
0352 11F5 brne L51
0354 80913600 lds R24,_rxd_mesg+1
0358 8934 cpi R24,73
035A F1F4 brne L51
035C 80913700 lds R24,_rxd_mesg+2
0360 8434 cpi R24,68
0362 D1F4 brne L51
0364 .dbline 219
0364 ; { txd_mesg_addr=pump_tab;
0364 .dbline 219
0364 20907000 lds R2,_pump_tab
0368 20923400 sts _txd_mesg_addr,R2
036C .dbline 220
036C ; txd_mesg_len=3;
036C 83E0 ldi R24,3
036E 80933300 sts _txd_mesg_len,R24
0372 .dbline 221
0372 ; txd_mesg[0]='R';
0372 82E5 ldi R24,82
0374 80932400 sts _txd_mesg,R24
0378 .dbline 222
0378 ; txd_mesg[1]='I';
0378 89E4 ldi R24,73
037A 80932500 sts _txd_mesg+1,R24
037E .dbline 223
037E ; txd_mesg[2]='D';
037E 84E4 ldi R24,68
0380 80932600 sts _txd_mesg+2,R24
0384 .dbline 224
0384 ; act[txd_llc_job]=1;
0384 80E0 ldi R24,<_act
0386 90E0 ldi R25,>_act
0388 E0910200 lds R30,_txd_llc_job
038C FF27 clr R31
038E E80F add R30,R24
0390 F91F adc R31,R25
0392 81E0 ldi R24,1
0394 8083 std z+0,R24
0396 .dbline 225
0396 ; goto rs485_app_ret;
0396 31C1 xjmp L57
0398 L51:
0398 .dbline 228
0398 ; }
0398 ;
0398 ; if((rxd_mesg[0]=='W')&&(rxd_mesg[1]=='I')&&(rxd_mesg[2]=='D')) /* 设置设备地址命令e9 1f 04 57 49 44 01 40 */
0398 80913500 lds R24,_rxd_mesg
039C 8735 cpi R24,87
039E B1F5 brne L58
03A0 80913600 lds R24,_rxd_mesg+1
03A4 8934 cpi R24,73
03A6 91F5 brne L58
03A8 80913700 lds R24,_rxd_mesg+2
03AC 8434 cpi R24,68
03AE 71F5 brne L58
03B0 .dbline 229
03B0 ; { pump_tab=rxd_mesg[3];
03B0 .dbline 229
03B0 20903800 lds R2,_rxd_mesg+3
03B4 20927000 sts _pump_tab,R2
03B8 L63:
03B8 .dbline 230
03B8 ; do {temp=EEPROMwrite(pump_tab_romaddr,pump_tab);}
03B8 .dbline 230
03B8 20917000 lds R18,_pump_tab
03BC 06E0 ldi R16,6
03BE 10E0 ldi R17,0
03C0 0E940000 xcall _EEPROMwrite
03C4 5801 movw R10,R16
03C6 .dbline 230
03C6 L64:
03C6 .dbline 231
03C6 ; while(temp>0);
03C6 AA20 tst R10
03C8 B9F7 brne L63
03CA BB20 tst R11
03CC A9F7 brne L63
03CE X3:
03CE .dbline 232
03CE ; if(rxd_mesg_addr!=BROADCAST_ADDR)
03CE 80914500 lds R24,_rxd_mesg_addr
03D2 8F31 cpi R24,31
03D4 09F4 brne X6
03D6 11C1 xjmp L57
03D8 X6:
03D8 .dbline 233
03D8 ; { txd_mesg_addr=pump_tab;
03D8 .dbline 233
03D8 20907000 lds R2,_pump_tab
03DC 20923400 sts _txd_mesg_addr,R2
03E0 .dbline 234
03E0 ; txd_mesg_len=3;
03E0 83E0 ldi R24,3
03E2 80933300 sts _txd_mesg_len,R24
03E6 .dbline 235
03E6 ; txd_mesg[0]='W';
03E6 87E5 ldi R24,87
03E8 80932400 sts _txd_mesg,R24
03EC .dbline 236
03EC ; txd_mesg[1]='I';
03EC 89E4 ldi R24,73
03EE 80932500 sts _txd_mesg+1,R24
03F2 .dbline 237
03F2 ; txd_mesg[2]='D';
03F2 84E4 ldi R24,68
03F4 80932600 sts _txd_mesg+2,R24
03F8 .dbline 238
03F8 ; act[txd_llc_job]=1;
03F8 80E0 ldi R24,<_act
03FA 90E0 ldi R25,>_act
03FC E0910200 lds R30,_txd_llc_job
0400 FF27 clr R31
0402 E80F add R30,R24
0404 F91F adc R31,R25
0406 81E0 ldi R24,1
0408 8083 std z+0,R24
040A .dbline 239
040A ; }
040A .dbline 240
040A ; goto rs485_app_ret;
040A F7C0 xjmp L57
040C L58:
040C .dbline 243
040C ; }
040C ;
040C ; if((rxd_mesg_addr!=BROADCAST_ADDR)&&(rxd_mesg[0]=='R')&&(rxd_mesg[1]=='J')) // 读取运行参数命令e9 01 2 52 47 16
040C 80914500 lds R24,_rxd_mesg_addr
0410 8F31 cpi R24,31
0412 09F4 brne X7
0414 53C0 xjmp L70
0416 X7:
0416 80913500 lds R24,_rxd_mesg
041A 8235 cpi R24,82
041C 09F0 breq X8
041E 4EC0 xjmp L70
0420 X8:
0420 80913600 lds R24,_rxd_mesg+1
0424 8A34 cpi R24,74
0426 09F0 breq X9
0428 49C0 xjmp L70
042A X9:
042A .dbline 244
042A ; { //if(in_out_number<2)
042A .dbline 246
042A ; //{
042A ; txd_mesg_addr=pump_tab;
042A 20907000 lds R2,_pump_tab
042E 20923400 sts _txd_mesg_addr,R2
0432 .dbline 247
0432 ; txd_mesg_len=6;
0432 86E0 ldi R24,6
0434 80933300 sts _txd_mesg_len,R24
0438 .dbline 248
0438 ; txd_mesg[0]='R';
0438 82E5 ldi R24,82
043A 80932400 sts _txd_mesg,R24
043E .dbline 249
043E ; txd_mesg[1]='J';
043E 8AE4 ldi R24,74
0440 80932500 sts _txd_mesg+1,R24
0444 .dbline 250
0444 ; txd_mesg[2]=(speed>>8);
0444 20900000 lds R2,_speed
0448 30900100 lds R3,_speed+1
044C 232C mov R2,R3
044E 3324 clr R3
0450 20922600 sts _txd_mesg+2,R2
0454 .dbline 251
0454 ; txd_mesg[3]=speed;
0454 20900000 lds R2,_speed
0458 30900100 lds R3,_speed+1
045C 20922700 sts _txd_mesg+3,R2
0460 .dbline 252
0460 ; txd_mesg[4]=0;
0460 2224 clr R2
0462 20922800 sts _txd_mesg+4,R2
0466 .dbline 253
0466 ; if (state&(1<<RUN_STOP))
0466 20900000 lds R2,_state
046A 23FE sbrs R2,3
046C 06C0 rjmp L77
046E .dbline 254
046E ; {txd_mesg[4]|=0b00000001;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -