📄 test.s
字号:
; goto step_3;
rjmp L122
L153:
.dbline 671
; }
;
;
; adc_mux=0X07; //采样当前电流大小
ldi R24,7
sts _adc_mux,R24
.dbline 672
; Delay(0xff); //A/D采样延时
ldi R16,255
ldi R17,0
rcall _Delay
.dbline 673
; ad_reulst(); //刷新A/D采样值
rcall _ad_reulst
.dbline 674
; Second_count_3=0; //为3秒等待做准备,因为拔掉电池插座也会满足此条件,但应该进入0电流报警,所以等3秒再检测电流
clr R2
clr R3
sts _Second_count_3+1,R3
sts _Second_count_3,R2
.dbline 675
; if(adc_old > 0x33 && adc_old < 217) //检测当前电流是不是小于2A---0.6V A/D
ldi R24,51
ldi R25,0
lds R2,_adc_old
lds R3,_adc_old+1
cp R24,R2
cpc R25,R3
brlo X13
rjmp L155
X13:
movw R24,R2
cpi R24,217
ldi R30,0
cpc R25,R30
brlo X14
rjmp L155
X14:
.dbline 676
; { //小于则跳到第5步
L157:
.dbline 678
.dbline 685
.dbline 686
L158:
.dbline 677
; while(Second_count_3<4)
lds R24,_Second_count_3
lds R25,_Second_count_3+1
cpi R24,4
ldi R30,0
cpc R25,R30
brlo L157
.dbline 687
; {
; // temp |= (1<<anther);
; // alarm();
; // PORTB &= ~(1<<P0); //关断P0 4A恒流充电
; // PORTD &= ~(1<<P1); //关断P1 4A恒流充电
; // PORTB &= ~(1<<P2); //关断P2 4A恒流充电
; // PORTB |= (1<<P3); //打开P3 4A恒流充电
; ;
; }
; adc_mux=0X07;
ldi R24,7
sts _adc_mux,R24
.dbline 688
; Delay(0xff); //A/D采样延时
ldi R16,255
ldi R17,0
rcall _Delay
.dbline 689
; ad_reulst();
rcall _ad_reulst
.dbline 692
;
;
; Second_count_3=00; //延时3分钟
clr R2
clr R3
sts _Second_count_3+1,R3
sts _Second_count_3,R2
.dbline 693
; Second_count_4=00; //Second_count_1*Second_count_2=60*3
sts _Second_count_4+1,R3
sts _Second_count_4,R2
rjmp L161
L160:
.dbline 695
; while(adc_old > 0x33 && adc_old < 217)//延时3分钟,防止电流反灌
; {
.dbline 696
; TC1321_SET_138(900); // D/A送电压13.8V
ldi R16,900
ldi R17,3
rcall _TC1321_SET_138
L163:
.dbline 697
.dbline 697
.dbline 697
L164:
.dbline 697
; while(Second_count_3<119){;} //死等2分钟
lds R24,_Second_count_3
lds R25,_Second_count_3+1
cpi R24,119
ldi R30,0
cpc R25,R30
brlo L163
rjmp L167
L166:
.dbline 701
;
;
; while(1)
; {
.dbline 702
; adc_mux=0X01; //采样当前电池电压大小
ldi R24,1
sts _adc_mux,R24
.dbline 703
; Delay(0xff); //A/D采样延时
ldi R16,255
ldi R17,0
rcall _Delay
.dbline 704
; ad_reulst(); //刷新A/D采样值
rcall _ad_reulst
.dbline 705
; if(adc_old < 353) //检测当前电压是不是大于13V
lds R24,_adc_old
lds R25,_adc_old+1
cpi R24,97
ldi R30,1
cpc R25,R30
brsh L169
.dbline 706
; {goto step_3;}
.dbline 706
rjmp L122
L169:
.dbline 708
;
; adc_mux=0X07;
ldi R24,7
sts _adc_mux,R24
.dbline 709
; Delay(0xff); //A/D采样延时
ldi R16,255
ldi R17,0
rcall _Delay
.dbline 710
; ad_reulst();
rcall _ad_reulst
.dbline 712
; //if(adc_old > 0x45 )
; if(adc_old > 0x33 && adc_old < 217)
ldi R24,51
ldi R25,0
lds R2,_adc_old
lds R3,_adc_old+1
cp R24,R2
cpc R25,R3
brsh L171
movw R24,R2
cpi R24,217
ldi R30,0
cpc R25,R30
brsh L171
.dbline 713
; {goto step_7;}
.dbline 713
rjmp L131
L171:
.dbline 715
ldi R16,814
ldi R17,3
rcall _TC1321_SET_1
.dbline 716
L167:
.dbline 700
rjmp L166
X7:
.dbline 717
L161:
.dbline 694
ldi R24,51
ldi R25,0
lds R2,_adc_old
lds R3,_adc_old+1
cp R24,R2
cpc R25,R3
brsh L173
movw R24,R2
cpi R24,217
ldi R30,0
cpc R25,R30
brsh X15
rjmp L160
X15:
L173:
.dbline 718
;
; TC1321_SET_1(814); // D/输出14.1V,不补偿
; }
; }
; }
L155:
.dbline 719
L143:
.dbline 638
rjmp L142
X8:
.dbline 722
; }
; /************************ 第五步 分析、绿色灯 12V *****************************/
; step_5:
; goto step_3;
rjmp L122
X9:
.dbline 725
; /****************** 第六步 最高充电电压、15.8V 绿色指示灯 *********************/
; step_6:
; goto step_3;
L131:
.dbline 728
; /******************* 第七步 维护模式、浮充13.8V 绿色指示灯 ********************/
; step_7:
; Second_count_1=00; //延时48小时,等于172800秒
clr R2
clr R3
sts _Second_count_1+1,R3
sts _Second_count_1,R2
.dbline 729
; Second_count_2=00; //Second_count_1*Second_count_2=60*2880
sts _Second_count_2+1,R3
sts _Second_count_2,R2
rjmp L177
L176:
.dbline 731
; while(1)
; {
.dbline 732
; temp |= (1<<anther);
lds R24,_temp
ori R24,32
sts _temp,R24
.dbline 733
; alarm(); //报警扫描
rcall _alarm
.dbline 734
; PORTD |= (1<<Green); //指示灯显示绿色
sbi 0xb,3
.dbline 735
; PORTD &= ~(1<<Red); //红色指示灯灭
cbi 0xb,2
.dbline 737
;
; PORTB &= ~(1<<P0); //关断P0 2A恒流充电
cbi 0x5,1
.dbline 738
; PORTD &= ~(1<<P1); //关断P1 2A恒流充电
cbi 0xb,5
.dbline 739
; PORTB |= (1<<P2); //打开P2 2A恒流充电
sbi 0x5,7
.dbline 740
; PORTB &= ~(1<<P3); //关断P3 2A恒流充电
cbi 0x5,6
.dbline 742
;
; TC1321_SET_138(900); // D/A送电压13.8V
ldi R16,900
ldi R17,3
rcall _TC1321_SET_138
.dbline 744
;
; if(Second_count_2>28880) //大于48小时 28880
ldi R24,28880
ldi R25,112
lds R2,_Second_count_2
lds R3,_Second_count_2+1
cp R24,R2
cpc R25,R3
brsh L179
.dbline 745
; { //则跳到第8步
.dbline 746
; goto step_8;
rjmp L181
L179:
.dbline 750
; }
;
;
; adc_mux=0X07;
ldi R24,7
sts _adc_mux,R24
.dbline 751
; Delay(0xff); //A/D采样延时
ldi R16,255
ldi R17,0
rcall _Delay
.dbline 752
; ad_reulst();
rcall _ad_reulst
.dbline 753
; Second_count_3=00;
clr R2
clr R3
sts _Second_count_3+1,R3
sts _Second_count_3,R2
.dbline 754
; if(adc_old > 56 && adc_old < 90 ) //电流 0.5A
ldi R24,56
ldi R25,0
lds R2,_adc_old
lds R3,_adc_old+1
cp R24,R2
cpc R25,R3
brsh L182
movw R24,R2
cpi R24,90
ldi R30,0
cpc R25,R30
brsh L182
.dbline 755
; {
L184:
.dbline 757
.dbline 764
.dbline 765
L185:
.dbline 756
; while(Second_count_3<3) //等待2秒,因为拔掉电池,电流下降也会满足此条件,但是应该进入
lds R24,_Second_count_3
lds R25,_Second_count_3+1
cpi R24,3
ldi R30,0
cpc R25,R30
brlo L184
.dbline 766
; { //0电流报警,而不该进入第四步,所以等待2秒
; //temp |= (1<<anther);
; //alarm();
; //PORTB &= ~(1<<P0); //关断P0 2A恒流充电
; //PORTD &= ~(1<<P1); //关断P1 2A恒流充电
; //PORTB |= (1<<P2); //打开P2 2A恒流充电
; //PORTB &= ~(1<<P3); //关断P3 2A恒流充电
; ;
; }
; adc_mux=0X07;
ldi R24,7
sts _adc_mux,R24
.dbline 767
; Delay(0xff); //A/D采样延时
ldi R16,255
ldi R17,0
rcall _Delay
.dbline 768
; ad_reulst();
rcall _ad_reulst
.dbline 769
; if(adc_old > 56 && adc_old < 90 )
ldi R24,56
ldi R25,0
lds R2,_adc_old
lds R3,_adc_old+1
cp R24,R2
cpc R25,R3
brsh L187
movw R24,R2
cpi R24,90
ldi R30,0
cpc R25,R30
brsh L187
.dbline 770
; {
.dbline 771
; goto step_8;
rjmp L181
L187:
.dbline 773
; }
; }
L182:
.dbline 776
;
;
; adc_mux=0X01; //采样当前电池电压大小
ldi R24,1
sts _adc_mux,R24
.dbline 777
; Delay(0xff); //A/D采样延时
ldi R16,255
ldi R17,0
rcall _Delay
.dbline 778
; ad_reulst(); //刷新A/D采样值
rcall _ad_reulst
.dbline 779
; if(adc_old < 353) //检测当前电压是不是小于13V
lds R24,_adc_old
lds R25,_adc_old+1
cpi R24,97
ldi R30,1
cpc R25,R30
brsh L189
.dbline 780
; { //小于则跳到第3步
.dbline 781
; goto step_3;
rjmp L122
L189:
.dbline 783
L177:
.dbline 730
rjmp L176
L181:
.dbline 786
; }
; }
; /***************** 第八步 脉冲维护充电 13.8V 绿色指示灯 ***********************/
; step_8:
; _nop_();
nop
rjmp L192
L191:
.dbline 788
; while(1)
; {temp &= ~(1<<anther); //关断0电流报警
.dbline 788
lds R24,_temp
andi R24,223
sts _temp,R24
.dbline 789
; alarm(); //报警扫描
rcall _alarm
.dbline 790
; PORTB &= ~(1<<P0); //关断P0 0.16A恒流充电
cbi 0x5,1
.dbline 791
; PORTD |= (1<<P1); //打开P1 0.16A恒流充电
sbi 0xb,5
.dbline 792
; PORTB &= ~(1<<P2); //关断P2 0.16A恒流充电
cbi 0x5,7
.dbline 793
; PORTB &= ~(1<<P3); //关断P3 0.16A恒流充电
cbi 0x5,6
.dbline 794
; TC1321_SET_1(945); // D/A送电压11.5V
ldi R16,945
ldi R17,3
rcall _TC1321_SET_1
.dbline 795
; PORTD |= (1<<Green); //指示灯显示绿色
sbi 0xb,3
.dbline 796
; PORTD &= ~(1<<Red); //红色指示灯灭
cbi 0xb,2
.dbline 799
;
;
; adc_mux=0X01; //采样当前电池电压大小
ldi R24,1
sts _adc_mux,R24
.dbline 800
; Delay(0xff); //A/D采样延时
ldi R16,255
ldi R17,0
rcall _Delay
.dbline 801
; ad_reulst(); //刷新A/D采样值
rcall _ad_reulst
.dbline 802
; if(adc_old < 345) //检测当前电压是不是小于13V
lds R24,_adc_old
lds R25,_adc_old+1
cpi R24,89
ldi R30,1
cpc R25,R30
brsh L194
.dbline 803
; { //如果小于则跳到第3步
.dbline 804
; goto step_3;
rjmp L122
L194:
.dbline 807
; }
;
; adc_mux=0X01; //采样当前电池电压大小
ldi R24,1
sts _adc_mux,R24
.dbline 808
; Delay(0xff); //A/D采样延时
ldi R16,255
ldi R17,0
rcall _Delay
.dbline 809
; ad_reulst(); //刷新A/D采样值
rcall _ad_reulst
.dbline 810
; if(adc_old < 350) //检测当前电压是不是小于13.2V
lds R24,_adc_old
lds R25,_adc_old+1
cpi R24,94
ldi R30,1
cpc R25,R30
brsh L196
.dbline 811
; { //则用脉冲充电
.dbline 812
; PORTD |= (1<<Green); //指示灯显示绿色
sbi 0xb,3
.dbline 813
; PORTD &= ~(1<<Red); //红色指示灯灭
cbi 0xb,2
.dbline 815
;
; PORTB &= ~(1<<P0); //关断P0 2A恒流充电
cbi 0x5,1
.dbline 816
; PORTD |= (1<<P1); //打开P1 2A恒流充电
sbi 0xb,5
.dbline 817
; PORTB &= ~(1<<P2); //关断P2 2A恒流充电
cbi 0x5,7
.dbline 818
; PORTB &= ~(1<<P3); //关断P3 2A恒流充电
cbi 0x5,6
.dbline 819
; TC1321_SET_138(892); // D/A送电压13.8V
ldi R16,892
ldi R17,3
rcall _TC1321_SET_138
.dbline 821
;
; adc_mux=0X01; //采样当前电池电压大小
ldi R24,1
sts _adc_mux,R24
.dbline 822
; Delay(0xff); //A/D采样延时
ldi R16,255
ldi R17,0
rcall _Delay
.dbline 823
; ad_reulst(); //刷新A/D采样值
rcall _ad_reulst
rjmp L199
L198:
.dbline 827
.dbline 828
ldi R24,1
sts _adc_mux,R24
.dbline 829
ldi R16,255
ldi R17,0
rcall _Delay
.dbline 830
rcall _ad_reulst
.dbline 831
L199:
.dbline 826
;
;
; while(adc_old >= 345 && adc_old < 365) //检测当前电压是不是小于13.75V
lds R24,_adc_old
lds R25,_adc_old+1
cpi R24,89
ldi R30,1
cpc R25,R30
brlo L201
cpi R24,109
ldi R30,1
cpc R25,R30
brlo L198
L201:
.dbline 832
; {
; adc_mux=0X01; //采样当前电池电压大小
; Delay(0xff); //A/D采样延时
; ad_reulst(); //刷新A/D采样值
; }
; }
L196:
.dbline 833
L192:
.dbline 787
rjmp L191
X10:
.dbline 834
L120:
.dbline 566
rjmp L122
X11:
.dbline -2
L116:
.dbline 0 ; func end
ret
.dbsym l i 1 c
.dbend
.area bss(ram, con, rel)
.dbfile E:\MYDATA~1\DIFAMO~1\soft_Difa\test.c
_temp1::
.blkb 1
.dbsym e temp1 _temp1 c
_xyz::
.blkb 2
.dbsym e xyz _xyz i
_abc::
.blkb 2
.dbsym e abc _abc i
_temp_rep::
.blkb 2
.dbsym e temp_rep _temp_rep I
_now_temp::
.blkb 2
.dbsym e now_temp _now_temp I
_DA_result::
.blkb 1
.dbsym e DA_result _DA_result c
_adc_mux::
.blkb 1
.dbsym e adc_mux _adc_mux c
_Second_count_4::
.blkb 2
.dbsym e Second_count_4 _Second_count_4 i
_Second_count_3::
.blkb 2
.dbsym e Second_count_3 _Second_count_3 i
_Second_count_2::
.blkb 2
.dbsym e Second_count_2 _Second_count_2 i
_Second_count_1::
.blkb 2
.dbsym e Second_count_1 _Second_count_1 i
_adc_rel::
.blkb 2
.dbsym e adc_rel _adc_rel i
_cycle::
.blkb 1
.dbsym e cycle _cycle c
_temp::
.blkb 1
.dbsym e temp _temp c
_temp_dange::
.blkb 1
.dbsym e temp_dange _temp_dange c
_temp_step::
.blkb 1
.dbsym e temp_step _temp_step C
_temp_start::
.blkb 2
.dbsym e temp_start _temp_start i
_xxyy::
.blkb 2
.dbsym e xxyy _xxyy i
_adc_old:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -