📄 test.s
字号:
; ddd -> R16,R17
.even
_Delay::
.dbline -1
.dbline 328
; }
; /********************************************************************/
; void Delay(unsigned int ddd) //Delay50Ms() i=0xF8F;
; {
L68:
.dbline 330
.dbline 330
.dbline 330
L69:
.dbline 330
; //ddd=100;
; while(--ddd){;}
movw R24,R16
sbiw R24,1
movw R16,R24
cpi R16,0
cpc R16,R17
brne L68
X0:
.dbline -2
L67:
.dbline 0 ; func end
ret
.dbsym r ddd 16 i
.dbend
.dbfunc e temp_det _temp_det fV
.even
_temp_det::
.dbline -1
.dbline 334
; }
; /********************************************************************/
; void temp_det(void)
; {
.dbline 335
; adc_mux=0X02;
ldi R24,2
sts _adc_mux,R24
.dbline 336
; Delay(0xff); //A/D采样延时
ldi R16,255
ldi R17,0
rcall _Delay
.dbline 337
; ad_reulst();
rcall _ad_reulst
.dbline 338
; if(adc_old <=139 ) //当前温度为80-90
ldi R24,139
ldi R25,0
lds R2,_adc_old
lds R3,_adc_old+1
cp R24,R2
cpc R25,R3
brlo L72
.dbline 339
; {temp_step=80;
.dbline 339
ldi R24,80
sts _temp_step,R24
.dbline 340
; temp_start=139;
ldi R24,139
sts _temp_start+1,R25
sts _temp_start,R24
.dbline 341
; temp_dange=3;
ldi R24,3
sts _temp_dange,R24
.dbline 342
; }
L72:
.dbline 343
; if(adc_old > 139 && adc_old <=178 ) //当前温度为70-80
ldi R24,139
ldi R25,0
lds R2,_adc_old
lds R3,_adc_old+1
cp R24,R2
cpc R25,R3
brsh L74
ldi R24,178
cp R24,R2
cpc R25,R3
brlo L74
.dbline 344
; {temp_step=70;
.dbline 344
ldi R24,70
sts _temp_step,R24
.dbline 345
; temp_start=178;
ldi R24,178
sts _temp_start+1,R25
sts _temp_start,R24
.dbline 346
; temp_dange=4;
ldi R24,4
sts _temp_dange,R24
.dbline 347
; }
L74:
.dbline 348
; if(adc_old > 178 && adc_old <=230 ) //当前温度为60-70
ldi R24,178
ldi R25,0
lds R2,_adc_old
lds R3,_adc_old+1
cp R24,R2
cpc R25,R3
brsh L76
ldi R24,230
cp R24,R2
cpc R25,R3
brlo L76
.dbline 349
; {temp_step=60;
.dbline 349
ldi R24,60
sts _temp_step,R24
.dbline 350
; temp_start=230;
ldi R24,230
sts _temp_start+1,R25
sts _temp_start,R24
.dbline 351
; temp_dange=5;
ldi R24,5
sts _temp_dange,R24
.dbline 352
; }
L76:
.dbline 353
; if(adc_old > 230 && adc_old <=293 ) //当前温度为50-60
ldi R24,230
ldi R25,0
lds R2,_adc_old
lds R3,_adc_old+1
cp R24,R2
cpc R25,R3
brsh L78
ldi R24,293
ldi R25,1
cp R24,R2
cpc R25,R3
brlo L78
.dbline 354
; {temp_step=50;
.dbline 354
ldi R24,50
sts _temp_step,R24
.dbline 355
; temp_start=293;
ldi R24,37
sts _temp_start+1,R25
sts _temp_start,R24
.dbline 356
; temp_dange=6;
ldi R24,6
sts _temp_dange,R24
.dbline 357
; }
L78:
.dbline 358
; if(adc_old > 293 && adc_old <=371 ) //当前温度为40-50
ldi R24,293
ldi R25,1
lds R2,_adc_old
lds R3,_adc_old+1
cp R24,R2
cpc R25,R3
brsh L80
ldi R24,115
cp R24,R2
cpc R25,R3
brlo L80
.dbline 359
; {temp_step=40;
.dbline 359
ldi R24,40
sts _temp_step,R24
.dbline 360
; temp_start=371;
ldi R24,115
sts _temp_start+1,R25
sts _temp_start,R24
.dbline 361
; temp_dange=8;
ldi R24,8
sts _temp_dange,R24
.dbline 362
; }
L80:
.dbline 363
; if(adc_old > 371 && adc_old <=462 ) //当前温度为30-40
ldi R24,371
ldi R25,1
lds R2,_adc_old
lds R3,_adc_old+1
cp R24,R2
cpc R25,R3
brsh L82
ldi R24,206
cp R24,R2
cpc R25,R3
brlo L82
.dbline 364
; {temp_step=30;
.dbline 364
ldi R24,30
sts _temp_step,R24
.dbline 365
; temp_start=462;
ldi R24,206
sts _temp_start+1,R25
sts _temp_start,R24
.dbline 366
; temp_dange=9;
ldi R24,9
sts _temp_dange,R24
.dbline 367
; }
L82:
.dbline 368
; if(adc_old > 462 && adc_old <=562 ) //当前温度为20-30
ldi R24,462
ldi R25,1
lds R2,_adc_old
lds R3,_adc_old+1
cp R24,R2
cpc R25,R3
brsh L84
ldi R24,562
ldi R25,2
cp R24,R2
cpc R25,R3
brlo L84
.dbline 369
; {temp_step=20;
.dbline 369
ldi R24,20
sts _temp_step,R24
.dbline 370
; temp_start=562;
ldi R24,50
sts _temp_start+1,R25
sts _temp_start,R24
.dbline 371
; temp_dange=10;
ldi R24,10
sts _temp_dange,R24
.dbline 372
; }
L84:
.dbline 373
; if(adc_old > 562 && adc_old <=663 ) //当前温度为10-20
ldi R24,562
ldi R25,2
lds R2,_adc_old
lds R3,_adc_old+1
cp R24,R2
cpc R25,R3
brsh L86
ldi R24,151
cp R24,R2
cpc R25,R3
brlo L86
.dbline 374
; {temp_step=10;
.dbline 374
ldi R24,10
sts _temp_step,R24
.dbline 375
; temp_start=663;
ldi R24,151
sts _temp_start+1,R25
sts _temp_start,R24
.dbline 376
; temp_dange=10;
ldi R24,10
sts _temp_dange,R24
.dbline 377
; }
L86:
.dbline 378
; if(adc_old > 663 && adc_old <=758 ) //当前温度为0-10
ldi R24,663
ldi R25,2
lds R2,_adc_old
lds R3,_adc_old+1
cp R24,R2
cpc R25,R3
brsh L88
ldi R24,246
cp R24,R2
cpc R25,R3
brlo L88
.dbline 379
; {temp_step=0;
.dbline 379
clr R2
sts _temp_step,R2
.dbline 380
; temp_start=758;
sts _temp_start+1,R25
sts _temp_start,R24
.dbline 381
; temp_dange=9;
ldi R24,9
sts _temp_dange,R24
.dbline 382
; }
L88:
.dbline 383
; if(adc_old > 758 && adc_old <=839 ) //当前温度为-10~0
ldi R24,758
ldi R25,2
lds R2,_adc_old
lds R3,_adc_old+1
cp R24,R2
cpc R25,R3
brsh L90
ldi R24,839
ldi R25,3
cp R24,R2
cpc R25,R3
brlo L90
.dbline 384
; {temp_step=-10;
.dbline 384
ldi R24,246
sts _temp_step,R24
.dbline 385
; temp_start=839;
ldi R24,71
sts _temp_start+1,R25
sts _temp_start,R24
.dbline 386
; temp_dange=8;
ldi R24,8
sts _temp_dange,R24
.dbline 387
; }
L90:
.dbline 388
lds R2,_adc_old
lds R3,_adc_old+1
lds R16,_temp_start
lds R17,_temp_start+1
sub R16,R2
sbc R17,R3
lds R18,_temp_dange
clr R19
rcall div16u
lds R2,_temp_step
clr R3
sbrc R2,7
com R3
add R2,R16
adc R3,R17
sts _now_temp+1,R3
sts _now_temp,R2
.dbline 389
ldi R24,839
ldi R25,3
lds R2,_adc_old
lds R3,_adc_old+1
cp R24,R2
cpc R25,R3
brsh L92
.dbline 390
.dbline 391
ldi R24,-11
ldi R25,-1
sts _now_temp+1,R25
sts _now_temp,R24
.dbline 392
L92:
.dbline -2
L71:
.dbline 0 ; func end
ret
.dbend
.dbfunc e ad_reulst _ad_reulst fV
.even
_ad_reulst::
.dbline -1
.dbline 396
; now_temp=(temp_step+(temp_start-adc_old)/temp_dange);
; if(adc_old > 839 )
; {
; now_temp=-11;
; }
; }
; /**********************A/D循环采样60次取平均值********************/
; void ad_reulst(void)
; {
.dbline 397
; abc=61;
ldi R24,61
ldi R25,0
sts _abc+1,R25
sts _abc,R24
.dbline 398
; adc_old=0;
clr R2
clr R3
sts _adc_old+1,R3
sts _adc_old,R2
rjmp L96
L95:
.dbline 400
.dbline 400
ldi R16,255
ldi R17,0
rcall _Delay
.dbline 401
lds R2,_adc_rel
lds R3,_adc_rel+1
lds R4,_adc_old
lds R5,_adc_old+1
add R4,R2
adc R5,R3
sts _adc_old+1,R5
sts _adc_old,R4
.dbline 402
L96:
.dbline 399
; while(--abc)
lds R24,_abc
lds R25,_abc+1
sbiw R24,1
sts _abc+1,R25
sts _abc,R24
cpi R24,0
cpc R24,R25
brne L95
X1:
.dbline 403
; {Delay(0xff);
; adc_old=(adc_old+adc_rel);
; }
; adc_old=adc_old/60;
ldi R18,60
ldi R19,0
lds R16,_adc_old
lds R17,_adc_old+1
rcall div16u
sts _adc_old+1,R17
sts _adc_old,R16
.dbline -2
L94:
.dbline 0 ; func end
ret
.dbend
.dbfunc e alarm _alarm fV
.even
_alarm::
.dbline -1
.dbline 407
; }
; /********************************************************************/
; void alarm(void)
; {
.dbline 408
; adc_mux=0X01;
ldi R24,1
sts _adc_mux,R24
.dbline 409
; Delay(0xff); //A/D采样延时
ldi R16,255
ldi R17,0
rcall _Delay
.dbline 410
; ad_reulst();
rcall _ad_reulst
rjmp L100
L99:
.dbline 412
.dbline 413
lds R24,_temp
ori R24,8
sts _temp,R24
.dbline 414
cbi 0xb,3
.dbline 415
cbi 0x5,1
.dbline 416
sbi 0xb,5
.dbline 417
cbi 0x5,7
.dbline 418
cbi 0x5,6
.dbline 419
ldi R16,999
ldi R17,3
rcall _TC1321_SET_1
.dbline 421
ldi R24,1
sts _adc_mux,R24
.dbline 422
ldi R16,255
ldi R17,0
rcall _Delay
.dbline 423
rcall _ad_reulst
.dbline 424
lds R2,_adc_rel
lds R3,_adc_rel+1
sts _adc_old+1,R3
sts _adc_old,R2
.dbline 425
L100:
.dbline 411
; while(adc_old > 440) //检测当前电压是不是大于16.5V
ldi R24,440
ldi R25,1
lds R2,_adc_old
lds R3,_adc_old+1
cp R24,R2
cpc R25,R3
brlo L99
.dbline 426
; {
; temp |= (1<<LED_yes);
; PORTD &= ~(1<<Green); //绿色指示灯灭
; PORTB &= ~(1<<P0); //关断P0 0.16A恒流充电
; PORTD |= (1<<P1); //打开P1 0.16A恒流充电
; PORTB &= ~(1<<P2); //关断P2 0.16A恒流充电
; PORTB &= ~(1<<P3); //关断P3 0.16A恒流充电
; TC1321_SET_1(999); // D/A送电压10V
;
; adc_mux=0X01;
; Delay(0xff); //A/D采样延时
; ad_reulst();
; adc_old=adc_rel;
; }
; temp &= ~(1<<LED_yes);
lds R24,_temp
andi R24,247
sts _temp,R24
.dbline 429
;
;
; adc_mux=0X02;
ldi R24,2
sts _adc_mux,R24
.dbline 430
; Delay(0x4ff); //A/D采样延时
ldi R16,1279
ldi R17,4
rcall _Delay
.dbline 431
; ad_reulst();
rcall _ad_reulst
rjmp L103
L102:
.dbline 433
.dbline 434
cbi 0xb,3
.dbline 435
sbi 0xb,2
.dbline 437
cbi 0x5,1
.dbline 438
sbi 0xb,5
.dbline 439
cbi 0x5,7
.dbline 440
cbi 0x5,6
.dbline 441
ldi R16,999
ldi R17,3
rcall _TC1321_SET_1
.dbline 442
ldi R24,2
sts _adc_mux,R24
.dbline 443
ldi R16,1279
ldi R17,4
rcall _Delay
.dbline 444
rcall _ad_reulst
.dbline 445
lds R2,_adc_rel
lds R3,_adc_rel+1
sts _adc_old+1,R3
sts _adc_old,R2
.dbline 446
L103:
.dbline 432
; while(adc_old < 0x7A) //检测温度有没有大于85摄氏度 0.42V
lds R24,_adc_old
lds R25,_adc_old+1
cpi R24,122
ldi R30,0
cpc R25,R30
brlo L102
.dbline 449
; {
; PORTD &= ~(1<<Green); //绿色指示灯灭
; PORTD |= (1<<Red);
;
; PORTB &= ~(1<<P0); //关断P0 0.16A恒流充电
; PORTD |= (1<<P1); //打开P1 0.16A恒流充电
; PORTB &= ~(1<<P2); //关断P2 0.16A恒流充电
; PORTB &= ~(1<<P3); //关断P3 0.16A恒流充电
; TC1321_SET_1(999); // D/A送电压10.0V
; adc_mux=0X02;
; Delay(0x4ff); //A/D采样延时
; ad_reulst();
; adc_old=adc_rel;
; }
;
;
; if((temp&(1<<anther))==0x20) //0电流检测使能位
lds R24,_temp
andi R24,32
cpi R24,32
breq X2
rjmp L105
X2:
.dbline 450
; {
.dbline 451
; adc_mux=0X07;
ldi R24,7
sts _adc_mux,R24
.dbline 452
; Delay(0xff); //A/D采样延时
ldi R16,255
ldi R17,0
rcall _Delay
.dbline 453
; ad_reulst();
rcall _ad_reulst
.dbline 454
; if(adc_old < 27){Second_count_3=00;} //27
lds R24,_adc_old
lds R25,_adc_old+1
cpi R24,27
ldi R30,0
cpc R25,R30
brlo X3
rjmp L110
X3:
.dbline 454
.dbline 454
clr R2
clr R3
sts _Second_count_3+1,R3
sts _Second_count_3,R2
.dbline 454
rjmp L110
L109:
.dbline 456
; while(adc_old < 27) //检测当前电流是不是为0
; {
.dbline 457
; temp |= (1<<LED_yes);
lds R24,_temp
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -