?? timerauto.src
字號:
MOV time2,A
; judgement(90,20,20);
; SOURCE LINE # 330
LCALL L?0093
; }
; SOURCE LINE # 331
?C0049:
; if(keykey==1)
; SOURCE LINE # 332
MOV A,keykey
XRL A,#01H
JNZ ?C0044
;
; {
; SOURCE LINE # 334
; chazhi1=abs((int)(avge-avge0));
; SOURCE LINE # 335
CLR C
MOV A,avge+03H
SUBB A,avge0+03H
MOV R7,A
MOV A,avge+02H
SUBB A,avge0+02H
MOV R6,A
LCALL _abs
MOV chazhi1?1055,R7
; if(chazhi1>=20)
; SOURCE LINE # 336
MOV A,chazhi1?1055
CLR C
SUBB A,#014H
JC ?C0051
; {
; SOURCE LINE # 337
; START=1;
; SOURCE LINE # 338
SETB START
; counter2=30;
; SOURCE LINE # 339
MOV counter2,#01EH
; if(avge>(avge0+chazhi-3))
; SOURCE LINE # 340
MOV A,chazhi?1054
ADD A,avge0+03H
MOV R7,A
CLR A
ADDC A,avge0+02H
MOV R6,A
CLR A
ADDC A,avge0+01H
MOV R5,A
CLR A
ADDC A,avge0
MOV R4,A
MOV A,R7
ADD A,#0FDH
MOV R7,A
MOV A,R6
ADDC A,#0FFH
MOV R6,A
MOV A,R5
ADDC A,#0FFH
MOV R5,A
MOV A,R4
ADDC A,#0FFH
MOV R4,A
MOV R3,avge+03H
MOV R2,avge+02H
MOV R1,avge+01H
MOV R0,avge
SETB C
LCALL ?C?ULCMP
JC ?C0052
; {
; SOURCE LINE # 341
; BACK=0;
; SOURCE LINE # 342
; //delayms(5);
; judgementback(0,50,15);
; SOURCE LINE # 344
LCALL L?0092
; }
; SOURCE LINE # 345
?C0052:
; if(avge<(avge0-chazhi))
; SOURCE LINE # 346
MOV R7,chazhi?1054
XCH A,R3
MOV A,R7
XCH A,R3
CLR C
MOV A,avge0+03H
SUBB A,R3
MOV R7,A
MOV A,avge0+02H
SUBB A,#00H
MOV R6,A
MOV A,avge0+01H
SUBB A,#00H
MOV R5,A
MOV A,avge0
SUBB A,#00H
MOV R4,A
MOV R3,avge+03H
MOV R2,avge+02H
MOV R1,avge+01H
MOV R0,avge
CLR C
LCALL ?C?ULCMP
JC $ + 5H
LJMP ?C0044
; {
; SOURCE LINE # 347
;
; BACK=1;
; SOURCE LINE # 349
; //delayms(5);
; judgement(0,50,15);
; SOURCE LINE # 351
;
; }
; SOURCE LINE # 353
; }
; SOURCE LINE # 354
SJMP ?C0091
?C0051:
; else if((chazhi1<20)&&(chazhi1>10))
; SOURCE LINE # 355
MOV A,chazhi1?1055
CLR C
SUBB A,#014H
JNC ?C0055
MOV A,chazhi1?1055
SUBB A,#0AH
JC ?C0055
; {
; SOURCE LINE # 356
; counter2=30;
; SOURCE LINE # 357
MOV counter2,#01EH
; if(avge>(avge0+chazhi-3))
; SOURCE LINE # 358
MOV A,chazhi?1054
ADD A,avge0+03H
MOV R7,A
CLR A
ADDC A,avge0+02H
MOV R6,A
CLR A
ADDC A,avge0+01H
MOV R5,A
CLR A
ADDC A,avge0
MOV R4,A
MOV A,R7
ADD A,#0FDH
MOV R7,A
MOV A,R6
ADDC A,#0FFH
MOV R6,A
MOV A,R5
ADDC A,#0FFH
MOV R5,A
MOV A,R4
ADDC A,#0FFH
MOV R4,A
MOV R3,avge+03H
MOV R2,avge+02H
MOV R1,avge+01H
MOV R0,avge
SETB C
LCALL ?C?ULCMP
JC ?C0056
; {
; SOURCE LINE # 359
; START=1;
; SOURCE LINE # 360
SETB START
; BACK=0;
; SOURCE LINE # 361
; //delayms(5);
; judgementback(0,50,15);
; SOURCE LINE # 363
LCALL L?0092
; }
; SOURCE LINE # 364
?C0056:
; if(avge<(avge0-chazhi))
; SOURCE LINE # 365
MOV R7,chazhi?1054
XCH A,R3
MOV A,R7
XCH A,R3
CLR C
MOV A,avge0+03H
SUBB A,R3
MOV R7,A
MOV A,avge0+02H
SUBB A,#00H
MOV R6,A
MOV A,avge0+01H
SUBB A,#00H
MOV R5,A
MOV A,avge0
SUBB A,#00H
MOV R4,A
MOV R3,avge+03H
MOV R2,avge+02H
MOV R1,avge+01H
MOV R0,avge
CLR C
LCALL ?C?ULCMP
JC $ + 5H
LJMP ?C0044
; {
; SOURCE LINE # 366
; START=1;
; SOURCE LINE # 367
SETB START
; BACK=1;
; SOURCE LINE # 368
?C0091:
SETB BACK
; //delayms(5);
; judgement(0,50,15);
; SOURCE LINE # 370
MOV R3,#0FH
MOV R5,#032H
CLR A
MOV R7,A
LCALL _judgement
; }
; SOURCE LINE # 371
; }
; SOURCE LINE # 372
LJMP ?C0044
?C0055:
; else
; {
; SOURCE LINE # 374
; START=0;
; SOURCE LINE # 375
CLR START
; TR1=1; //開定時器
; SOURCE LINE # 376
SETB TR1
; time1=0;
; SOURCE LINE # 377
CLR A
MOV time1,A
; time2=1;
; SOURCE LINE # 378
MOV time2,#01H
;
; }
; SOURCE LINE # 380
; }
; SOURCE LINE # 381
;
; }
; SOURCE LINE # 383
LJMP ?C0044
; END OF main
CSEG AT 0004BH
LJMP PCA_ISR
; }
; /*PCA中斷子程序*/
; void PCA_ISR (void) interrupt 9
RSEG ?PR?PCA_ISR?TIMERAUTO
USING 0
PCA_ISR:
; SOURCE LINE # 386
; {
;
; CCF0 = 0; /*清匹配中斷標志*/
; SOURCE LINE # 389
CLR CCF0
;
; }
; SOURCE LINE # 391
RETI
; END OF PCA_ISR
CSEG AT 0009BH
LJMP led
; /*鍵盤中斷子程序*/
; void led(void) interrupt 19
RSEG ?PR?led?TIMERAUTO
USING 0
led:
PUSH ACC
PUSH B
PUSH DPH
PUSH DPL
PUSH PSW
MOV A,R0
PUSH ACC
MOV A,R1
PUSH ACC
MOV A,R2
PUSH ACC
MOV A,R3
PUSH ACC
MOV A,R4
PUSH ACC
MOV A,R5
PUSH ACC
MOV A,R6
PUSH ACC
MOV A,R7
PUSH ACC
USING 0
; SOURCE LINE # 393
; {
; uchar key,t;
; EA=0;
; SOURCE LINE # 396
CLR EA
;
; key=CH452_Read();
; SOURCE LINE # 398
LCALL CH452_Read
MOV key?1256,R7
;
; if(0x62==key)
; SOURCE LINE # 400
MOV A,key?1256
CJNE A,#062H,?C0061
; {
; SOURCE LINE # 401
; delayms(2);
; SOURCE LINE # 402
MOV R7,#02H
MOV R6,#00H
LCALL _delayms
; avge0=avge;
; SOURCE LINE # 403
MOV avge0+03H,avge+03H
MOV avge0+02H,avge+02H
MOV avge0+01H,avge+01H
MOV avge0,avge
; black=0;
; SOURCE LINE # 404
MOV black,#00H
; BCD_H_L(avge0-200,1);
; SOURCE LINE # 405
MOV A,avge0+03H
ADD A,#038H
MOV R7,A
MOV A,avge0+02H
ADDC A,#0FFH
MOV R6,A
MOV R5,#01H
LCALL _BCD_H_L
; }
; SOURCE LINE # 406
?C0061:
; if(0x63==key)
; SOURCE LINE # 407
MOV A,key?1256
XRL A,#063H
JNZ ?C0062
; {
; SOURCE LINE # 408
; delayms(2);
; SOURCE LINE # 409
MOV R7,#02H
MOV R6,A
LCALL _delayms
; black=1;
; SOURCE LINE # 410
MOV black,#01H
; xianshi=0;
; SOURCE LINE # 411
MOV xianshi,#00H
; TR0=1;
; SOURCE LINE # 412
SETB TR0
; for(t=0;t<8;t++)
; SOURCE LINE # 413
MOV t?1257,#00H
?C0063:
; CH452_Write((CH452_DIG0+ (t<<8))|16);
; SOURCE LINE # 414
MOV A,t?1257
MOV R6,A
CLR A
ADD A,#00H
MOV R7,A
MOV A,R6
ADDC A,#08H
MOV R6,A
MOV A,R7
ORL A,#010H
MOV R7,A
LCALL _CH452_Write
INC t?1257
MOV A,t?1257
CLR C
SUBB A,#08H
JC ?C0063
?C0064:
; CH452_Write(CH452_DIG1);
; SOURCE LINE # 415
MOV R7,#00H
MOV R6,#09H
LCALL _CH452_Write
; stage_clk_start();
; SOURCE LINE # 416
LCALL stage_clk_start
; }
; SOURCE LINE # 417
?C0062:
; if(0x7A==key)
; SOURCE LINE # 418
MOV A,key?1256
CJNE A,#07AH,?C0066
; {
; SOURCE LINE # 419
; delayms(2);
; SOURCE LINE # 420
MOV R7,#02H
MOV R6,#00H
LCALL _delayms
; counter1=counter1+10;
; SOURCE LINE # 421
MOV A,#0AH
ADD A,counter1
MOV counter1,A
; CH452_Write(CH452_DIG3 | 1);
; SOURCE LINE # 422
MOV R7,#01H
MOV R6,#0BH
LCALL _CH452_Write
; }
; SOURCE LINE # 423
?C0066:
;
; if(0x7B==key)
; SOURCE LINE # 425
MOV A,key?1256
CJNE A,#07BH,?C0067
; {
; SOURCE LINE # 426
; delayms(2);
; SOURCE LINE # 427
MOV R7,#02H
MOV R6,#00H
LCALL _delayms
; counter1=counter1-10;
; SOURCE LINE # 428
MOV A,#0F6H
ADD A,counter1
MOV counter1,A
; CH452_Write(CH452_DIG3 | 0);
; SOURCE LINE # 429
MOV R7,#00H
MOV R6,#0BH
LCALL _CH452_Write
; }
; SOURCE LINE # 430
?C0067:
;
; EA=1;
; SOURCE LINE # 432
SETB EA
; }
; SOURCE LINE # 433
POP ACC
MOV R7,A
POP ACC
MOV R6,A
POP ACC
MOV R5,A
POP ACC
MOV R4,A
POP ACC
MOV R3,A
POP ACC
MOV R2,A
POP ACC
MOV R1,A
POP ACC
MOV R0,A
POP PSW
POP DPL
POP DPH
POP B
POP ACC
RETI
; END OF led
CSEG AT 0000BH
LJMP T0_ISR
;
; /*定時器0中斷子程序*/
; void T0_ISR(void) interrupt 1 using 0
RSEG ?PR?T0_ISR?TIMERAUTO
USING 0
T0_ISR:
PUSH ACC
PUSH B
PUSH DPH
PUSH DPL
PUSH PSW
USING 0
MOV PSW,#00H
; SOURCE LINE # 436
; {
; TR0=0;
; SOURCE LINE # 438
CLR TR0
; TF0=0;
; SOURCE LINE # 439
CLR TF0
; TH0=0x7D ;
; SOURCE LINE # 440
; TL0=0xCC ; //0xCC由0xCB+1得來
; SOURCE LINE # 441
MOV TL0,#0CCH
; TR0=1;
; SOURCE LINE # 442
SETB TR0
; if(T0_OF<10)
; SOURCE LINE # 443
MOV A,T0_OF
CLR C
SUBB A,#0AH
JNC ?C0069
; T0_OF++;
; SOURCE LINE # 444
INC T0_OF
SJMP ?C0075
?C0069:
; else
; {
; SOURCE LINE # 446
;
; if(sec<59)
; SOURCE LINE # 448
MOV A,sec
CLR C
SUBB A,#03BH
JNC ?C0071
; sec++;
; SOURCE LINE # 449
INC sec
?C0071:
; if(sec==59)
; SOURCE LINE # 450
MOV A,sec
CJNE A,#03BH,?C0072
; {
; SOURCE LINE # 451
; sec=0;
; SOURCE LINE # 452
MOV sec,#00H
; min++;
; SOURCE LINE # 453
INC min
; CH452_Write(CH452_DIG3 | min); //先寫min,因為人眼分辨不出
; SOURCE LINE # 454
MOV R7,min
MOV A,#0BH
MOV R6,A
LCALL _CH452_Write
; //CH452_Write(CH452_DIG3 | (min/10));
; CH452_Write(0x1FB);
; SOURCE LINE # 456
MOV R7,#0FBH
MOV R6,#01H
LCALL _CH452_Write
; }
; SOURCE LINE # 457
?C0072:
; CH452_Write(CH452_DIG1 | (sec%10));
; SOURCE LINE # 458
MOV A,sec
MOV B,#0AH
DIV AB
MOV R7,B
MOV A,#09H
MOV R6,A
LCALL _CH452_Write
; CH452_Write(CH452_DIG2 | (sec/10));
; SOURCE LINE # 459
MOV A,sec
MOV B,#0AH
DIV AB
MOV R7,A
MOV A,#0AH
MOV R6,A
LCALL _CH452_Write
; if(stage_clk_flag)
; SOURCE LINE # 460
MOV A,stage_clk_flag
JZ ?C0073
; {
; SOURCE LINE # 461
; stage_sec++;
; SOURCE LINE # 462
INC stage_sec
; CH452_Write(CH452_DIG4 | (stage_sec%10));
; SOURCE LINE # 463
MOV A,stage_sec
MOV B,#0AH
DIV AB
MOV R7,B
MOV A,#0CH
MOV R6,A
LCALL _CH452_Write
; if(stage_sec/10) CH452_Write(CH452_DIG5 | (stage_sec/10));
; SOURCE LINE # 464
MOV A,stage_sec
MOV B,#0AH
DIV AB
MOV R7,A
JZ ?C0073
MOV A,#0DH
MOV R6,A
LCALL _CH452_Write
; }
; SOURCE LINE # 465
?C0073:
; T0_OF=0;
; SOURCE LINE # 466
MOV T0_OF,#00H
; }
; SOURCE LINE # 467
; }
; SOURCE LINE # 468
?C0075:
POP PSW
POP DPL
POP DPH
POP B
POP ACC
RETI
; END OF T0_ISR
CSEG AT 0001BH
LJMP TIMER1_ISR
;
; /*定時器1中斷子程序*/
; void TIMER1_ISR (void) interrupt 3 using 1
RSEG ?PR?TIMER1_ISR?TIMERAUTO
USING 1
TIMER1_ISR:
PUSH ACC
PUSH B
PUSH DPH
PUSH DPL
PUSH PSW
USING 1
MOV PSW,#08H
; SOURCE LINE # 471
; {
; uchar i;
; TF1=0;
; SOURCE LINE # 474
CLR TF1
; TH1=0x7D;
; SOURCE LINE # 475
MOV TH1,#07DH
; TL1=0xFB;
; SOURCE LINE # 476
MOV TL1,#0FBH
; if(time1==1) //執行黑線判斷程序17s
; SOURCE LINE # 477
MOV A,time1
CJNE A,#01H,?C0076
; {
; SOURCE LINE # 478
; if(--counter1==0)
; SOURCE LINE # 479
DJNZ counter1,?C0076
; {
; SOURCE LINE # 480
; TR1=0; //關定時器
; SOURCE LINE # 481
CLR TR1
; time1=0; //標志
; SOURCE LINE # 482
MOV time1,#00H
; keykey=1;//執行角度黑線判斷程序
; SOURCE LINE # 483
MOV keykey,#01H
; black=0; //不執行黑線判斷程序
; SOURCE LINE # 484
MOV black,#00H
; }
; SOURCE LINE # 485
;
; }
; SOURCE LINE # 487
?C0076:
; if(time2==1) //判斷3s后5s顯示
; SOURCE LINE # 488
MOV A,time2
XRL A,#01H
JNZ ?C0083
; { if(--counter2==0)
; SOURCE LINE # 489
DEC counter2
MOV A,counter2
JNZ ?C0083
; {
; SOURCE LINE # 490
; TR1=0; //關定時器
; SOURCE LINE # 491
CLR TR1
; time2=0;//標志
; SOURCE LINE # 492
MOV time2,A
; keykey=0;
; SOURCE LINE # 493
MOV keykey,A
; stage_clk_stop();//顯示平衡的時間
; SOURCE LINE # 494
LCALL stage_clk_stop
; for(i=5;i>0;i--)
; SOURCE LINE # 495
MOV i?1458,#05H
?C0080:
; {
; SOURCE LINE # 496
; CH452_Write(CH452_DIG7 | i);
; SOURCE LINE # 497
MOV R7,i?1458
MOV A,#0FH
MOV R6,A
LCALL _CH452_Write
; SPOKER=1;
; SOURCE LINE # 498
SETB SPOKER
; delay_s(1);
; SOURCE LINE # 499
MOV R7,#01H
LCALL _delay_s
; SPOKER=0;
; SOURCE LINE # 500
CLR SPOKER
; delay_s(1);
; SOURCE LINE # 501
LCALL _delay_s
; }
; SOURCE LINE # 502
DEC i?1458
MOV A,i?1458
SETB C
SUBB A,#00H
JNC ?C0080
?C0081:
; CH452_Write(CH452_DIG7);//計數顯示
; SOURCE LINE # 503
MOV R7,#00H
MOV R6,#0FH
LCALL _CH452_Write
; stage_clk_start();
; SOURCE LINE # 504
LCALL stage_clk_start
; forward=1;//平衡后前進
; SOURCE LINE # 505
MOV forward,#01H
;
; }
; SOURCE LINE # 507
; }
; SOURCE LINE # 508
;
; } ; SOURCE LINE # 510
?C0083:
POP PSW
POP DPL
POP DPH
POP B
POP ACC
RETI
; END OF TIMER1_ISR
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -