📄 pump.src
字号:
MOV R6,A
LCALL _nop
; SCL=1;
; SOURCE LINE # 603
SETB SCL
; }
; SOURCE LINE # 604
RET
; END OF T3_Set
CSEG AT 00073H
LJMP T3_ISR
; /**********************************************************************************************
; 函数:void T3_ISR(void)
; 说明:定时器T3中断服务函数
; ***********************************************************************************************/
; void T3_ISR(void) interrupt 14
RSEG ?PR?T3_ISR?PUMP
USING 0
T3_ISR:
; SOURCE LINE # 609
; {
; TMR3CN=0x04;
; SOURCE LINE # 611
MOV TMR3CN,#04H
; T1IN=!T1IN;
; SOURCE LINE # 612
CPL T1IN
; }
; SOURCE LINE # 613
RETI
; END OF T3_ISR
; /**********************************************************************************************
; 函数:void data_inv(void)
; 说明:将键盘设置的流量或滴数转换为电机的控制参数,以滴作为基本单位,0.1ml对应为2滴.考虑中断循
; 环的时间,需要加上修正系数。
; ***********************************************************************************************/
; void data_inv(void)
RSEG ?PR?data_inv?PUMP
data_inv:
USING 0
; SOURCE LINE # 619
; {uint c;
; SOURCE LINE # 620
; ulint a,b;
; // if(Fluxdrop_Flag)
; // Drop_Num=temp[3]+10*temp[2]+100*temp[1];
; // else
; // Drop_Num=2*temp[3]+20*temp[2]+200*temp[1];
; if(Drop_Num==1)
; SOURCE LINE # 626
MOV A,Drop_Num+01H
XRL A,#01H
ORL A,Drop_Num
JNZ ?C0088
; Buffer_NUM=2;
; SOURCE LINE # 627
MOV Buffer_NUM,A
MOV Buffer_NUM+01H,#02H
SJMP ?C0089
?C0088:
; // else if((Drop_Num>4)&&(Drop_Num<25))
; // Buffer_NUM=10;
; else
; Buffer_NUM=1;
; SOURCE LINE # 631
MOV Buffer_NUM,#00H
MOV Buffer_NUM+01H,#01H
?C0089:
; // a=15000000/(Drop_Num*Drop_NStep);
; // b=a-2;
; // c=b/Buffer_NUM;
; // PWM_Width=c-2;
; Flux_Pulse=0.2403*Drop_Num*Drop_Num+48.956*Drop_Num-0.0008*Drop_Num*Drop_Num*Drop_Num+169.8705;
; SOURCE LINE # 636
MOV R4,Drop_Num
MOV R5,Drop_Num+01H
CLR A
LCALL ?C?FCASTI
MOV R3,#034H
MOV R2,#011H
MOV R1,#076H
MOV R0,#03EH
LCALL ?C?FPMUL
PUSH AR4
PUSH AR5
PUSH AR6
PUSH AR7
MOV R4,Drop_Num
MOV R5,Drop_Num+01H
CLR A
LCALL ?C?FCASTI
POP AR3
POP AR2
POP AR1
POP AR0
LCALL ?C?FPMUL
PUSH AR4
PUSH AR5
PUSH AR6
PUSH AR7
MOV R4,Drop_Num
MOV R5,Drop_Num+01H
CLR A
LCALL ?C?FCASTI
MOV R3,#0F2H
MOV R2,#0D2H
MOV R1,#043H
MOV R0,#042H
LCALL ?C?FPMUL
POP AR3
POP AR2
POP AR1
POP AR0
LCALL ?C?FPADD
PUSH AR4
PUSH AR5
PUSH AR6
PUSH AR7
MOV R4,Drop_Num
MOV R5,Drop_Num+01H
CLR A
LCALL ?C?FCASTI
MOV R3,#017H
MOV R2,#0B7H
MOV R1,#051H
MOV R0,#03AH
LCALL ?C?FPMUL
PUSH AR4
PUSH AR5
PUSH AR6
PUSH AR7
MOV R4,Drop_Num
MOV R5,Drop_Num+01H
CLR A
LCALL ?C?FCASTI
POP AR3
POP AR2
POP AR1
POP AR0
LCALL ?C?FPMUL
PUSH AR4
PUSH AR5
PUSH AR6
PUSH AR7
MOV R4,Drop_Num
MOV R5,Drop_Num+01H
CLR A
LCALL ?C?FCASTI
POP AR3
POP AR2
POP AR1
POP AR0
LCALL ?C?FPMUL
MOV R0,AR4
MOV R1,AR5
MOV R2,AR6
MOV R3,AR7
POP AR7
POP AR6
POP AR5
POP AR4
LCALL ?C?FPSUB
MOV R3,#0D9H
MOV R2,#0DEH
MOV R1,#029H
MOV R0,#043H
LCALL ?C?FPADD
LCALL ?C?CASTF
MOV Flux_Pulse+03H,R7
MOV Flux_Pulse+02H,R6
MOV Flux_Pulse+01H,R5
MOV Flux_Pulse,R4
; a=15000000/Flux_Pulse;
; SOURCE LINE # 637
MOV R3,Flux_Pulse+03H
MOV R2,Flux_Pulse+02H
MOV R1,Flux_Pulse+01H
MOV R0,Flux_Pulse
MOV R7,#0C0H
MOV R6,#0E1H
MOV R5,#0E4H
MOV R4,#00H
LCALL ?C?ULDIV
MOV a?3459+03H,R7
MOV a?3459+02H,R6
MOV a?3459+01H,R5
MOV a?3459,R4
; b=a-2;
; SOURCE LINE # 638
MOV A,a?3459+03H
ADD A,#0FEH
MOV b?3460+03H,A
MOV A,a?3459+02H
ADDC A,#0FFH
MOV b?3460+02H,A
MOV A,a?3459+01H
ADDC A,#0FFH
MOV b?3460+01H,A
MOV A,a?3459
ADDC A,#0FFH
MOV b?3460,A
; c=b/Buffer_NUM;
; SOURCE LINE # 639
MOV R6,Buffer_NUM
MOV R7,Buffer_NUM+01H
MOV R3,AR7
MOV R2,AR6
CLR A
MOV R1,A
MOV R0,A
MOV R7,b?3460+03H
MOV R6,b?3460+02H
MOV R5,b?3460+01H
MOV R4,b?3460
LCALL ?C?ULDIV
;---- Variable 'c?3458' assigned to Register 'R6/R7' ----
; PWM_Width=c-2;
; SOURCE LINE # 640
MOV A,R7
ADD A,#0FEH
MOV PWM_Width+01H,A
MOV A,R6
ADDC A,#0FFH
MOV PWM_Width,A
; }
; SOURCE LINE # 641
RET
; END OF data_inv
; /**********************************************************************************************
; 函数:void pulse_inv(void)
; 说明:将键盘设置的输液量转换为电机的控制参数,以1ml作为基本单位,考虑不可能将容器中的药液完全
; 输出,需要扣除相应的保留值(8ml)
; ***********************************************************************************************/
; void pulse_inv(void)
RSEG ?PR?pulse_inv?PUMP
pulse_inv:
USING 0
; SOURCE LINE # 647
; {uint All_Num;
; SOURCE LINE # 648
; All_Num=20*temp2[3]+200*temp2[2]+2000*temp2[1];
; SOURCE LINE # 649
MOV A,temp2+02H
MOV B,#0C8H
MUL AB
MOV R5,A
MOV R4,B
MOV A,temp2+03H
MOV B,#014H
MUL AB
ADD A,R5
MOV R3,A
MOV A,B
ADDC A,R4
MOV R2,A
MOV R7,temp2+01H
MOV R6,#00H
MOV R4,#07H
MOV R5,#0D0H
LCALL ?C?IMUL
MOV A,R7
ADD A,R3
MOV R7,A
MOV A,R6
ADDC A,R2
MOV R6,A
;---- Variable 'All_Num?3561' assigned to Register 'R6/R7' ----
; All_Pulse=(2*All_Num*Flux_Pulse)/Drop_Num;
; SOURCE LINE # 650
MOV A,R7
ADD A,ACC
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
CLR A
MOV R4,A
MOV R5,A
MOV R3,Flux_Pulse+03H
MOV R2,Flux_Pulse+02H
MOV R1,Flux_Pulse+01H
MOV R0,Flux_Pulse
LCALL ?C?LMUL
PUSH AR6
PUSH AR7
MOV R6,Drop_Num
MOV R7,Drop_Num+01H
MOV R3,AR7
MOV R2,AR6
CLR A
MOV R1,A
MOV R0,A
POP AR7
POP AR6
LCALL ?C?ULDIV
MOV All_Pulse+03H,R7
MOV All_Pulse+02H,R6
MOV All_Pulse+01H,R5
MOV All_Pulse,R4
; }
; SOURCE LINE # 651
RET
; END OF pulse_inv
; /**********************************************************************************************
; 函数:void Read_flash(void)
; 说明:读出flash存储器中确切地址的数据
; ***********************************************************************************************/
; void Read_flash(void)
RSEG ?PR?Read_flash?PUMP
Read_flash:
USING 0
; SOURCE LINE # 656
; { uchar code *pread;
; SOURCE LINE # 657
; uchar i;
; pread=0x5000; //读flash
; SOURCE LINE # 659
;---- Variable 'pread?3662' assigned to Register 'R6/R7' ----
MOV R7,#00H
MOV R6,#050H
; for(i=0;i<4;i++)
; SOURCE LINE # 660
;---- Variable 'i?3663' assigned to Register 'R5' ----
CLR A
MOV R5,A
?C0092:
; { temp[i]=*(pread++);
; SOURCE LINE # 661
INC R7
MOV A,R7
MOV R2,AR6
JNZ ?C0193
INC R6
?C0193:
DEC A
MOV DPL,A
MOV DPH,R2
CLR A
MOVC A,@A+DPTR
MOV R4,A
MOV A,#LOW (temp)
ADD A,R5
MOV R0,A
MOV @R0,AR4
; }
; SOURCE LINE # 662
INC R5
CJNE R5,#04H,?C0092
?C0093:
; for(i=0;i<4;i++)
; SOURCE LINE # 663
CLR A
MOV R5,A
?C0095:
; { temp2[i]=*(pread++);
; SOURCE LINE # 664
INC R7
MOV A,R7
MOV R2,AR6
JNZ ?C0194
INC R6
?C0194:
DEC A
MOV DPL,A
MOV DPH,R2
CLR A
MOVC A,@A+DPTR
MOV R4,A
MOV A,#LOW (temp2)
ADD A,R5
MOV R0,A
MOV @R0,AR4
; }
; SOURCE LINE # 665
INC R5
CJNE R5,#04H,?C0095
?C0096:
; for(i=0;i<10;i++)
; SOURCE LINE # 666
CLR A
MOV R5,A
?C0098:
; {lcd_data[i]=*(pread++);
; SOURCE LINE # 667
INC R7
MOV A,R7
MOV R2,AR6
JNZ ?C0195
INC R6
?C0195:
DEC A
MOV DPL,A
MOV DPH,R2
CLR A
MOVC A,@A+DPTR
MOV R4,A
MOV A,#LOW (lcd_data)
ADD A,R5
MOV R0,A
MOV @R0,AR4
; }
; SOURCE LINE # 668
INC R5
CJNE R5,#0AH,?C0098
?C0099:
; delay(Time_1ms);
; SOURCE LINE # 669
MOV R7,#06H
MOV R6,#00H
LJMP _delay
; END OF Read_flash
; }
; /**********************************************************************************************
; 函数:Write_flash(void)
; 说明:首先将flash固定区域的数据整页完全擦除,然后写入修改后的数据
; ***********************************************************************************************/
; void Write_flash(void)
RSEG ?PR?Write_flash?PUMP
Write_flash:
USING 0
; SOURCE LINE # 675
; {uchar xdata *pwrite;
; SOURCE LINE # 676
; uchar *pgen;
; uchar i;
; FLSCL=0x88; //擦除128字节的信息页
; SOURCE LINE # 679
MOV FLSCL,#088H
; PSCTL=0x03;
; SOURCE LINE # 680
MOV PSCTL,#03H
; pwrite=0x5000;
; SOURCE LINE # 681
MOV pwrite?3764,#050H
MOV pwrite?3764+01H,#00H
; *pwrite=0;
; SOURCE LINE # 682
MOV DPL,pwrite?3764+01H
MOV DPH,pwrite?3764
CLR A
MOVX @DPTR,A
; PSCTL=0x01;
; SOURCE LINE # 683
MOV PSCTL,#01H
; pgen=temp; //写flash
; SOURCE LINE # 684
MOV pgen?3765,A
MOV pgen?3765+01H,#HIGH (temp)
MOV pgen?3765+02H,#LOW (temp)
; for(i=0;i<4;i++)
; SOURCE LINE # 685
;---- Variable 'i?3766' assigned to Register 'R7' ----
MOV R7,A
?C0102:
; {
; SOURCE LINE # 686
; *(pwrite++)=*(pgen++);
; SOURCE LINE # 687
MOV R3,pgen?3765
INC pgen?3765+02H
MOV A,pgen?3765+02H
MOV R2,pgen?3765+01H
JNZ ?C0196
INC pgen?3765+01H
?C0196:
DEC A
MOV R1,A
LCALL ?C?CLDPTR
MOV R6,A
INC pwrite?3764+01H
MOV A,pwrite?3764+01H
MOV R4,pwrite?3764
JNZ ?C0197
INC pwrite?3764
?C0197:
DEC A
MOV DPL,A
MOV DPH,R4
MOV A,R6
MOVX @DPTR,A
; }
; SOURCE LINE # 688
INC R7
CJNE R7,#04H,?C0102
?C0103:
; pgen=temp2; //写flash
; SOURCE LINE # 689
MOV pgen?3765,#00H
MOV pgen?3765+01H,#HIGH (temp2)
MOV pgen?3765+02H,#LOW (temp2)
; for(i=0;i<4;i++)
; SOURCE LINE # 690
CLR A
MOV R7,A
?C0105:
; {
; SOURCE LINE # 691
; *(pwrite++)=*(pgen++);
; SOURCE LINE # 692
MOV R3,pgen?3765
INC pgen?3765+02H
MOV A,pgen?3765+02H
MOV R2,pgen?3765+01H
JNZ ?C0198
INC pgen?3765+01H
?C0198:
DEC A
MOV R1,A
LCALL ?C?CLDPTR
M
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -