⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pump.src

📁 毕业设计做的东西的硬件程序
💻 SRC
📖 第 1 页 / 共 5 页
字号:
	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 + -