📄 backward.src
字号:
; //IN4=1;
; IN5=1;
; SOURCE LINE # 262
SETB IN5
; IN6=1;
; SOURCE LINE # 263
SETB IN6
; START=0;
; SOURCE LINE # 264
CLR START
; time1=1;
; SOURCE LINE # 265
MOV time1,#01H
; time2=1;
; SOURCE LINE # 266
MOV time2,#01H
; counter1=170;
; SOURCE LINE # 267
MOV counter1,#0AAH
; counter2=30;
; SOURCE LINE # 268
MOV counter2,#01EH
?C0044:
; //BACK=0;
; while(1)
; SOURCE LINE # 270
; {
; SOURCE LINE # 271
; LEDG=~LEDG;
; SOURCE LINE # 272
CPL LEDG
; EA=1;
; SOURCE LINE # 273
SETB EA
; avge=pingjun();
; SOURCE LINE # 274
LCALL pingjun
MOV avge+03H,R7
MOV avge+02H,R6
MOV avge+01H,R5
MOV avge,R4
; BCD_H_L(avge-200,0);
; SOURCE LINE # 275
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
; a=IN0;
; SOURCE LINE # 276
MOV C,IN0
CLR A
RLC A
MOV a?,A
; bb=IN1;
; SOURCE LINE # 277
MOV C,IN1
CLR A
RLC A
MOV bb,A
; c=IN2;
; SOURCE LINE # 278
MOV C,IN2
CLR A
RLC A
MOV c?,A
; //d=IN3;
; //e=IN4;
; f=IN5;
; SOURCE LINE # 281
MOV C,IN5
CLR A
RLC A
MOV f,A
; g=IN6;
; SOURCE LINE # 282
MOV C,IN6
CLR A
RLC A
MOV g,A
; if(backward==1)
; SOURCE LINE # 283
MOV A,backward
CJNE A,#01H,?C0046
; {
; SOURCE LINE # 284
; START=1;
; SOURCE LINE # 285
SETB START
; BACK=0;
; SOURCE LINE # 286
CLR BACK
; judgementback(90,20,20);
; SOURCE LINE # 287
MOV R3,#014H
MOV R5,#014H
MOV R7,#05AH
LCALL _judgementback
; }
; SOURCE LINE # 288
?C0046:
;
; if(forward==1)
; SOURCE LINE # 290
MOV A,forward
CJNE A,#01H,?C0047
; {
; SOURCE LINE # 291
; START=1;
; SOURCE LINE # 292
SETB START
; BACK=1; //前进
; SOURCE LINE # 293
SETB BACK
; judgement(90,20,20);
; SOURCE LINE # 294
MOV R3,#014H
MOV R5,#014H
MOV R7,#05AH
LCALL _judgement
;
; }
; SOURCE LINE # 296
?C0047:
; if(black==1)
; SOURCE LINE # 297
MOV A,black
CJNE A,#01H,?C0048
; {
; SOURCE LINE # 298
; START=1;
; SOURCE LINE # 299
SETB START
; TR1=1; //开定时器
; SOURCE LINE # 300
SETB TR1
; time2=0;
; SOURCE LINE # 301
CLR A
MOV time2,A
; judgement(90,20,20);
; SOURCE LINE # 302
MOV R3,#014H
MOV R5,#014H
MOV R7,#05AH
LCALL _judgement
; }
; SOURCE LINE # 303
?C0048:
; if(keykey==1)
; SOURCE LINE # 304
MOV A,keykey
XRL A,#01H
JNZ ?C0044
;
; {
; SOURCE LINE # 306
; chazhi1=abs((int)(avge-avge0));
; SOURCE LINE # 307
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?956,R7
; if(chazhi1>=20)
; SOURCE LINE # 308
MOV A,chazhi1?956
CLR C
SUBB A,#014H
JC ?C0050
; {
; SOURCE LINE # 309
; START=1;
; SOURCE LINE # 310
SETB START
; counter2=30;
; SOURCE LINE # 311
MOV counter2,#01EH
; if(avge>(avge0+chazhi-3))
; SOURCE LINE # 312
MOV A,chazhi?955
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 ?C0051
; {
; SOURCE LINE # 313
; BACK=0;
; SOURCE LINE # 314
CLR BACK
; delayms(5);
; SOURCE LINE # 315
MOV R7,#05H
MOV R6,#00H
LCALL _delayms
; judgement(45,0,10);
; SOURCE LINE # 316
LCALL L?0076
; }
; SOURCE LINE # 317
?C0051:
; if(avge<(avge0-chazhi))
; SOURCE LINE # 318
MOV R7,chazhi?955
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 # 319
;
; BACK=1;
; SOURCE LINE # 321
; delayms(5);
; SOURCE LINE # 322
; judgement(45,0,10);
; SOURCE LINE # 323
;
; }
; SOURCE LINE # 325
; }
; SOURCE LINE # 326
LJMP ?C0075
?C0050:
; else if((chazhi1<20)&&(chazhi1>10))
; SOURCE LINE # 327
MOV A,chazhi1?956
CLR C
SUBB A,#014H
JC $ + 5H
LJMP ?C0054
MOV A,chazhi1?956
SUBB A,#0AH
JC ?C0054
; {
; SOURCE LINE # 328
; counter2=30;
; SOURCE LINE # 329
MOV counter2,#01EH
; if(avge>(avge0+chazhi-3))
; SOURCE LINE # 330
MOV A,chazhi?955
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 ?C0055
; {
; SOURCE LINE # 331
; START=1;
; SOURCE LINE # 332
SETB START
; BACK=0;
; SOURCE LINE # 333
CLR BACK
; delayms(5);
; SOURCE LINE # 334
MOV R7,#05H
MOV R6,#00H
LCALL _delayms
; judgement(45,0,10);
; SOURCE LINE # 335
LCALL L?0076
; }
; SOURCE LINE # 336
?C0055:
; if(avge<(avge0-chazhi))
; SOURCE LINE # 337
MOV R7,chazhi?955
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 # 338
; START=1;
; SOURCE LINE # 339
SETB START
; BACK=1;
; SOURCE LINE # 340
?C0075:
SETB BACK
; delayms(5);
; SOURCE LINE # 341
MOV R7,#05H
MOV R6,#00H
LCALL _delayms
; judgement(45,0,10);
; SOURCE LINE # 342
LCALL L?0077
; }
; SOURCE LINE # 343
; }
; SOURCE LINE # 344
LJMP ?C0044
?C0054:
; else
; {
; SOURCE LINE # 346
; START=0;
; SOURCE LINE # 347
CLR START
; TR1=1; //开定时器
; SOURCE LINE # 348
SETB TR1
; time1=0;
; SOURCE LINE # 349
CLR A
MOV time1,A
; time2=1;
; SOURCE LINE # 350
MOV time2,#01H
;
; }
; SOURCE LINE # 352
; }
; SOURCE LINE # 353
;
; }
; SOURCE LINE # 355
LJMP ?C0044
; END OF main
CSEG AT 0004BH
LJMP PCA_ISR
; }
; /*PCA中断子程序*/
; void PCA_ISR (void) interrupt 9
RSEG ?PR?PCA_ISR?BACKWARD
USING 0
PCA_ISR:
; SOURCE LINE # 358
; {
;
; CCF0 = 0; /*清匹配中断标志*/
; SOURCE LINE # 361
CLR CCF0
;
; }
; SOURCE LINE # 363
RETI
; END OF PCA_ISR
CSEG AT 0009BH
LJMP led
; /*键盘中断子程序*/
; void led(void) interrupt 19
RSEG ?PR?led?BACKWARD
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 # 365
; {
; uchar key;
; EA=0;
; SOURCE LINE # 368
CLR EA
;
; key=CH452_Read();
; SOURCE LINE # 370
LCALL CH452_Read
MOV key?1157,R7
;
; if(0x62==key)
; SOURCE LINE # 372
MOV A,key?1157
CJNE A,#062H,?C0060
; {
; SOURCE LINE # 373
; delayms(2);
; SOURCE LINE # 374
MOV R7,#02H
MOV R6,#00H
LCALL _delayms
; avge0=avge;
; SOURCE LINE # 375
MOV avge0+03H,avge+03H
MOV avge0+02H,avge+02H
MOV avge0+01H,avge+01H
MOV avge0,avge
; black=0;
; SOURCE LINE # 376
MOV black,#00H
; BCD_H_L(avge0-200,1);
; SOURCE LINE # 377
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 # 378
?C0060:
; if(0x63==key)
; SOURCE LINE # 379
MOV A,key?1157
CJNE A,#063H,?C0061
; {
; SOURCE LINE # 380
; delayms(2);
; SOURCE LINE # 381
MOV R7,#02H
MOV R6,#00H
LCALL _delayms
; black=1;
; SOURCE LINE # 382
MOV black,#01H
; //START=1;
; }
; SOURCE LINE # 384
?C0061:
; EA=1;
; SOURCE LINE # 385
SETB EA
; }
; SOURCE LINE # 386
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 0001BH
LJMP TIMER1_ISR
;
; /*定时器中断子程序*/
; void TIMER1_ISR (void) interrupt 3 using 1
RSEG ?PR?TIMER1_ISR?BACKWARD
USING 1
TIMER1_ISR:
PUSH ACC
PUSH B
PUSH DPH
PUSH DPL
PUSH PSW
USING 1
MOV PSW,#08H
; SOURCE LINE # 389
; {
;
; TF1=0;
; SOURCE LINE # 392
CLR TF1
; TH1=0x7D;
; SOURCE LINE # 393
MOV TH1,#07DH
; TL1=0xFB;
; SOURCE LINE # 394
MOV TL1,#0FBH
; if(time1==1) //执行黑线判断程序17s
; SOURCE LINE # 395
MOV A,time1
CJNE A,#01H,?C0063
; {
; SOURCE LINE # 396
; if(--counter1==0)
; SOURCE LINE # 397
DJNZ counter1,?C0063
; {
; SOURCE LINE # 398
; TR1=0; //关定时器
; SOURCE LINE # 399
CLR TR1
; time1=0; //标志
; SOURCE LINE # 400
MOV time1,#00H
; keykey=1;//执行角度黑线判断程序
; SOURCE LINE # 401
MOV keykey,#01H
; black=0; //不执行黑线判断程序
; SOURCE LINE # 402
MOV black,#00H
; }
; SOURCE LINE # 403
;
; }
; SOURCE LINE # 405
?C0063:
; if(time2==1) //判断3s后5s显示
; SOURCE LINE # 406
MOV A,time2
CJNE A,#01H,?C0067
; { if(--counter2==0)
; SOURCE LINE # 407
DJNZ counter2,?C0067
; {
; SOURCE LINE # 408
; TR1=0; //关定时器
; SOURCE LINE # 409
CLR TR1
; time2=0;//标志
; SOURCE LINE # 410
MOV time2,#00H
; confirm();//计数显示
; SOURCE LINE # 411
LCALL confirm
; keykey=0;
; SOURCE LINE # 412
MOV keykey,#00H
; forward=1;//平衡后前进
; SOURCE LINE # 413
MOV forward,#01H
;
;
;
; }
; SOURCE LINE # 417
; }
; SOURCE LINE # 418
;
; } ; SOURCE LINE # 420
?C0067:
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 + -