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

📄 pump.src

📁 毕业设计做的东西的硬件程序
💻 SRC
📖 第 1 页 / 共 5 页
字号:
; void l2_set();                               //LCD2各段显示数据设置
; void display2();                             //LCD2显示设置数据
; void noplay2();                              //LCD2空白显示
; void SM_Set(void);	                         //步进电机工作状态设置
; void T0_Set(void);	                         //定时器T0设置
; void T0_ISR(void);                           //定时器T0中断服务函数
; void SM_SR(void);                            //步进电机运行停止控制函数
; void DAC0_Set(void);                         //步进电机参考电压设置
; void DAC1_Set(void);                         //比较器参考电压设置 
; void data_inv(void);                         //流量参数变换
; void pulse_inv(void);						 //输液量参数变换
; void ADC_Set(void);                          //ADC窗口比较器设置
; void ADC_ISR(void);                          //ADC窗口比较器中断服务函数
; void T1_Set(void);                           //定时器T1参数设置
; void T1_ISR(void);                           //定时器T1中断服务函数
; void T2_Set(void);                           //定时器T2参数设置
; void T2_ISR(void);						     //定时器T2中断服务函数
; void T3_Set(void);							 //定时器T3参数设置
; void T3_ISR(void);						     //定时器T3中断服务函数
; void PCA_ADC(void);						     //PCA高速输出方式启动ADC
; void keyinterrupt(void);                     //INT1即键盘中断服务函数
; void main(void);                             //主函数
; /***************************************函数定义***********************************************/
; 
; /**********************************************************************************************
;  函数:void SYSCLK_Init(void)
;  说明:系统时钟初始化,选择外部12M晶振,关闭看门狗。
; ***********************************************************************************************/
; void SYSCLK_Init(void)	          

	RSEG  ?PR?SYSCLK_Init?PUMP
SYSCLK_Init:
	USING	0
			; SOURCE LINE # 129
; {
			; SOURCE LINE # 130
; int i;                          
; WDTCN=0x07;	                                 //最大时间延迟
			; SOURCE LINE # 132
	MOV  	WDTCN,#07H
; WDTCN=0xDE;
			; SOURCE LINE # 133
	MOV  	WDTCN,#0DEH
; _nop_();
			; SOURCE LINE # 134
	NOP  	
; WDTCN=0xAD;                                  //禁止看门狗中断	
			; SOURCE LINE # 135
	MOV  	WDTCN,#0ADH
; OSCXCN=0x77;                                 //外部时钟寄存器设置
			; SOURCE LINE # 136
	MOV  	OSCXCN,#077H
; for(i=0;i<256;i++) ;		                 // 至少等待1ms
			; SOURCE LINE # 137
;---- Variable 'i?040' assigned to Register 'R6/R7' ----
	CLR  	A
	MOV  	R7,A
	MOV  	R6,A
?C0001:
	INC  	R7
	CJNE 	R7,#00H,?C0184
	INC  	R6
?C0184:
	CLR  	A
	CJNE 	A,AR7,?C0001
	MOV  	A,R6
	CJNE 	A,#01H,?C0001
?C0004:
; while(!(OSCXCN&0x80)) ;                      //等待晶振稳定,
			; SOURCE LINE # 138
	MOV  	A,OSCXCN
	JNB  	ACC.7,?C0004
?C0005:
; OSCICN=0x88;                                 // 采用外部晶振作为时钟源
			; SOURCE LINE # 139
	MOV  	OSCICN,#088H
; WDTCN=0xFF;					                 //锁定看门狗禁止功能禁止,看门狗在程序中一直有效
			; SOURCE LINE # 140
	MOV  	WDTCN,#0FFH
; WDTCN=0xA5;				                     //喂狗
			; SOURCE LINE # 141
	MOV  	WDTCN,#0A5H
; }
			; SOURCE LINE # 142
	RET  	
; END OF SYSCLK_Init

; /**********************************************************************************************
;  函数:void IO_Init()
;  说明:I/O端口设置初始化,内部资源和IO端口交叉开关设置;输入和5V输出采用开漏输出,3.3V输出采用
;        推挽输出,允许全局弱上拉
; ***********************************************************************************************/
; void IO_Init()		              

	RSEG  ?PR?IO_Init?PUMP
IO_Init:
			; SOURCE LINE # 148
; {	
			; SOURCE LINE # 149
;     XBR0 = 0x09;	                          // 交叉开关设置
			; SOURCE LINE # 150
	MOV  	XBR0,#09H
; 	XBR1 = 0x58;	                          
			; SOURCE LINE # 151
	MOV  	XBR1,#058H
; 	XBR2 = 0x41;	
			; SOURCE LINE # 152
	MOV  	XBR2,#041H
;   	PRT0CF = 0x04;                            // 端口输出方式寄存器设置 
			; SOURCE LINE # 153
	MOV  	PRT0CF,#04H
; 	PRT1CF = 0xA3;  
			; SOURCE LINE # 154
	MOV  	PRT1CF,#0A3H
; 	PRT2CF = 0x01;   
			; SOURCE LINE # 155
	MOV  	PRT2CF,#01H
; 	PRT3CF = 0x00;   
			; SOURCE LINE # 156
	CLR  	A
	MOV  	PRT3CF,A
; }
			; SOURCE LINE # 157
	RET  	
; END OF IO_Init

; /**********************************************************************************************
;  函数:void ISR_Init(void)
;  说明:系统中断设置初始化
; ***********************************************************************************************/
; void ISR_Init(void)				  

	RSEG  ?PR?ISR_Init?PUMP
ISR_Init:
			; SOURCE LINE # 162
; { 
			; SOURCE LINE # 163
;   IT1=1;                                      //设置外部中断1为下降沿触发
			; SOURCE LINE # 164
	SETB 	IT1
;   EA=1;                                       //开全局中断
			; SOURCE LINE # 165
	SETB 	EA
;   EX1=1;                                      //打开外部中断1
			; SOURCE LINE # 166
	SETB 	EX1
;   ET0=1;                                      //定时器0开中断
			; SOURCE LINE # 167
	SETB 	ET0
;   ET1=1;		                              //定时器1开中断
			; SOURCE LINE # 168
	SETB 	ET1
;   PT0=1;                                      //置定时器0中断为高优先级
			; SOURCE LINE # 169
	SETB 	PT0
;   PT1=1;                                      //置定时器1中断为高优先级  
			; SOURCE LINE # 170
	SETB 	PT1
;   EIP1=0x04;                                  //置ADC0窗口比较器中断为高优先级
			; SOURCE LINE # 171
	MOV  	EIP1,#04H
; //IE=0xAE;									  //或对IE中断允许寄存器进行设置
;   EIE1=0x04;                                  //允许ADC0窗口比较器中断
			; SOURCE LINE # 173
	MOV  	EIE1,#04H
;   EIE2=0x01;	                              //定时器3开中断
			; SOURCE LINE # 174
	MOV  	EIE2,#01H
; }
			; SOURCE LINE # 175
	RET  	
; END OF ISR_Init

; /**********************************************************************************************
;  函数:void Global_Init(void)
;  说明:全局变量初始化
; ***********************************************************************************************/
; void Global_Init(void)			   

	RSEG  ?PR?Global_Init?PUMP
Global_Init:
			; SOURCE LINE # 180
; { P3=0x0F;									  
			; SOURCE LINE # 181
	MOV  	P3,#0FH
;   Heat_flag=1;
			; SOURCE LINE # 182
	SETB 	Heat_flag
;   Fluxdrop_Flag=1;
			; SOURCE LINE # 183
	SETB 	Fluxdrop_Flag
;   Speed_Set=0;
			; SOURCE LINE # 184
	CLR  	Speed_Set
;   Lpower_LED=1;
			; SOURCE LINE # 185
	SETB 	Lpower_LED
;   Hold_Flag=0;
			; SOURCE LINE # 186
	CLR  	Hold_Flag
;   SR_Flag=0;
			; SOURCE LINE # 187
	CLR  	SR_Flag
;   Point_Flag=0x02;
			; SOURCE LINE # 188
	MOV  	Point_Flag,#02H
;   BUFFER=0;
			; SOURCE LINE # 189
	CLR  	A
	MOV  	BUFFER,A
	MOV  	BUFFER+01H,A
;   Buffer_NUM=1;
			; SOURCE LINE # 190
	MOV  	Buffer_NUM,A
	MOV  	Buffer_NUM+01H,#01H
;   PWM_Width=0x07D0;
			; SOURCE LINE # 191
	MOV  	PWM_Width,#07H
	MOV  	PWM_Width+01H,#0D0H
;   Drop_NStep=50.0;
			; SOURCE LINE # 192
	MOV  	Drop_NStep+03H,A
	MOV  	Drop_NStep+02H,A
	MOV  	Drop_NStep+01H,#048H
	MOV  	Drop_NStep,#042H
;   SM_CLK1=0;
			; SOURCE LINE # 193
	CLR  	SM_CLK1
;   SM_RST=0;
			; SOURCE LINE # 194
	CLR  	SM_RST
;   SM_EN=0;
			; SOURCE LINE # 195
	CLR  	SM_EN
;   T1IN=1;									   
			; SOURCE LINE # 196
	SETB 	T1IN
;   Balarm_flag=1;
			; SOURCE LINE # 197
	SETB 	Balarm_flag
;   PK_Flag=0;
			; SOURCE LINE # 198
	CLR  	PK_Flag
;   State_LED=1;
			; SOURCE LINE # 199
	SETB 	State_LED
;   Gross_Flag=0;
			; SOURCE LINE # 200
	CLR  	Gross_Flag
; }
			; SOURCE LINE # 201
	RET  	
; END OF Global_Init

; /**********************************************************************************************
;  函数:void Bubble_alarm(void)
;  说明:气泡检测报警、处理
; ***********************************************************************************************/
; void Bubble_alarm(void)				 

	RSEG  ?PR?Bubble_alarm?PUMP
Bubble_alarm:
	USING	0
			; SOURCE LINE # 206
; { Balarm_flag=0;
			; SOURCE LINE # 207
	CLR  	Balarm_flag
;   SR_Flag=0;
			; SOURCE LINE # 208
	CLR  	SR_Flag
;   SM_SR();
			; SOURCE LINE # 209
	LJMP 	SM_SR
; END OF Bubble_alarm

; }
; /**********************************************************************************************
;  函数:void delay( uint t) 
;  说明:延时子程序,延迟时间[(12.144*TIMER1+17.365)*TIMER2+28.375]/f,当t=16M时,为(76.9853t+1.7
;        734)us,当t=12M时,为(102.647t+2.3646)us
; ***********************************************************************************************/
; void delay( uint t)               

	RSEG  ?PR?_delay?PUMP
L?0237:
	USING	0
L?0238:
	MOV  	R7,#026H
	MOV  	R6,#01H
	LCALL	_delay
	MOV  	WDTCN,#0A5H
	LCALL	_delay
	MOV  	WDTCN,#0A5H
	LCALL	_delay
	MOV  	WDTCN,#0A5H
_delay:
	USING	0
			; SOURCE LINE # 216
;---- Variable 't?541' assigned to Register 'R6/R7' ----
; {  uint i,j;								 
			; SOURCE LINE # 217
;    for(i=0;i<t;i++)			
			; SOURCE LINE # 218
;---- Variable 'i?542' assigned to Register 'R4/R5' ----
	CLR  	A
	MOV  	R5,A
	MOV  	R4,A
?C0011:
	CLR  	C
	MOV  	A,R5
	SUBB 	A,R7
	MOV  	A,R4
	SUBB 	A,R6
	JNC  	?C0017
;       for(j=0;j<100;j++)	
			; SOURCE LINE # 219
;---- Variable 'j?543' assigned to Register 'R2/R3' ----
	CLR  	A
	MOV  	R3,A
	MOV  	R2,A
?C0014:
	INC  	R3
	CJNE 	R3,#00H,?C0186
	INC  	R2
?C0186:
	MOV  	A,R3
	XRL  	A,#064H
	ORL  	A,R2
	JNZ  	?C0014
?C0013:
	INC  	R5
	CJNE 	R5,#00H,?C0187
	INC  	R4
?C0187:
	SJMP 	?C0011
;          ;					
; }						    
			; SOURCE LINE # 221
?C0017:
	RET  	
; END OF _delay

; /**********************************************************************************************
;  函数:void nop(uint t) 
;  说明:软件短时间精确延时子程序,相当于t个空操作
; ***********************************************************************************************/
; void nop(uint t)

	RSEG  ?PR?_nop?PUMP
L?0239:
	USING	0
L?0240:
	MOV  	R7,#05H
	MOV  	R6,#00H
_nop:
	USING	0
			; SOURCE LINE # 226
;---- Variable 't?644' assigned to Register 'R6/R7' ----
; { uint i;
			; SOURCE LINE # 227
;    for(i=0;i<t;i++)
			; SOURCE LINE # 228
;---- Variable 'i?645' assigned to Register 'R4/R5' ----
	CLR  	A
	MOV  	R5,A
	MOV  	R4,A
?C0018:
	CLR  	C
	MOV  	A,R5
	SUBB 	A,R7
	MOV  	A,R4
	SUBB 	A,R6
	JNC  	?C0021
;           _nop_();
			; SOURCE LINE # 229
	NOP  	
	INC  	R5
	CJNE 	R5,#00H,?C0188
	INC  	R4
?C0188:
	SJMP 	?C0018
; }
			; SOURCE LINE # 230
?C0021:
	RET  	
; END OF _nop

; /**********************************************************************************************
;  函数:void pk(void) 
;  说明:输液前的排空操作,电机快速转动,迅速排出气泡
; ***********************************************************************************************/
; void pk(void)                     

	RSEG  ?PR?pk?PUMP
pk:
	USING	0
			; SOURCE LINE # 235
; { 
			; SOURCE LINE # 236
;   if(PK_Flag==1)
			; SOURCE LINE # 237
	JNB  	PK_Flag,?C0022
;     {SR_Flag=1;
			; SOURCE LINE # 238
	SETB 	SR_Flag
;      SM_SR();
			; SOURCE LINE # 239
; 	 }
			; SOURCE LINE # 240
	SJMP 	?C0222
?C0022:
;   else 
;     {SR_Flag=0;
			; SOURCE LINE # 242
	CLR  	SR_Flag
; 	 SM_SR();
			; SOURCE LINE # 243
?C0222:
	LCALL	SM_SR
; 	}									 
			; SOURCE LINE # 244
; }
			; SOURCE LINE # 245
?C0024:
	RET  	
; END OF pk

; /**********************************************************************************************
;  函数:void lcdwbit(bit n) 
;  说明:LCD位传输函数
; ***********************************************************************************************/
; void lcdwbit(bit n)                 			

	RSEG  ?PR?lcdwbit?PUMP
lcdwbit:
			; SOURCE LINE # 250
; {  DIPIN = n;
			; SOURCE LINE # 251
	MOV  	C,n?846
	MOV  	DIPIN,C
;    CLKPIN = 1;
			; SOURCE LINE # 252
	SETB 	CLKPIN
;    CLKPIN = 0;
			; SOURCE LINE # 253
	CLR  	CLKPIN
;    CLKPIN = 1;
			; SOURCE LINE # 254
	SETB 	CLKPIN
; }
			; SOURCE LINE # 255
	RET  	
; END OF lcdwbit

; /**********************************************************************************************
;  函数:void lcdwd(uchar data1) 
;  说明:LCD字节传输函数
; ***********************************************************************************************/
; void lcdwd(uchar data1)             			

	RSEG  ?PR?_lcdwd?PUMP
_lcdwd:
	USING	0
			; SOURCE LINE # 260
;---- Variable 'data1?947' assigned to Register 'R7' ----
; {  uchar i;
			; SOURCE LINE # 261
;    for(i=0;i<8;i++)
			; SOURCE LINE # 262
;---- Variable 'i?948' assigned to Register 'R6' ----
	CLR  	A
	MOV  	R6,A
?C0026:
;    {  if((data1&0x01)==0x01)
			; SOURCE LINE # 263
	MOV  	A,R7
	JNB  	ACC.0,?C0029
;          lcdwbit(1);
			; SOURCE LINE # 264
	SETB 	?lcdwbit?BIT
	SJMP 	?C0223
?C0029:
;       else 
;          lcdwbit(0);
			; SOURCE LINE # 266
	CLR  	?lcdwbit?BIT
?C0223:
	LCALL	lcdwbit
?C0030:
;       data1>>=1;
			; SOURCE LINE # 267
	MOV  	A,R7
	CLR  	C
	RRC  	A
	MOV  	R7,A
;    }
			; SOURCE LINE # 268
	INC  	R6
	CJNE 	R6,#08H,?C0026
; }
			; SOURCE LINE # 269
?C0031:
	RET  	
; END OF _lcdwd

; /**********************************************************************************************
;  函数:void lcdwd1(void) 
;  说明:LCD4段数据传输函数
; ***********************************************************************************************/
; void lcdwd1(void)                     			

	RSEG  ?PR?lcdwd1?PUMP
lcdwd1:
	USING	0
			; SOURCE LINE # 274
; {  uchar i;
			; SOURCE LINE # 275
;    for(i=0;i<5;i++) 
			; SOURCE LINE # 276
;---- Variable 'i?1049' assigned to Register 'R5' ----
	CLR  	A
	MOV  	R5,A
?C0032:
;       {lcdwd(l_data[i]);
			; SOURCE LINE # 277

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -