📄 main.s
字号:
;
; if((state&0b00001000)==0) //判断启停状态
lds R2,_state
sbrc R2,3
rjmp L118
.dbline 557
; {
.dbline 558
; state|=0b00001000;
mov R24,R2
ori R24,8
sts _state,R24
.dbline 559
; i_en();
xcall _i_en
.dbline 560
; speed_slow(1,speed);
lds R18,_speed
lds R19,_speed+1
ldi R16,1
ldi R17,0
xcall _speed_slow
.dbline 561
; }
xjmp L119
L118:
.dbline 563
; else
; {
.dbline 564
; i_disen();
xcall _i_disen
.dbline 565
; state&=0b11110111;
lds R24,_state
andi R24,247
sts _state,R24
.dbline 566
; }
L119:
.dbline 567
; key=empty;
clr R2
sts _key,R2
.dbline 568
; break;
xjmp L115
L120:
.dbline 572
; /******************************正反转控制**********************************/
; case cwccw_nu:
;
; if ((state|0b11111110)==0b11111110) //判断正反状态
lds R24,_state
ori R24,254
cpi R24,254
brne L121
.dbline 573
; {
.dbline 574
; state|=0b00000001;
lds R24,_state
ori R24,1
sts _state,R24
.dbline 575
; }
xjmp L122
L121:
.dbline 577
; else
; {
.dbline 578
; state&=0b11111110;
lds R24,_state
andi R24,254
sts _state,R24
.dbline 579
; }
L122:
.dbline 580
; speed_slow(1,speed);
lds R18,_speed
lds R19,_speed+1
ldi R16,1
ldi R17,0
xcall _speed_slow
.dbline 581
; key=empty;
clr R2
sts _key,R2
.dbline 582
; break;
L114:
L115:
.dbline -2
L113:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym l temp 1 i
.dbsym l j 1 c
.dbsym l i 1 c
.dbend
.dbfunc e state_init _state_init fV
.even
_state_init::
.dbline -1
.dbline 588
; }
; }
;
; //状态初始化函数
; void state_init(void)
; {
.dbline 589
; if ((state&0b00001000)!=0) //如果电机没有运行可执行确认操作
lds R2,_state
sbrs R2,3
rjmp L124
.dbline 590
; {
.dbline 591
; state&=0b11110111;
mov R24,R2
andi R24,247
sts _state,R24
.dbline 592
; key=runstop_nu;
ldi R24,1
sts _key,R24
.dbline 593
; }
L124:
.dbline 594
; key_disposal();
xcall _key_disposal
.dbline -2
L123:
.dbline 0 ; func end
ret
.dbend
.dbfunc e all_stop _all_stop fV
.even
_all_stop::
.dbline -1
.dbline 598
; }
; //停止所有运行
; void all_stop(void)
; {
.dbline 599
; i_disen();
xcall _i_disen
.dbline 600
; state&=~(1<<RUN_STOP);
lds R24,_state
andi R24,247
sts _state,R24
.dbline -2
L126:
.dbline 0 ; func end
ret
.dbend
.dbfunc e defult_fac _defult_fac fV
; temp -> R20,R21
.even
_defult_fac::
xcall push_gset1
.dbline -1
.dbline 605
; }
;
; //所有参数的出厂缺省值
; void defult_fac(void)
; {
.dbline 607
; unsigned int temp;
; if ((EEPROMread(DEFAULT_ROMADDR))!=0)
ldi R16,1
ldi R17,0
xcall _EEPROMread
tst R16
brne X8
xjmp L128
X8:
.dbline 608
; {
L130:
.dbline 609
; do {temp=EEPROMwrite(DEFAULT_ROMADDR,0);}
.dbline 609
clr R18
ldi R16,1
ldi R17,0
xcall _EEPROMwrite
movw R20,R16
.dbline 609
L131:
.dbline 610
; while(temp>0);
cpi R20,0
cpc R20,R21
brne L130
X4:
.dbline 611
; speed=50;
ldi R24,50
ldi R25,0
sts _speed+1,R25
sts _speed,R24
.dbline 612
; EEPROMWriteWord(speed_romaddr,&speed);
ldi R18,<_speed
ldi R19,>_speed
ldi R16,3
ldi R17,0
xcall _EEPROMWriteWord
.dbline 613
; state=0;
clr R2
sts _state,R2
L133:
.dbline 614
; do {temp=EEPROMwrite(state_romaddr,state);}
.dbline 614
lds R18,_state
ldi R16,5
ldi R17,0
xcall _EEPROMwrite
movw R20,R16
.dbline 614
L134:
.dbline 615
; while(temp>0);
cpi R20,0
cpc R20,R21
brne L133
X5:
.dbline 616
; pump_tab=1;
ldi R24,1
sts _pump_tab,R24
L136:
.dbline 617
; do {temp=EEPROMwrite(pump_tab_romaddr,pump_tab);}
.dbline 617
lds R18,_pump_tab
ldi R16,6
ldi R17,0
xcall _EEPROMwrite
movw R20,R16
.dbline 617
L137:
.dbline 618
; while(temp>0);
cpi R20,0
cpc R20,R21
brne L136
X6:
.dbline 619
; state_other=0;
clr R2
sts _state_other,R2
L139:
.dbline 620
; do {temp=EEPROMwrite(state_other_romaddr,state_other);}
.dbline 620
lds R18,_state_other
ldi R16,7
ldi R17,0
xcall _EEPROMwrite
movw R20,R16
.dbline 620
L140:
.dbline 621
cpi R20,0
cpc R20,R21
brne L139
X7:
.dbline 622
L128:
.dbline -2
L127:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r temp 20 i
.dbend
.dbfunc e main _main fV
; i -> <dead>
.even
_main::
.dbline -1
.dbline 632
; while(temp>0);
; }
; //do {temp=EEPROMwrite(DEFAULT_ROMADDR,1);}
; //while(temp>0);
; }
;
;
; /****************************************************************
; 主函数
; ****************************************************************/
; void main(void)
; {
.dbline 634
; unsigned char i;
; CLI();
cli
.dbline 635
; defult_fac();
xcall _defult_fac
.dbline 636
; EEPROMReadWord(speed_romaddr,&speed);
ldi R18,<_speed
ldi R19,>_speed
ldi R16,3
ldi R17,0
xcall _EEPROMReadWord
.dbline 637
; pump_tab=EEPROMread(pump_tab_romaddr);
ldi R16,6
ldi R17,0
xcall _EEPROMread
sts _pump_tab,R16
.dbline 638
; if ((pump_tab>=31)||(pump_tab==0))
cpi R16,31
brsh L145
tst R16
brne L143
L145:
.dbline 639
; {pump_tab=1;}
.dbline 639
ldi R24,1
sts _pump_tab,R24
.dbline 639
L143:
.dbline 640
; if ((speed>600)||(speed==0))
ldi R24,600
ldi R25,2
lds R2,_speed
lds R3,_speed+1
cp R24,R2
cpc R25,R3
brlo L148
tst R2
brne L146
tst R3
brne L146
X9:
L148:
.dbline 641
; {speed=1;}
.dbline 641
ldi R24,1
ldi R25,0
sts _speed+1,R25
sts _speed,R24
.dbline 641
L146:
.dbline 642
; state=0;
clr R2
sts _state,R2
.dbline 643
; state0=0;
sts _state0,R2
.dbline 644
; state1=0;
sts _state1,R2
.dbline 645
; state2=0;
sts _state2,R2
.dbline 646
; wrong=0;
sts _wrong,R2
.dbline 647
; micros_nu0=16;
ldi R24,16
sts _micros_nu0,R24
.dbline 648
; in_out_number=in_int;
sts _in_out_number,R2
.dbline 649
; in_out_state=in_int;
sts _in_out_state,R2
.dbline 650
; port_init(); //端口初始化
xcall _port_init
.dbline 651
; da_init();
xcall _da_init
.dbline 652
; out_init(); //外控初始化
xcall _out_init
.dbline 653
; serial_init();
xcall _serial_init
.dbline 654
; adc_init();
xcall _adc_init
.dbline 655
; int0_init();
xcall _int0_init
.dbline 656
; cal_timer1(speed);
lds R16,_speed
lds R17,_speed+1
xcall _cal_timer1
.dbline 657
; GIFR=0;
clr R2
out 0x3a,R2
.dbline 658
; TIFR=0;
out 0x38,R2
.dbline 659
; SEI();
sei
.dbline 660
; delay_ms(50);
ldi R16,50
ldi R17,0
xcall _delay_ms
.dbline 661
; i_disen();
xcall _i_disen
.dbline 662
; job_att(0);
clr R16
xcall _job_att
.dbline 664
; //临时
; state2|=0b00000010;//进入计算机控制状态
lds R24,_state2
ori R24,2
sts _state2,R24
xjmp L150
L149:
.dbline 666
; while(1) //按键循环处理
; {
.dbline 667
; job_att(1); //485
ldi R16,1
xcall _job_att
.dbline 668
; in_out_number=out_pull;
ldi R24,2
sts _in_out_number,R24
.dbline 669
; switch (in_out_number)
mov R20,R24
clr R21
cpi R20,2
ldi R30,0
cpc R21,R30
breq L158
cpi R20,3
ldi R30,0
cpc R21,R30
breq L155
xjmp L153
X10:
.dbline 670
; {
L155:
.dbline 672
; case out_v : //外控电压
; if (in_out_state!=out_v)
lds R24,_in_out_state
cpi R24,3
breq L156
.dbline 673
; {
.dbline 674
; in_out_state=out_v;
ldi R24,3
sts _in_out_state,R24
.dbline 675
; out_ctrol();
xcall _out_ctrol
.dbline 676
; pull_stop();
xcall _pull_stop
.dbline 677
; }
L156:
.dbline 678
; adc_ctrol();
xcall _adc_ctrol
.dbline 679
; break;
xjmp L153
L158:
.dbline 681
; case out_pull:
; if (in_out_state!=out_pull)
lds R24,_in_out_state
cpi R24,2
breq L159
.dbline 682
; {
.dbline 683
; in_out_state=out_pull;
ldi R24,2
sts _in_out_state,R24
.dbline 684
; timer2_init();
xcall _timer2_init
.dbline 685
; pull_start();
xcall _pull_start
.dbline 686
; }
L159:
.dbline 687
; if (speed_pull>2400)
ldi R24,2400
ldi R25,9
lds R2,_speed_pull
lds R3,_speed_pull+1
cp R24,R2
cpc R25,R3
brsh L161
.dbline 688
; {speed_pull=2400;}
.dbline 688
sts _speed_pull+1,R25
sts _speed_pull,R24
.dbline 688
L161:
.dbline 689
; if(speed_pull<=4)
ldi R24,4
ldi R25,0
lds R2,_speed_pull
lds R3,_speed_pull+1
cp R24,R2
cpc R25,R3
brlo L163
.dbline 690
; {speed_pull=4;}
.dbline 690
sts _speed_pull+1,R25
sts _speed_pull,R24
.dbline 690
L163:
.dbline 692
; //cal_timer1();
; speed_slow(speed,speed_pull/4);
lds R18,_speed_pull
lds R19,_speed_pull+1
lsr R19
ror R18
lsr R19
ror R18
lds R16,_speed
lds R17,_speed+1
xcall _speed_slow
.dbline 693
; speed=speed_pull/4;
lds R2,_speed_pull
lds R3,_speed_pull+1
lsr R3
ror R2
lsr R3
ror R2
sts _speed+1,R3
sts _speed,R2
.dbline 695
; default :
; break;
L153:
.dbline 697
xcall _out_key
.dbline 698
xcall _key_disposal
.dbline 699
L150:
.dbline 665
xjmp L149
X11:
.dbline -2
L142:
.dbline 0 ; func end
ret
.dbsym l i 1 c
.dbend
.area bss(ram, con, rel)
.dbfile C:\BJQD\main.c
_speed_pull::
.blkb 2
.dbsym e speed_pull _speed_pull i
_counter::
.blkb 1
.dbsym e counter _counter c
_wrong::
.blkb 1
.dbsym e wrong _wrong c
_in_out_number::
.blkb 1
.dbsym e in_out_number _in_out_number c
_in_out_state::
.blkb 1
.dbsym e in_out_state _in_out_state c
_state0::
.blkb 1
.dbsym e state0 _state0 c
_state_other::
.blkb 1
.dbsym e state_other _state_other c
_state::
.blkb 1
.dbsym e state _state c
_ac_bd_state::
.blkb 1
.dbsym e ac_bd_state _ac_bd_state c
_add_dec_nu::
.blkb 1
.dbsym e add_dec_nu _add_dec_nu c
_disp_time_counter1::
.blkb 4
.dbsym e disp_time_counter1 _disp_time_counter1 l
_disp_time_counter0::
.blkb 4
.dbsym e disp_time_counter0 _disp_time_counter0 l
_key_counter::
.blkb 1
.dbsym e key_counter _key_counter c
_key_state::
.blkb 1
.dbsym e key_state _key_state c
_micros_nu0::
.blkb 1
.dbsym e micros_nu0 _micros_nu0 c
_micros_nu::
.blkb 1
.dbsym e micros_nu _micros_nu c
_da_counter::
.blkb 1
.dbsym e da_counter _da_counter c
_key::
.blkb 1
.dbsym e key _key c
_time_da0::
.blkb 2
.dbsym e time_da0 _time_da0 i
_time_da::
.blkb 2
.dbsym e time_da _time_da i
_pull_number::
.blkb 2
.dbsym e pull_number _pull_number i
_out_ctr::
.blkb 2
.dbsym e out_ctr _out_ctr i
_speed::
.blkb 2
.dbsym e speed _speed i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -