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

📄 pump.src

📁 毕业设计做的东西的硬件程序
💻 SRC
📖 第 1 页 / 共 5 页
字号:

	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 + -