📄 pump.src
字号:
RSEG ?PR?T0_ISR?PUMP
USING 0
T0_ISR:
PUSH ACC
PUSH B
PUSH DPH
PUSH DPL
PUSH PSW
MOV PSW,#00H
PUSH AR0
PUSH AR1
PUSH AR2
PUSH AR3
PUSH AR4
PUSH AR5
PUSH AR6
PUSH AR7
USING 0
; SOURCE LINE # 445
; { TR0=0;
; SOURCE LINE # 446
CLR TR0
; TL0=((-PWM_Width)&0xff);
; SOURCE LINE # 447
MOV A,PWM_Width+01H
CPL A
INC A
MOV TL0,A
; TH0=((-PWM_Width>>8)&0xff);
; SOURCE LINE # 448
CLR C
CLR A
SUBB A,PWM_Width+01H
CLR A
SUBB A,PWM_Width
MOV TH0,A
; TR0=1;
; SOURCE LINE # 449
SETB TR0
; BUFFER++;
; SOURCE LINE # 450
INC BUFFER+01H
MOV A,BUFFER+01H
JNZ ?C0191
INC BUFFER
?C0191:
; if(BUFFER==Buffer_NUM)
; SOURCE LINE # 451
CJNE A,Buffer_NUM+01H,?C0072
MOV A,BUFFER
CJNE A,Buffer_NUM,?C0072
; { BUFFER=0;
; SOURCE LINE # 452
MOV BUFFER,#00H
MOV BUFFER+01H,#00H
; SM_CLK1=!SM_CLK1;
; SOURCE LINE # 453
CPL SM_CLK1
; }
; SOURCE LINE # 454
?C0072:
; All_Pulse--;
; SOURCE LINE # 455
MOV A,All_Pulse+03H
ADD A,#0FFH
MOV All_Pulse+03H,A
MOV A,All_Pulse+02H
ADDC A,#0FFH
MOV All_Pulse+02H,A
MOV A,All_Pulse+01H
ADDC A,#0FFH
MOV All_Pulse+01H,A
MOV A,All_Pulse
ADDC A,#0FFH
MOV All_Pulse,A
; if(All_Pulse==0)
; SOURCE LINE # 456
CLR A
MOV R7,A
MOV R6,A
MOV R5,A
MOV R4,A
MOV R3,All_Pulse+03H
MOV R2,All_Pulse+02H
MOV R1,All_Pulse+01H
MOV R0,All_Pulse
CLR C
LCALL ?C?ULCMP
JNZ ?C0074
; { SR_Flag=0;
; SOURCE LINE # 457
CLR SR_Flag
; SM_SR();
; SOURCE LINE # 458
LCALL SM_SR
; }
; SOURCE LINE # 459
; }
; SOURCE LINE # 460
?C0074:
POP AR7
POP AR6
POP AR5
POP AR4
POP AR3
POP AR2
POP AR1
POP AR0
POP PSW
POP DPL
POP DPH
POP B
POP ACC
RETI
; END OF T0_ISR
; /**********************************************************************************************
; 函数:void SM_SR(void)
; 说明:电机运行控制,当运行标志为1时,电机运转,反之停转
; ***********************************************************************************************/
; void SM_SR(void)
RSEG ?PR?SM_SR?PUMP
SM_SR:
USING 0
; SOURCE LINE # 465
; { if(SR_Flag)
; SOURCE LINE # 466
JNB SR_Flag,?C0075
; {
; SOURCE LINE # 467
; T0_Set();
; SOURCE LINE # 468
LCALL T0_Set
; SM_RST=1;
; SOURCE LINE # 469
SETB SM_RST
; nop(5);
; SOURCE LINE # 470
LCALL L?0239
; SM_EN=1;
; SOURCE LINE # 471
SETB SM_EN
; // nop(5);
; // ET1=1;
; // EIE2=0x01;
; // TR1=1;
; // TR2=1;
; // TMR3CN=0x04;
; }
; SOURCE LINE # 478
RET
?C0075:
; else
; { SM_EN=0;
; SOURCE LINE # 480
CLR SM_EN
; SM_RST=0;
; SOURCE LINE # 481
CLR SM_RST
; TR0=0;
; SOURCE LINE # 482
CLR TR0
; // ET0=0;
; TR1=0;
; SOURCE LINE # 484
CLR TR1
; TR2=0;
; SOURCE LINE # 485
CLR TR2
; TMR3CN=0x00;
; SOURCE LINE # 486
CLR A
MOV TMR3CN,A
; }
; SOURCE LINE # 487
; }
; SOURCE LINE # 488
?C0077:
RET
; END OF SM_SR
; /**********************************************************************************************
; 函数:void DAC0_Set(void)
; 说明:设置斩波驱动的比较电压,取内部电压基准2.4V,给DAC偏置,考虑电流为400mA,取样电阻阻值为0.7,
; 目前取0.26V,采用12位分辨率时,应先设置DAC0L,后设置DAC0H
; ***********************************************************************************************/
; void DAC0_Set(void)
RSEG ?PR?DAC0_Set?PUMP
DAC0_Set:
; SOURCE LINE # 494
; { REF0CN=0x03;
; SOURCE LINE # 495
MOV REF0CN,#03H
; DAC0L=(0xff&DAC0_DATA);
; SOURCE LINE # 496
MOV DAC0L,#0BCH
; DAC0H=(0xff&(DAC0_DATA>>8));
; SOURCE LINE # 497
MOV DAC0H,#01H
; DAC0CN=0x80;
; SOURCE LINE # 498
MOV DAC0CN,#080H
; }
; SOURCE LINE # 499
RET
; END OF DAC0_Set
; /**********************************************************************************************
; 函数:void DAC1_Set(void)
; 说明:设置LM306P的比较电压,取内部电压基准2.4V,给DAC偏置,暂取1.8V,初值十六进制为0x0c00,采用
; 12位分辨率时,应先设置DAC1L,后设置DAC1H
; ***********************************************************************************************/
; void DAC1_Set(void)
RSEG ?PR?DAC1_Set?PUMP
DAC1_Set:
; SOURCE LINE # 505
; { REF0CN=0x03;
; SOURCE LINE # 506
MOV REF0CN,#03H
; DAC1L=(0xff&DAC1_DATA);
; SOURCE LINE # 507
CLR A
MOV DAC1L,A
; DAC1H=(0xff&(DAC1_DATA>>8));
; SOURCE LINE # 508
MOV DAC1H,#0CH
; DAC1CN=0x80;
; SOURCE LINE # 509
MOV DAC1CN,#080H
; }
; SOURCE LINE # 510
RET
; END OF DAC1_Set
; /**********************************************************************************************
; 函数:void ADC_Set(void)
; 说明:取内部参考电压2.4V,当检测到电源电压大于2.28V,或是小于1.93V时,提示电源电压低于限定值,
; 停机,报警。选用通道0,单端输入方式,窗口比较模式.采样后结果为2.04,电压表测量为2.06V,
; 还可以
; ***********************************************************************************************/
; void ADC_Set(void)
RSEG ?PR?ADC_Set?PUMP
ADC_Set:
; SOURCE LINE # 517
; { AMX0CF = 0x00;
; SOURCE LINE # 518
CLR A
MOV AMX0CF,A
; AMX0SL = 0x00;
; SOURCE LINE # 519
MOV AMX0SL,A
; ADC0CF = 0x60;
; SOURCE LINE # 520
MOV ADC0CF,#060H
; ADC0CN = 0x48;
; SOURCE LINE # 521
MOV ADC0CN,#048H
; ADC0LTH = 0x0C;
; SOURCE LINE # 522
MOV ADC0LTH,#0CH
; ADC0LTL = 0xA1;
; SOURCE LINE # 523
MOV ADC0LTL,#0A1H
; ADC0GTH = 0x0F;
; SOURCE LINE # 524
MOV ADC0GTH,#0FH
; ADC0GTL = 0x33;
; SOURCE LINE # 525
MOV ADC0GTL,#033H
; ADCEN=1;
; SOURCE LINE # 526
SETB ADCEN
; }
; SOURCE LINE # 527
RET
; END OF ADC_Set
CSEG AT 00043H
LJMP ADC_ISR
; /**********************************************************************************************
; 函数:void ADC_ISR(void) interrupt 8
; 说明:ADC中断函数,当电源电压低于正常值时,停机,报警 (模拟电源需要关闭,不知是什么意思)
; ***********************************************************************************************/
; void ADC_ISR(void) interrupt 8
RSEG ?PR?ADC_ISR?PUMP
USING 0
ADC_ISR:
PUSH ACC
PUSH PSW
MOV PSW,#00H
PUSH AR4
PUSH AR5
PUSH AR6
PUSH AR7
USING 0
; SOURCE LINE # 532
; { EIE1=0x00;
; SOURCE LINE # 533
MOV EIE1,#00H
; Lpower_LED=0;
; SOURCE LINE # 534
CLR Lpower_LED
; SR_Flag=0;
; SOURCE LINE # 535
CLR SR_Flag
; SM_SR();
; SOURCE LINE # 536
LCALL SM_SR
; }
; SOURCE LINE # 537
POP AR7
POP AR6
POP AR5
POP AR4
POP PSW
POP ACC
RETI
; END OF ADC_ISR
; /**********************************************************************************************
; 函数:void T1_Set(void)
; 说明:定时器T1寄存器设置函数
; ***********************************************************************************************/
; void T1_Set(void)
RSEG ?PR?T1_Set?PUMP
T1_Set:
; SOURCE LINE # 542
; {
; SOURCE LINE # 543
; // TMOD=0x51;
; TL1=(0xff&(-Bubble_NUM));
; SOURCE LINE # 545
MOV TL1,#0FFH
; TH1=(0xff&(-Bubble_NUM>>8));
; SOURCE LINE # 546
MOV TH1,#0FFH
; TR1=0;
; SOURCE LINE # 547
CLR TR1
; }
; SOURCE LINE # 548
RET
; END OF T1_Set
CSEG AT 0001BH
LJMP T1_ISR
; /**********************************************************************************************
; 函数:void T1_ISR(void)
; 说明:定时器T1中断服务函数
; ***********************************************************************************************/
; void T1_ISR(void) interrupt 3
RSEG ?PR?T1_ISR?PUMP
USING 0
T1_ISR:
PUSH ACC
PUSH B
PUSH DPH
PUSH DPL
PUSH PSW
MOV PSW,#00H
PUSH AR0
PUSH AR1
PUSH AR2
PUSH AR3
PUSH AR4
PUSH AR5
PUSH AR6
PUSH AR7
USING 0
; SOURCE LINE # 553
; {
; TR1=0;
; SOURCE LINE # 555
CLR TR1
; ET1=0;
; SOURCE LINE # 556
CLR ET1
; TR2=0;
; SOURCE LINE # 557
CLR TR2
; TMR3CN=0x00;
; SOURCE LINE # 558
MOV TMR3CN,#00H
; EIE2=0x00;
; SOURCE LINE # 559
MOV EIE2,#00H
; Bubble_alarm();
; SOURCE LINE # 560
LCALL Bubble_alarm
; }
; SOURCE LINE # 561
POP AR7
POP AR6
POP AR5
POP AR4
POP AR3
POP AR2
POP AR1
POP AR0
POP PSW
POP DPL
POP DPH
POP B
POP ACC
RETI
; END OF T1_ISR
; /**********************************************************************************************
; 函数:void PCA_ADC(void)
; 说明:软件定时器方式,做第五个定时器用
; ***********************************************************************************************/
; void PCA_ADC(void)
RSEG ?PR?PCA_ADC?PUMP
PCA_ADC:
; SOURCE LINE # 566
; { PCA0MD = 0x02;
; SOURCE LINE # 567
MOV PCA0MD,#02H
; PCA0CN = 0x00;
; SOURCE LINE # 568
CLR A
MOV PCA0CN,A
; PCA0H = 0x00;
; SOURCE LINE # 569
MOV PCA0H,A
; PCA0L = 0x00;
; SOURCE LINE # 570
MOV PCA0L,A
; PCA0CPM0 = 0x4C;
; SOURCE LINE # 571
MOV PCA0CPM0,#04CH
; PCA0CPL0 = 0x88;
; SOURCE LINE # 572
MOV PCA0CPL0,#088H
; PCA0CPH0 = 0x88;
; SOURCE LINE # 573
MOV PCA0CPH0,#088H
; CR=1;
; SOURCE LINE # 574
SETB CR
; }
; SOURCE LINE # 575
RET
; END OF PCA_ADC
; /**********************************************************************************************
; 函数:void T2_Set(void)
; 说明:定时器T2寄存器设置函数,用来对超声波传感器处理后的信号进行计数,当无气泡时,在定时器溢出
; 前自动重载,如果有气泡,则会发生溢出。T2用于判断大于0.3ml的气泡。
; ***********************************************************************************************/
; void T2_Set(void)
RSEG ?PR?T2_Set?PUMP
T2_Set:
; SOURCE LINE # 581
; { RCAP2L=(0xff&(-Delay_LTime));
; SOURCE LINE # 582
MOV RCAP2L,#0DCH
; RCAP2H=(0xff&(-Delay_LTime>>8));
; SOURCE LINE # 583
MOV RCAP2H,#0BH
; TL2=(0xff&(-Delay_LTime));
; SOURCE LINE # 584
MOV TL2,#0DCH
; TH2=(0xff&(-Delay_LTime>>8));
; SOURCE LINE # 585
MOV TH2,#0BH
; T2CON=0x08;
; SOURCE LINE # 586
MOV T2CON,#08H
; TR2=0;
; SOURCE LINE # 587
CLR TR2
; }
; SOURCE LINE # 588
RET
; END OF T2_Set
; /**********************************************************************************************
; 函数:void T3_Set(void)
; 说明:定时器T3寄存器设置函数
; ***********************************************************************************************/
; void T3_Set(void)
RSEG ?PR?T3_Set?PUMP
T3_Set:
USING 0
; SOURCE LINE # 593
; { TMR3CN=0x00;
; SOURCE LINE # 594
CLR A
MOV TMR3CN,A
; SMB0CN=0xC1;
; SOURCE LINE # 595
MOV SMB0CN,#0C1H
; TMR3L=(0xff&(-Delay_STime));
; SOURCE LINE # 596
MOV TMR3L,#03CH
; TMR3H=(0xff&(-Delay_STime>>8));
; SOURCE LINE # 597
MOV TMR3H,#0F6H
; TMR3RLL=(0xff&(-Delay_STime));
; SOURCE LINE # 598
MOV TMR3RLL,#03CH
; TMR3RLH=(0xff&(-Delay_STime>>8));
; SOURCE LINE # 599
MOV TMR3RLH,#0F6H
; // TMR3CN=0x04;
; SCL=0;
; SOURCE LINE # 601
CLR SCL
; nop(20);
; SOURCE LINE # 602
MOV R7,#014H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -