📄 comm.lis
字号:
046E .dbline 254
046E 80912800 lds R24,_txd_mesg+4
0472 8160 ori R24,1
0474 80932800 sts _txd_mesg+4,R24
0478 .dbline 254
0478 05C0 xjmp L78
047A L77:
047A .dbline 256
047A ; else
047A ; {txd_mesg[4]&=0b11111110;}
047A .dbline 256
047A 80912800 lds R24,_txd_mesg+4
047E 8E7F andi R24,254
0480 80932800 sts _txd_mesg+4,R24
0484 .dbline 256
0484 L78:
0484 .dbline 257
0484 ; txd_mesg[5]=0;
0484 2224 clr R2
0486 20922900 sts _txd_mesg+5,R2
048A .dbline 258
048A ; if (state&(1<<CW_CCW))
048A 20900000 lds R2,_state
048E 20FE sbrs R2,0
0490 06C0 rjmp L82
0492 .dbline 259
0492 ; {txd_mesg[5]&=0b11111110;}
0492 .dbline 259
0492 80912900 lds R24,_txd_mesg+5
0496 8E7F andi R24,254
0498 80932900 sts _txd_mesg+5,R24
049C .dbline 259
049C 05C0 xjmp L83
049E L82:
049E .dbline 261
049E ; else
049E ; {txd_mesg[5]|=0b00000001;}
049E .dbline 261
049E 80912900 lds R24,_txd_mesg+5
04A2 8160 ori R24,1
04A4 80932900 sts _txd_mesg+5,R24
04A8 .dbline 261
04A8 L83:
04A8 .dbline 262
04A8 ; act[txd_llc_job]=1;
04A8 80E0 ldi R24,<_act
04AA 90E0 ldi R25,>_act
04AC E0910200 lds R30,_txd_llc_job
04B0 FF27 clr R31
04B2 E80F add R30,R24
04B4 F91F adc R31,R25
04B6 81E0 ldi R24,1
04B8 8083 std z+0,R24
04BA .dbline 266
04BA ; //}
04BA ; //else
04BA ; //{ act[rs485_app_job]=1;}
04BA ; goto rs485_app_ret;
04BA 9FC0 xjmp L57
04BC L70:
04BC .dbline 269
04BC ; }
04BC ;
04BC ; if((rxd_mesg[0]=='W')&&(rxd_mesg[1]=='J')) // 设置运行参数命令
04BC 80913500 lds R24,_rxd_mesg
04C0 8735 cpi R24,87
04C2 09F0 breq X10
04C4 9AC0 xjmp L86
04C6 X10:
04C6 80913600 lds R24,_rxd_mesg+1
04CA 8A34 cpi R24,74
04CC 09F0 breq X11
04CE 95C0 xjmp L86
04D0 X11:
04D0 .dbline 270
04D0 ; { if(in_out_number<2) //内控控制
04D0 .dbline 270
04D0 80910000 lds R24,_in_out_number
04D4 8230 cpi R24,2
04D6 08F0 brlo X12
04D8 90C0 xjmp L57
04DA X12:
04DA .dbline 271
04DA ; { //delay_cortrol_job();
04DA .dbline 272
04DA ; all_stop();//停止所有运行
04DA 0E940000 xcall _all_stop
04DE .dbline 273
04DE ; rxd_mesg_temp=rxd_mesg[2];//必须如此,rxd_mesg[4]进行常整运算时有错
04DE 20903700 lds R2,_rxd_mesg+2
04E2 3324 clr R3
04E4 4424 clr R4
04E6 5524 clr R5
04E8 FE01 movw R30,R28
04EA 2082 std z+0,R2
04EC 3182 std z+1,R3
04EE 4282 std z+2,R4
04F0 5382 std z+3,R5
04F2 .dbline 274
04F2 ; speed=rxd_mesg_temp*256+rxd_mesg[3];
04F2 FE01 movw R30,R28
04F4 2080 ldd R2,z+0
04F6 3180 ldd R3,z+1
04F8 4280 ldd R4,z+2
04FA 5380 ldd R5,z+3
04FC 40E0 ldi R20,0
04FE 51E0 ldi R21,1
0500 60E0 ldi R22,0
0502 70E0 ldi R23,0
0504 5A92 st -y,R5
0506 4A92 st -y,R4
0508 3A92 st -y,R3
050A 2A92 st -y,R2
050C 8A01 movw R16,R20
050E 9B01 movw R18,R22
0510 0E940000 xcall empy32u
0514 1801 movw R2,R16
0516 2901 movw R4,R18
0518 60903800 lds R6,_rxd_mesg+3
051C 7724 clr R7
051E 8824 clr R8
0520 9924 clr R9
0522 260C add R2,R6
0524 371C adc R3,R7
0526 481C adc R4,R8
0528 591C adc R5,R9
052A 30920100 sts _speed+1,R3
052E 20920000 sts _speed,R2
0532 .dbline 275
0532 ; if ((speed==0)||(speed>600))
0532 2220 tst R2
0534 11F4 brne X4
0536 3320 tst R3
0538 49F0 breq L95
053A X4:
053A 88E5 ldi R24,600
053C 92E0 ldi R25,2
053E 20900000 lds R2,_speed
0542 30900100 lds R3,_speed+1
0546 8215 cp R24,R2
0548 9305 cpc R25,R3
054A 30F4 brsh L93
054C L95:
054C .dbline 276
054C ; {speed=1;}
054C .dbline 276
054C 81E0 ldi R24,1
054E 90E0 ldi R25,0
0550 90930100 sts _speed+1,R25
0554 80930000 sts _speed,R24
0558 .dbline 276
0558 L93:
0558 .dbline 277
0558 ; cal_timer1(speed);
0558 00910000 lds R16,_speed
055C 10910100 lds R17,_speed+1
0560 0E940000 xcall _cal_timer1
0564 .dbline 278
0564 ; EEPROMWriteWord(speed_romaddr,&speed);
0564 20E0 ldi R18,<_speed
0566 30E0 ldi R19,>_speed
0568 03E0 ldi R16,3
056A 10E0 ldi R17,0
056C 0E940000 xcall _EEPROMWriteWord
0570 .dbline 279
0570 ; if (rxd_mesg[4]&0b00000001)
0570 20903900 lds R2,_rxd_mesg+4
0574 20FE sbrs R2,0
0576 06C0 rjmp L96
0578 .dbline 280
0578 ; {state|=(1<<RUN_STOP);}
0578 .dbline 280
0578 80910000 lds R24,_state
057C 8860 ori R24,8
057E 80930000 sts _state,R24
0582 .dbline 280
0582 05C0 xjmp L97
0584 L96:
0584 .dbline 282
0584 ; else
0584 ; {state&=~(1<<RUN_STOP);}
0584 .dbline 282
0584 80910000 lds R24,_state
0588 877F andi R24,247
058A 80930000 sts _state,R24
058E .dbline 282
058E L97:
058E .dbline 283
058E ; if (rxd_mesg[5]&0b00000001)
058E 20903A00 lds R2,_rxd_mesg+5
0592 20FE sbrs R2,0
0594 06C0 rjmp L99
0596 .dbline 284
0596 ; {state&=~(1<<CW_CCW);}
0596 .dbline 284
0596 80910000 lds R24,_state
059A 8E7F andi R24,254
059C 80930000 sts _state,R24
05A0 .dbline 284
05A0 05C0 xjmp L100
05A2 L99:
05A2 .dbline 286
05A2 ; else
05A2 ; {state|=(1<<CW_CCW);}
05A2 .dbline 286
05A2 80910000 lds R24,_state
05A6 8160 ori R24,1
05A8 80930000 sts _state,R24
05AC .dbline 286
05AC L100:
05AC L102:
05AC .dbline 287
05AC ; do {temp=EEPROMwrite(state_romaddr,state);}
05AC .dbline 287
05AC 20910000 lds R18,_state
05B0 05E0 ldi R16,5
05B2 10E0 ldi R17,0
05B4 0E940000 xcall _EEPROMwrite
05B8 5801 movw R10,R16
05BA .dbline 287
05BA L103:
05BA .dbline 288
05BA ; while(temp>0);
05BA AA20 tst R10
05BC B9F7 brne L102
05BE BB20 tst R11
05C0 A9F7 brne L102
05C2 X5:
05C2 .dbline 289
05C2 ; state_init();
05C2 0E940000 xcall _state_init
05C6 .dbline 291
05C6 ;
05C6 ; if(rxd_mesg_addr!=BROADCAST_ADDR)
05C6 80914500 lds R24,_rxd_mesg_addr
05CA 8F31 cpi R24,31
05CC B1F0 breq L57
05CE .dbline 292
05CE ; { txd_mesg_addr=pump_tab;
05CE .dbline 292
05CE 20907000 lds R2,_pump_tab
05D2 20923400 sts _txd_mesg_addr,R2
05D6 .dbline 293
05D6 ; txd_mesg_len=2;
05D6 82E0 ldi R24,2
05D8 80933300 sts _txd_mesg_len,R24
05DC .dbline 294
05DC ; txd_mesg[0]='W';
05DC 87E5 ldi R24,87
05DE 80932400 sts _txd_mesg,R24
05E2 .dbline 295
05E2 ; txd_mesg[1]='J';
05E2 8AE4 ldi R24,74
05E4 80932500 sts _txd_mesg+1,R24
05E8 .dbline 296
05E8 ; act[txd_llc_job]=1;
05E8 80E0 ldi R24,<_act
05EA 90E0 ldi R25,>_act
05EC E0910200 lds R30,_txd_llc_job
05F0 FF27 clr R31
05F2 E80F add R30,R24
05F4 F91F adc R31,R25
05F6 81E0 ldi R24,1
05F8 8083 std z+0,R24
05FA .dbline 297
05FA ; }
05FA .dbline 298
05FA ; }
05FA .dbline 299
05FA ; goto rs485_app_ret;
05FA L86:
05FA L57:
05FA .dbline 301
05FA ; }
05FA ; rs485_app_ret:;
05FA .dbline -2
05FA L50:
05FA 2896 adiw R28,8
05FC 0E940000 xcall pop_gset3
0600 .dbline 0 ; func end
0600 0895 ret
0602 .dbsym l flow_temp 4 l
0602 .dbsym l fcs 1 c
0602 .dbsym l i 1 c
0602 .dbsym l rxd_mesg_temp 0 l
0602 .dbsym r temp 10 i
0602 .dbend
0602 .dbfunc e job_att _job_att fV
0602 ; crrt_jn -> R20
0602 ; i -> R22
0602 ; step -> R20
.even
0602 _job_att::
0602 0E940000 xcall push_gset3
0606 402F mov R20,R16
0608 .dbline -1
0608 .dbline 307
0608 ; }
0608 ; /*********************************/
0608 ;
0608 ; /* 主调度任务程序模块 */
0608 ; void job_att(char step)
0608 ; {
0608 .dbline 309
0608 ; char i,crrt_jn;
0608 ; if(step==0)
0608 4423 tst R20
060A 09F0 breq X14
060C 3DC0 xjmp L109
060E X14:
060E .dbline 310
060E ; { for(i=1;i<=31;i++)
060E .dbline 310
060E 61E0 ldi R22,1
0610 10C0 xjmp L114
0612 L111:
0612 .dbline 311
0612 .dbline 311
0612 80E0 ldi R24,<_pri
0614 90E0 ldi R25,>_pri
0616 E62F mov R30,R22
0618 FF27 clr R31
061A E80F add R30,R24
061C F91F adc R31,R25
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -