📄 main.s
字号:
clr R2
sts _adc_num,R2
.dbline 236
; temp = ad_temp>>4;
lds R20,_ad_temp
lds R21,_ad_temp+1
lsr R21
ror R20
lsr R21
ror R20
lsr R21
ror R20
lsr R21
ror R20
.dbline 237
; ad_temp = 0;
clr R3
sts _ad_temp+1,R3
sts _ad_temp,R2
.dbline 239
;
; if(adc_ch==0)
lds R2,_adc_ch
tst R2
brne L80
.dbline 240
; {
.dbline 241
; V[1] = temp;
sts _V+2+1,R21
sts _V+2,R20
.dbline 242
; adc_ch = 1;
ldi R24,1
sts _adc_ch,R24
.dbline 243
; }
rjmp L81
L80:
.dbline 244
; else if(adc_ch==1)
lds R24,_adc_ch
cpi R24,1
brne L83
.dbline 245
; {
.dbline 246
; V[0] = temp;
sts _V+1,R21
sts _V,R20
.dbline 247
; adc_ch = 6;
ldi R24,6
sts _adc_ch,R24
.dbline 248
; }
rjmp L84
L83:
.dbline 249
; else if(adc_ch==6)
lds R24,_adc_ch
cpi R24,6
brne L85
.dbline 250
; {
.dbline 251
; V[3] = temp ;
sts _V+6+1,R21
sts _V+6,R20
.dbline 252
; adc_ch = 7;
ldi R24,7
sts _adc_ch,R24
.dbline 253
; }
rjmp L86
L85:
.dbline 254
; else if(adc_ch==7)
lds R24,_adc_ch
cpi R24,7
brne L88
.dbline 255
; {
.dbline 256
; V[2] = temp ;
sts _V+4+1,R21
sts _V+4,R20
.dbline 257
; adc_ch = 0;
clr R2
sts _adc_ch,R2
.dbline 258
; }
L88:
L86:
L84:
L81:
.dbline 261
L78:
.dbline -2
L77:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r temp 20 i
.dbend
.dbfunc e batt_test _batt_test fV
.even
_batt_test::
.dbline -1
.dbline 273
;
; //abcd();
; }
;
; }
;
;
;
;
; /*---------------------------------------------------------------
; 电池组数检测
; ----------------------------------------------------------------*/
;
; void batt_test(void)
; {
.dbline 274
; if(AD_CH(1)>60) batt =1;
ldi R16,1
rcall _AD_CH
ldi R24,60
ldi R25,0
cp R24,R16
cpc R25,R17
brsh L92
.dbline 274
ldi R24,1
sts _batt,R24
L92:
.dbline 275
; if(AD_CH(0)>120) batt =2;
clr R16
rcall _AD_CH
ldi R24,120
ldi R25,0
cp R24,R16
cpc R25,R17
brsh L94
.dbline 275
ldi R24,2
sts _batt,R24
L94:
.dbline 276
; if(AD_CH(7)>180) batt =3;
ldi R16,7
rcall _AD_CH
ldi R24,180
ldi R25,0
cp R24,R16
cpc R25,R17
brsh L96
.dbline 276
ldi R24,3
sts _batt,R24
L96:
.dbline 277
ldi R16,6
rcall _AD_CH
ldi R24,240
ldi R25,0
cp R24,R16
cpc R25,R17
brsh L98
.dbline 277
ldi R24,4
sts _batt,R24
L98:
.dbline -2
L91:
.dbline 0 ; func end
ret
.dbend
.dbfunc e LED_display _LED_display fV
; temp1 -> <dead>
; l -> R20
; m -> R22
; h -> R10
; temp -> R20,R21
.even
_LED_display::
rcall push_gset3
.dbline -1
.dbline 289
; if(AD_CH(6)>240) batt =4;
;
; }
;
;
;
;
; /*---------------------------------------------------------------
; LED 显示
; ----------------------------------------------------------------*/
;
; void LED_display(void)
; {
.dbline 293
; uint temp,temp1;
; uchar h,m,l;
;
; if(mode==0)
lds R2,_mode
tst R2
breq X6
rjmp L101
X6:
.dbline 294
; {
.dbline 295
; if(batt_num<=1000)
ldi R24,1000
ldi R25,3
lds R2,_batt_num
lds R3,_batt_num+1
cp R24,R2
cpc R25,R3
brlo L103
.dbline 296
; {
.dbline 297
; temp = V[0];
lds R20,_V
lds R21,_V+1
.dbline 299
;
; if(V[0]<131) flas1 = 1;
cpi R20,131
ldi R30,0
cpc R21,R30
brsh L105
.dbline 299
ldi R24,1
sts _flas1,R24
rjmp L106
L105:
.dbline 300
; else flas1 = 0;
clr R2
sts _flas1,R2
L106:
.dbline 302
;
; if(led_time<80 && flas1)
lds R24,_led_time
cpi R24,80
brsh L107
lds R2,_flas1
tst R2
breq L107
.dbline 303
; {
.dbline 304
; CLR_LED1;
cbi 0xb,4
.dbline 305
; CLR_LED2;
cbi 0xb,3
.dbline 306
; CLR_LED3;
cbi 0xb,1
.dbline 307
; CLR_LED4;
cbi 0xb,0
.dbline 308
; }
rjmp L104
L107:
.dbline 310
; else
; {
.dbline 311
; SET_LED1;
sbi 0xb,4
.dbline 312
; CLR_LED2;
cbi 0xb,3
.dbline 313
; CLR_LED3;
cbi 0xb,1
.dbline 314
; CLR_LED4;
cbi 0xb,0
.dbline 315
; }
.dbline 316
; }
rjmp L104
L103:
.dbline 318
;
; else if(batt_num>1000&&batt_num<=2000)
ldi R24,1000
ldi R25,3
lds R2,_batt_num
lds R3,_batt_num+1
cp R24,R2
cpc R25,R3
brsh L109
ldi R24,2000
ldi R25,7
cp R24,R2
cpc R25,R3
brlo L109
.dbline 319
; {
.dbline 320
; temp = V[1]-V[0];
lds R2,_V
lds R3,_V+1
lds R20,_V+2
lds R21,_V+2+1
sub R20,R2
sbc R21,R3
.dbline 321
; if(temp<101) flas2 = 1;
cpi R20,101
ldi R30,0
cpc R21,R30
brsh L112
.dbline 321
ldi R24,1
sts _flas2,R24
rjmp L113
L112:
.dbline 322
; else flas2 = 0;
clr R2
sts _flas2,R2
L113:
.dbline 324
;
; if(led_time<80 && flas2)
lds R24,_led_time
cpi R24,80
brsh L114
lds R2,_flas2
tst R2
breq L114
.dbline 325
; {
.dbline 326
; CLR_LED1;
cbi 0xb,4
.dbline 327
; CLR_LED2;
cbi 0xb,3
.dbline 328
; CLR_LED3;
cbi 0xb,1
.dbline 329
; CLR_LED4;
cbi 0xb,0
.dbline 330
; }
rjmp L110
L114:
.dbline 332
; else
; {
.dbline 333
; CLR_LED1;
cbi 0xb,4
.dbline 334
; SET_LED2;
sbi 0xb,3
.dbline 335
; CLR_LED3;
cbi 0xb,1
.dbline 336
; CLR_LED4;
cbi 0xb,0
.dbline 337
; }
.dbline 338
; }
rjmp L110
L109:
.dbline 339
; else if(batt_num>2000&&batt_num<=3000)
ldi R24,2000
ldi R25,7
lds R2,_batt_num
lds R3,_batt_num+1
cp R24,R2
cpc R25,R3
brsh L116
ldi R24,3000
ldi R25,11
cp R24,R2
cpc R25,R3
brlo L116
.dbline 340
; {
.dbline 341
; temp = V[2]-V[1];
lds R2,_V+2
lds R3,_V+2+1
lds R20,_V+4
lds R21,_V+4+1
sub R20,R2
sbc R21,R3
.dbline 342
; if(temp<101) flas3 = 1;
cpi R20,101
ldi R30,0
cpc R21,R30
brsh L120
.dbline 342
ldi R24,1
sts _flas3,R24
rjmp L121
L120:
.dbline 343
; else flas3 = 0;
clr R2
sts _flas3,R2
L121:
.dbline 345
;
; if(led_time<80 && flas3)
lds R24,_led_time
cpi R24,80
brsh L122
lds R2,_flas3
tst R2
breq L122
.dbline 346
; {
.dbline 347
; CLR_LED1;
cbi 0xb,4
.dbline 348
; CLR_LED2;
cbi 0xb,3
.dbline 349
; CLR_LED3;
cbi 0xb,1
.dbline 350
; CLR_LED4;
cbi 0xb,0
.dbline 351
; }
rjmp L117
L122:
.dbline 353
; else
; {
.dbline 354
; CLR_LED1;
cbi 0xb,4
.dbline 355
; CLR_LED2;
cbi 0xb,3
.dbline 356
; SET_LED3;
sbi 0xb,1
.dbline 357
; CLR_LED4;
cbi 0xb,0
.dbline 358
; }
.dbline 360
;
; }
rjmp L117
L116:
.dbline 361
; else if(batt_num>3000)
ldi R24,3000
ldi R25,11
lds R2,_batt_num
lds R3,_batt_num+1
cp R24,R2
cpc R25,R3
brsh L124
.dbline 362
; {
.dbline 363
; temp = V[3]-V[2];
lds R2,_V+4
lds R3,_V+4+1
lds R20,_V+6
lds R21,_V+6+1
sub R20,R2
sbc R21,R3
.dbline 364
; if(temp<101) flas4 = 1;
cpi R20,101
ldi R30,0
cpc R21,R30
brsh L128
.dbline 364
ldi R24,1
sts _flas4,R24
rjmp L129
L128:
.dbline 365
; else flas4 = 0;
clr R2
sts _flas4,R2
L129:
.dbline 367
;
; if(led_time<80 && flas4)
lds R24,_led_time
cpi R24,80
brsh L130
lds R2,_flas4
tst R2
breq L130
.dbline 368
; {
.dbline 369
; CLR_LED1;
cbi 0xb,4
.dbline 370
; CLR_LED2;
cbi 0xb,3
.dbline 371
; CLR_LED3;
cbi 0xb,1
.dbline 372
; CLR_LED4;
cbi 0xb,0
.dbline 373
; }
rjmp L131
L130:
.dbline 375
; else
; {
.dbline 376
; CLR_LED1;
cbi 0xb,4
.dbline 377
; CLR_LED2;
cbi 0xb,3
.dbline 378
; CLR_LED3;
cbi 0xb,1
.dbline 379
; SET_LED4;
sbi 0xb,0
.dbline 380
; }
L131:
.dbline 382
;
; }
L124:
L117:
L110:
L104:
.dbline 384
;
; temp = ((temp*125)/256)*5;
ldi R16,125
ldi R17,0
movw R18,R20
rcall empy16s
movw R18,R16
mov R18,R19
clr R19
ldi R16,5
ldi R17,0
rcall empy16s
movw R20,R16
.dbline 386
;
; }
rjmp L102
L101:
.dbline 387
; else if(mode==1)
lds R24,_mode
cpi R24,1
brne L132
.dbline 388
; {
.dbline 389
; SET_LED1;
sbi 0xb,4
.dbline 390
; SET_LED2;
sbi 0xb,3
.dbline 391
; CLR_LED3;
cbi 0xb,1
.dbline 392
; CLR_LED4;
cbi 0xb,0
.dbline 393
; temp = out_time;
lds R20,_out_time
clr R21
.dbline 394
; }
rjmp L133
L132:
.dbline 395
; else if(mode==2)
lds R24,_mode
cpi R24,2
brne L134
.dbline 396
; {
.dbline 397
; SET_LED1;
sbi 0xb,4
.dbline 398
; SET_LED2;
sbi 0xb,3
.dbline 399
; SET_LED3;
sbi 0xb,1
.dbline 400
; CLR_LED4;
cbi 0xb,0
.dbline 401
; temp = out_time;
lds R20,_out_time
clr R21
.dbline 402
; }
rjmp L135
L134:
.dbline 403
; else if(mode==3)
lds R24,_mode
cpi R24,3
brne L136
.dbline 404
; {
.dbline 405
; SET_LED1;
sbi 0xb,4
.dbline 406
; SET_LED2;
sbi 0xb,3
.dbline 407
; SET_LED3;
sbi 0xb,1
.dbline 408
; SET_LED4;
sbi 0xb,0
.dbline 409
; temp = (CH.temp+5)/10;
ldi R18,10
ldi R19,0
lds R16,_CH
lds R17,_CH+1
subi R16,251 ; offset = 5
sbci R17,255
rcall div16u
movw R20,R16
.dbline 410
; }
L136:
L135:
L133:
L102:
.dbline 412
;
; h = temp/100;
ldi R18,100
ldi R19,0
movw R16,R20
rcall div16u
mov R10,R16
.dbline 413
; m = temp%100/10;
ldi R18,100
ldi R19,0
movw R16,R20
rcall mod16u
ldi R18,10
ldi R19,0
rcall div16u
mov R22,R16
.dbline 414
; l = temp%100%10;
ldi R18,100
ldi R19,0
movw R16,R20
rcall mod16u
ldi R18,10
ldi R19,0
rcall mod16u
mov R20,R16
.dbline 416
;
; dip_bit ++;
lds R24,_dip_bit
subi R24,255 ; addi 1
sts _dip_bit,R24
.dbline 418
;
; if(dip_bit==2)
cpi R24,2
brne L138
.dbline 419
; {
.dbline 420
; SET_COM1;
sbi 0xb,7
.dbline 421
; CLR_COM2;
cbi 0xb,6
.dbline 422
; CLR_COM3;
cbi 0xb,5
.dbline 423
; PORTB = Char_tab[h] | dp;
ldi R24,<_Char_tab
ldi R25,>_Char_tab
mov R30,R10
clr R31
add R30,R24
adc R31,R25
lpm R30,Z
lds R2,_dp
or R30,R2
out 0x5,R30
.dbline 424
; }
rjmp L139
L138:
.dbline 425
; else if(dip_bit==4)
lds R24,_dip_bit
cpi R24,4
brne L140
.dbline 426
; {
.dbline 427
; CLR_COM1;
cbi 0xb,7
.dbline 428
; SET_COM2;
sbi 0xb,6
.dbline 429
; CLR_COM3;
cbi 0xb,5
.dbline 430
; PORTB = Char_tab[m];
ldi R24,<_Char_tab
ldi R25,>_Char_tab
mov R30,R22
clr R31
add R30,R24
adc R31,R25
lpm R30,Z
out 0x5,R30
.dbline 431
; }
rjmp L141
L140:
.dbline 432
; else if(dip_bit==6)
lds R24,_dip_bit
cpi R24,6
brne L142
.dbline 433
; {
.dbline 434
; CLR_COM1;
cbi 0xb,7
.dbline 435
; CLR_COM2;
cbi 0xb,6
.dbline 436
; SET_COM3;
sbi 0xb,5
.dbline 437
; PORTB = Char_tab[l];
ldi R24,<_Char_tab
ldi R25,>_Char_tab
mov R30,R20
clr R31
add R30,R24
adc R31,R25
lpm R30,Z
out 0x5,R30
.dbline 438
; dip_bit = 0;
clr R2
sts _dip_bit,R2
.dbline 439
; }
L142:
L141:
L139:
.dbline -2
L100:
rcall pop_gset3
.dbline 0 ; func end
ret
.dbsym l temp1 1 i
.dbsym r l 20 c
.dbsym r m 22 c
.dbsym r h 10 c
.dbsym r temp 20 i
.dbend
.dbfunc e key_scan _key_scan fV
; temp -> R16
.even
_key_scan::
.dbline -1
.dbline 448
; }
;
;
; /*---------------------------------------------------------------
; 按键扫描
; ----------------------------------------------------------------*/
;
; void key_scan(void)
; {
.dbline 451
; uchar temp;
;
; PORTC |= 0x0C;
in R24,0x8
ori R24,12
out 0x8,R24
.dbline 453
;
; asm("nop"); asm("nop");
nop
.dbline 453
nop
.dbline 455
;
; temp = PINC & 0x0C;
in R16,0x6
andi R16,12
.dbline 457
;
; if(temp==0x00) // 双键
breq X7
rjmp L145
X7:
.dbline 458
; {
.dbline 459
; key ++;
lds R24,_key
lds R25,_key+1
adiw R24,1
sts _key+1,R25
sts _key,R24
.dbline 460
; if(key>=400)
cpi R24,144
ldi R30,1
cpc R25,R30
brsh X8
rjmp L146
X8:
.dbline 461
; {
.dbline 462
; key = 0;
clr R2
clr R3
sts _key+1,R3
sts _key,R2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -