📄 base.src
字号:
; IN1=1;
; SOURCE LINE # 227
SETB IN1
; IN2=1;
; SOURCE LINE # 228
SETB IN2
; //IN3=1;
; //IN4=1;
; IN5=1;
; SOURCE LINE # 231
SETB IN5
; IN6=1;
; SOURCE LINE # 232
SETB IN6
; START=0;
; SOURCE LINE # 233
CLR START
; LASTS=1;
; SOURCE LINE # 234
SETB LASTS
; time1=1;
; SOURCE LINE # 235
MOV time1,#01H
; time2=1;
; SOURCE LINE # 236
MOV time2,#01H
; counter1=170;
; SOURCE LINE # 237
MOV counter1,#0AAH
; counter2=30;
; SOURCE LINE # 238
MOV counter2,#01EH
; EA=1;
; SOURCE LINE # 239
SETB EA
?C0049:
; while(1)
; SOURCE LINE # 240
; {
; SOURCE LINE # 241
; LEDG=~LEDG;
; SOURCE LINE # 242
CPL LEDG
; avge=pingjun();
; SOURCE LINE # 243
LCALL pingjun
MOV avge+03H,R7
MOV avge+02H,R6
MOV avge+01H,R5
MOV avge,R4
; if(xianshi==1)
; SOURCE LINE # 244
MOV A,xianshi
CJNE A,#01H,?C0051
; {BCD_H_L(avge-200,0); }
; SOURCE LINE # 245
MOV A,R7
ADD A,#038H
MOV R7,A
MOV A,R6
ADDC A,#0FFH
MOV R6,A
CLR A
MOV R5,A
LCALL _BCD_H_L
?C0051:
; a=IN0;
; SOURCE LINE # 246
MOV C,IN0
CLR A
RLC A
MOV a?,A
; bb=IN1;
; SOURCE LINE # 247
MOV C,IN1
CLR A
RLC A
MOV bb,A
; c=IN2;
; SOURCE LINE # 248
MOV C,IN2
CLR A
RLC A
MOV c?,A
; //d=IN3;
; //e=IN4;
; f=IN5;
; SOURCE LINE # 251
MOV C,IN5
CLR A
RLC A
MOV f,A
; g=IN6;
; SOURCE LINE # 252
MOV C,IN6
CLR A
RLC A
MOV g,A
; if(backward==1)
; SOURCE LINE # 253
MOV A,backward
CJNE A,#01H,?C0052
; {
; SOURCE LINE # 254
; START=1;
; SOURCE LINE # 255
SETB START
; LASTS=0;
; SOURCE LINE # 256
CLR LASTS
; BACK=0;
; SOURCE LINE # 257
CLR BACK
; LASTB=1;
; SOURCE LINE # 258
SETB LASTB
; judgementback(90,20,20);
; SOURCE LINE # 259
MOV R3,#014H
MOV R5,#014H
MOV R7,#05AH
LCALL _judgementback
; }
; SOURCE LINE # 260
?C0052:
; if(forward==1)
; SOURCE LINE # 261
MOV A,forward
CJNE A,#01H,?C0053
; {
; SOURCE LINE # 262
; START=1;
; SOURCE LINE # 263
SETB START
; LASTS=0;
; SOURCE LINE # 264
CLR LASTS
; BACK=1; //前进
; SOURCE LINE # 265
SETB BACK
; LASTB=0;
; SOURCE LINE # 266
CLR LASTB
; judgement(90,20,20);
; SOURCE LINE # 267
LCALL L?0093
; }
; SOURCE LINE # 268
?C0053:
; if(black==1)
; SOURCE LINE # 269
MOV A,black
CJNE A,#01H,?C0054
; {
; SOURCE LINE # 270
; START=1;
; SOURCE LINE # 271
SETB START
; LASTS=0;
; SOURCE LINE # 272
CLR LASTS
; TR1=1; //开定时器
; SOURCE LINE # 273
SETB TR1
; time2=0;
; SOURCE LINE # 274
CLR A
MOV time2,A
; judgement(90,20,20);
; SOURCE LINE # 275
LCALL L?0093
; }
; SOURCE LINE # 276
?C0054:
; if(keykey==1)
; SOURCE LINE # 277
MOV A,keykey
XRL A,#01H
JNZ ?C0049
; {
; SOURCE LINE # 278
; chazhi1=abs((int)(avge-avge0));
; SOURCE LINE # 279
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
;---- Variable 'chazhi1?957' assigned to Register 'R7' ----
; if(chazhi1>10) //chazhi1>=20
; SOURCE LINE # 280
MOV A,R7
SETB C
SUBB A,#0AH
JNC $ + 5H
LJMP ?C0056
; {
; SOURCE LINE # 281
; START=1;
; SOURCE LINE # 282
SETB START
; LASTS=0;
; SOURCE LINE # 283
CLR LASTS
; counter2=30;
; SOURCE LINE # 284
MOV counter2,#01EH
; if(avge>(avge0+chazhi-3))
; SOURCE LINE # 285
MOV A,chazhi?956
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 ?C0057
; {
; SOURCE LINE # 286
; BACK=0;
; SOURCE LINE # 287
CLR BACK
; LASTB=1;
; SOURCE LINE # 288
SETB LASTB
; //delayms(5);
; judgementback(0,50,15);
; SOURCE LINE # 290
MOV R3,#0FH
MOV R5,#032H
CLR A
MOV R7,A
LCALL _judgementback
; }
; SOURCE LINE # 291
?C0057:
; if(avge<(avge0-chazhi))
; SOURCE LINE # 292
MOV R7,chazhi?956
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 ?C0049
; {
; SOURCE LINE # 293
;
; BACK=1;
; SOURCE LINE # 295
SETB BACK
; LASTB=0;
; SOURCE LINE # 296
CLR LASTB
; //delayms(5);
; judgement(0,50,15);
; SOURCE LINE # 298
MOV R3,#0FH
MOV R5,#032H
CLR A
MOV R7,A
LCALL _judgement
;
; }
; SOURCE LINE # 300
; }
; SOURCE LINE # 301
LJMP ?C0049
?C0056:
; /*/else if((chazhi1<20)&&())
; //{
; counter2=30;
; if(avge>(avge0+chazhi-3))
; {
; START=1;
; BACK=0;
; //delayms(5);
; judgementback(0,50,15);
; }
; if(avge<(avge0-chazhi))
; {
; START=1;
; BACK=1;
; //delayms(5);
; judgement(0,50,15);
; }
; //}*/
; else
; {
; SOURCE LINE # 321
; START=0;
; SOURCE LINE # 322
CLR START
; LASTS=1;
; SOURCE LINE # 323
SETB LASTS
; TR1=1; //开定时器
; SOURCE LINE # 324
SETB TR1
; time1=0;
; SOURCE LINE # 325
CLR A
MOV time1,A
; time2=1;
; SOURCE LINE # 326
MOV time2,#01H
;
; }
; SOURCE LINE # 328
; }
; SOURCE LINE # 329
;
; }
; SOURCE LINE # 331
LJMP ?C0049
; END OF main
CSEG AT 0004BH
LJMP PCA_ISR
; }
; /*PCA中断子程序*/
; void PCA_ISR (void) interrupt 9
RSEG ?PR?PCA_ISR?BASE
USING 0
PCA_ISR:
; SOURCE LINE # 334
; {
;
; CCF0 = 0; /*清匹配中断标志*/
; SOURCE LINE # 337
CLR CCF0
;
; }
; SOURCE LINE # 339
RETI
; END OF PCA_ISR
CSEG AT 0009BH
LJMP led
; /*键盘中断子程序*/
; void led(void) interrupt 19
RSEG ?PR?led?BASE
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 # 341
; {
; uchar key,t;
; EA=0;
; SOURCE LINE # 344
CLR EA
; key=CH452_Read();
; SOURCE LINE # 345
LCALL CH452_Read
MOV key?1158,R7
; if(0x62==key)
; SOURCE LINE # 346
MOV A,key?1158
CJNE A,#062H,?C0062
; {
; SOURCE LINE # 347
; delayms(2);
; SOURCE LINE # 348
MOV R7,#02H
MOV R6,#00H
LCALL _delayms
; avge0=avge;
; SOURCE LINE # 349
MOV avge0+03H,avge+03H
MOV avge0+02H,avge+02H
MOV avge0+01H,avge+01H
MOV avge0,avge
; black=0;
; SOURCE LINE # 350
MOV black,#00H
; BCD_H_L(avge0-200,1);
; SOURCE LINE # 351
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 # 352
?C0062:
; if(0x63==key)
; SOURCE LINE # 353
MOV A,key?1158
XRL A,#063H
JNZ ?C0063
; {
; SOURCE LINE # 354
; delayms(2);
; SOURCE LINE # 355
MOV R7,#02H
MOV R6,A
LCALL _delayms
; black=1;
; SOURCE LINE # 356
MOV black,#01H
; xianshi=0;
; SOURCE LINE # 357
MOV xianshi,#00H
; TR0=1;
; SOURCE LINE # 358
SETB TR0
; for(t=0;t<8;t++)
; SOURCE LINE # 359
MOV t?1159,#00H
?C0064:
; CH452_Write((CH452_DIG0+ (t<<8))|16);
; SOURCE LINE # 360
MOV A,t?1159
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?1159
MOV A,t?1159
CLR C
SUBB A,#08H
JC ?C0064
?C0065:
; CH452_Write(CH452_DIG1);
; SOURCE LINE # 361
MOV R7,#00H
MOV R6,#09H
LCALL _CH452_Write
; stage_clk_start();
; SOURCE LINE # 362
LCALL stage_clk_start
; }
; SOURCE LINE # 363
?C0063:
; if(0x7A==key)
; SOURCE LINE # 364
MOV A,key?1158
CJNE A,#07AH,?C0067
; {
; SOURCE LINE # 365
; delayms(2);
; SOURCE LINE # 366
MOV R7,#02H
MOV R6,#00H
LCALL _delayms
; counter1=counter1+10;
; SOURCE LINE # 367
MOV A,#0AH
ADD A,counter1
MOV counter1,A
; CH452_Write(CH452_DIG3 | 1);
; SOURCE LINE # 368
MOV R7,#01H
MOV R6,#0BH
LCALL _CH452_Write
; }
; SOURCE LINE # 369
?C0067:
; if(0x7B==key)
; SOURCE LINE # 370
MOV A,key?1158
CJNE A,#07BH,?C0068
; {
; SOURCE LINE # 371
; delayms(2);
; SOURCE LINE # 372
MOV R7,#02H
MOV R6,#00H
LCALL _delayms
; counter1=counter1-10;
; SOURCE LINE # 373
MOV A,#0F6H
ADD A,counter1
MOV counter1,A
; CH452_Write(CH452_DIG3 | 0);
; SOURCE LINE # 374
MOV R7,#00H
MOV R6,#0BH
LCALL _CH452_Write
; }
; SOURCE LINE # 375
?C0068:
; EA=1;
; SOURCE LINE # 376
SETB EA
; }
; SOURCE LINE # 377
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?BASE
USING 0
T0_ISR:
PUSH ACC
PUSH B
PUSH DPH
PUSH DPL
PUSH PSW
USING 0
MOV PSW,#00H
; SOURCE LINE # 380
; {
; TR0=0;
; SOURCE LINE # 382
CLR TR0
; TF0=0;
; SOURCE LINE # 383
CLR TF0
; TH0=0x7D ;
; SOURCE LINE # 384
MOV TH0,#07DH
; TL0=0xCC ; //0xCC由0xCB+1得来
; SOURCE LINE # 385
MOV TL0,#0CCH
; TR0=1;
; SOURCE LINE # 386
SETB TR0
; if(T0_OF<10)
; SOURCE LINE # 387
MOV A,T0_OF
CLR C
SUBB A,#0AH
JNC ?C0070
; T0_OF++;
; SOURCE LINE # 388
INC T0_OF
SJMP ?C0076
?C0070:
; else
; {
; SOURCE LINE # 390
;
; if(sec<59)
; SOURCE LINE # 392
MOV A,sec
CLR C
SUBB A,#03BH
JNC ?C0072
; sec++;
; SOURCE LINE # 393
INC sec
SJMP ?C0073
?C0072:
; else
; {
; SOURCE LINE # 395
; sec=0;
; SOURCE LINE # 396
MOV sec,#00H
; min++;
; SOURCE LINE # 397
INC min
; CH452_Write(CH452_DIG3 | min); //先写min,因为人眼分辨不出
; SOURCE LINE # 398
MOV R7,min
MOV A,#0BH
MOV R6,A
LCALL _CH452_Write
; CH452_Write(0x1FB);
; SOURCE LINE # 399
MOV R7,#0FBH
MOV R6,#01H
LCALL _CH452_Write
; }
; SOURCE LINE # 400
?C0073:
; CH452_Write(CH452_DIG1 | (sec%10));
; SOURCE LINE # 401
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 # 402
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 # 403
MOV A,stage_clk_flag
JZ ?C0074
; {
; SOURCE LINE # 404
; stage_sec++;
; SOURCE LINE # 405
INC stage_sec
; CH452_Write(CH452_DIG4 | (stage_sec%10));
; SOURCE LINE # 406
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 # 407
MOV A,stage_sec
MOV B,#0AH
DIV AB
MOV R7,A
JZ ?C0074
MOV A,#0DH
MOV R6,A
LCALL _CH452_Write
; }
; SOURCE LINE # 408
?C0074:
; T0_OF=0;
; SOURCE LINE # 409
MOV T0_OF,#00H
; }
; SOURCE LINE # 410
; }
; SOURCE LINE # 411
?C0076:
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?BASE
USING 1
TIMER1_ISR:
PUSH ACC
PUSH B
PUSH DPH
PUSH DPL
PUSH PSW
USING 1
MOV PSW,#08H
; SOURCE LINE # 414
; {
; uchar i;
; TR1=0;
; SOURCE LINE # 417
CLR TR1
; TF1=0;
; SOURCE LINE # 418
CLR TF1
; TH1=0x7D;
; SOURCE LINE # 419
MOV TH1,#07DH
; TL1=0xFB;
; SOURCE LINE # 420
MOV TL1,#0FBH
; TR1=1;
; SOURCE LINE # 421
SETB TR1
; if(time1==1) //执行黑线判断程序17s
; SOURCE LINE # 422
MOV A,time1
CJNE A,#01H,?C0077
; {
; SOURCE LINE # 423
; if(--counter1==0)
; SOURCE LINE # 424
DJNZ counter1,?C0077
; {
; SOURCE LINE # 425
; TR1=0; //关定时器
; SOURCE LINE # 426
CLR TR1
; time1=0; //标志
; SOURCE LINE # 427
MOV time1,#00H
; keykey=1;//执行角度黑线判断程序
; SOURCE LINE # 428
MOV keykey,#01H
; black=0; //不执行黑线判断程序
; SOURCE LINE # 429
MOV black,#00H
; }
; SOURCE LINE # 430
;
; }
; SOURCE LINE # 432
?C0077:
; if(time2==1) //判断3s后5s显示
; SOURCE LINE # 433
MOV A,time2
XRL A,#01H
JNZ ?C0084
; { if(--counter2==0)
; SOURCE LINE # 434
DEC counter2
MOV A,counter2
JNZ ?C0084
; {
; SOURCE LINE # 435
; TR1=0; //关定时器
; SOURCE LINE # 436
CLR TR1
; time2=0;//标志
; SOURCE LINE # 437
MOV time2,A
; keykey=0;
; SOURCE LINE # 438
MOV keykey,A
; stage_clk_flag=0;//stage_clk_stop();//显示平衡的时间
; SOURCE LINE # 439
MOV stage_clk_flag,A
; CH452_Write(CH452_TWINKLE | 0x30);
; SOURCE LINE # 440
MOV R7,#030H
MOV R6,#06H
LCALL _CH452_Write
; for(i=5;i>0;i--)
; SOURCE LINE # 441
MOV i?1360,#05H
?C0081:
; {
; SOURCE LINE # 442
; CH452_Write(CH452_DIG7 | i);
; SOURCE LINE # 443
MOV R7,i?1360
MOV A,#0FH
MOV R6,A
LCALL _CH452_Write
; SPOKER=1;
; SOURCE LINE # 444
; delay_s(1);
; SOURCE LINE # 445
; SPOKER=0;
; SOURCE LINE # 446
; delay_s(1);
; SOURCE LINE # 447
LCALL L?0092
; }
; SOURCE LINE # 448
DEC i?1360
MOV A,i?1360
SETB C
SUBB A,#00H
JNC ?C0081
?C0082:
; CH452_Write(CH452_DIG7);//计数显示
; SOURCE LINE # 449
MOV R7,#00H
MOV R6,#0FH
LCALL _CH452_Write
; stage_clk_start();
; SOURCE LINE # 450
LCALL stage_clk_start
; forward=1;//平衡后前进
; SOURCE LINE # 451
MOV forward,#01H
;
; }
; SOURCE LINE # 453
; }
; SOURCE LINE # 454
;
; } ; SOURCE LINE # 456
?C0084:
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 + -