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

📄 pump.src

📁 毕业设计做的东西的硬件程序
💻 SRC
📖 第 1 页 / 共 5 页
字号:
	MOV  	A,#LOW (l_data)
	ADD  	A,R5
	MOV  	R0,A
	MOV  	A,@R0
	MOV  	R7,A
	LCALL	_lcdwd
; }	   delay(1);}
			; SOURCE LINE # 278
	INC  	R5
	CJNE 	R5,#05H,?C0032
?C0033:
	MOV  	R7,#01H
	MOV  	R6,#00H
	LJMP 	_delay
; END OF lcdwd1

; /**********************************************************************************************
;  函数:void l_set(void) 
;  说明:各段显示数据设置,若存在小数点,则相应位的显示数据改变
; ***********************************************************************************************/
; void l_set(void)                        

	RSEG  ?PR?l_set?PUMP
l_set:
	USING	0
			; SOURCE LINE # 283
; {uchar i;
			; SOURCE LINE # 284
;  l_data[0]=0xff;
			; SOURCE LINE # 285
	MOV  	l_data,#0FFH
;  if(Fluxdrop_Flag)								//判断是流量还是滴数模式
			; SOURCE LINE # 286
	JNB  	Fluxdrop_Flag,?C0036
;     Point_Flag=0xff;
			; SOURCE LINE # 287
	MOV  	Point_Flag,#0FFH
	SJMP 	?C0037
?C0036:
;  else
;     Point_Flag=2;
			; SOURCE LINE # 289
	MOV  	Point_Flag,#02H
?C0037:
;  for(i=1;i<5;i++)
			; SOURCE LINE # 290
;---- Variable 'i?1150' assigned to Register 'R7' ----
	MOV  	R7,#01H
?C0038:
;    {l_data[i]=lcd_data[temp[i-1]];
			; SOURCE LINE # 291
	MOV  	A,#LOW (temp+0FFFFH)
	ADD  	A,R7
	MOV  	R0,A
	MOV  	A,@R0
	ADD  	A,#LOW (lcd_data)
	MOV  	R0,A
	MOV  	A,@R0
	MOV  	R6,A
	MOV  	A,#LOW (l_data)
	ADD  	A,R7
	MOV  	R0,A
	MOV  	@R0,AR6
;    } 
			; SOURCE LINE # 292
	INC  	R7
	CJNE 	R7,#05H,?C0038
?C0039:
;  if(Point_Flag!=0xff)                           
			; SOURCE LINE # 293
	MOV  	A,Point_Flag
	CPL  	A
	JZ   	?C0042
;     l_data[(Point_Flag+1)]=l_data[(Point_Flag+1)]&0x7F;  
			; SOURCE LINE # 294
	MOV  	A,#LOW (l_data+01H)
	ADD  	A,Point_Flag
	MOV  	R0,A
	MOV  	A,@R0
	ANL  	A,#07FH
	MOV  	@R0,A
; }
			; SOURCE LINE # 295
?C0042:
	RET  	
; END OF l_set

; /**********************************************************************************************
;  函数:void display(void) 
;  说明:显示设置数据
; ***********************************************************************************************/
; void display(void)                                   

	RSEG  ?PR?display?PUMP
display:
	USING	0
			; SOURCE LINE # 300
; {l_set();
			; SOURCE LINE # 301
	LCALL	l_set
;  lcdwd1();
			; SOURCE LINE # 302
	LCALL	lcdwd1
;  delay(Time_50ms);
			; SOURCE LINE # 303
;  WDTCN=0xA5;
			; SOURCE LINE # 304
;  delay(Time_50ms);
			; SOURCE LINE # 305
;  WDTCN=0xA5;
			; SOURCE LINE # 306
;   delay(Time_50ms);
			; SOURCE LINE # 307
;  WDTCN=0xA5;
			; SOURCE LINE # 308
;  delay(Time_50ms);
			; SOURCE LINE # 309
	LCALL	L?0237
;  WDTCN=0xA5;
			; SOURCE LINE # 310
	MOV  	WDTCN,#0A5H
; }
			; SOURCE LINE # 311
	RET  	
; END OF display

; /**********************************************************************************************
;  函数:void noplay(void) 
;  说明:为实现闪烁,需要一段时间空白显示
; ***********************************************************************************************/
; void noplay(void)                      		    

	RSEG  ?PR?noplay?PUMP
noplay:
	USING	0
			; SOURCE LINE # 316
; {uchar i;
			; SOURCE LINE # 317
;  for(i=1;i<6;i++)
			; SOURCE LINE # 318
;---- Variable 'i?1351' assigned to Register 'R7' ----
?C0044:
;   l_data[i]=0xff;
			; SOURCE LINE # 319
	MOV  	R7,#05H
	MOV  	R0,#LOW (l_data+01H)
	MOV  	A,#0FFH
?C0189:
	MOV  	@R0,A
	INC  	R0
	DJNZ 	R7,?C0189
?C0045:
;   lcdwd1();
			; SOURCE LINE # 320
	LCALL	lcdwd1
;   delay(Time_50ms);
			; SOURCE LINE # 321
;   WDTCN=0xA5;
			; SOURCE LINE # 322
;   delay(Time_50ms);
			; SOURCE LINE # 323
;   WDTCN=0xA5;
			; SOURCE LINE # 324
;   delay(Time_50ms);
			; SOURCE LINE # 325
;   WDTCN=0xA5;
			; SOURCE LINE # 326
;   delay(Time_50ms);
			; SOURCE LINE # 327
	LCALL	L?0237
;   WDTCN=0xA5;
			; SOURCE LINE # 328
	MOV  	WDTCN,#0A5H
; }
			; SOURCE LINE # 329
	RET  	
; END OF noplay

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

	RSEG  ?PR?lcd2wbit?PUMP
lcd2wbit:
			; SOURCE LINE # 334
; {  DI2PIN = n;
			; SOURCE LINE # 335
	MOV  	C,n?1452
	MOV  	DI2PIN,C
;    CLK2PIN = 1;
			; SOURCE LINE # 336
	SETB 	CLK2PIN
;    CLK2PIN = 0;
			; SOURCE LINE # 337
	CLR  	CLK2PIN
;    CLK2PIN = 1;
			; SOURCE LINE # 338
	SETB 	CLK2PIN
; }
			; SOURCE LINE # 339
	RET  	
; END OF lcd2wbit

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

	RSEG  ?PR?_lcd2wd?PUMP
_lcd2wd:
	USING	0
			; SOURCE LINE # 344
;---- Variable 'data1?1553' assigned to Register 'R7' ----
; {  uchar i;
			; SOURCE LINE # 345
;    for(i=0;i<8;i++)
			; SOURCE LINE # 346
;---- Variable 'i?1554' assigned to Register 'R6' ----
	CLR  	A
	MOV  	R6,A
?C0049:
;    {  if((data1&0x01)==0x01)
			; SOURCE LINE # 347
	MOV  	A,R7
	JNB  	ACC.0,?C0052
;          lcd2wbit(1);
			; SOURCE LINE # 348
	SETB 	?lcd2wbit?BIT
	SJMP 	?C0224
?C0052:
;       else 
;          lcd2wbit(0);
			; SOURCE LINE # 350
	CLR  	?lcd2wbit?BIT
?C0224:
	LCALL	lcd2wbit
?C0053:
;       data1>>=1;
			; SOURCE LINE # 351
	MOV  	A,R7
	CLR  	C
	RRC  	A
	MOV  	R7,A
;    }
			; SOURCE LINE # 352
	INC  	R6
	CJNE 	R6,#08H,?C0049
; }
			; SOURCE LINE # 353
?C0054:
	RET  	
; END OF _lcd2wd

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

	RSEG  ?PR?lcd2wd1?PUMP
lcd2wd1:
	USING	0
			; SOURCE LINE # 358
; {  uchar i;
			; SOURCE LINE # 359
;    for(i=0;i<5;i++) 
			; SOURCE LINE # 360
;---- Variable 'i?1655' assigned to Register 'R5' ----
	CLR  	A
	MOV  	R5,A
?C0055:
;       {lcd2wd(l_data[i]);
			; SOURCE LINE # 361
	MOV  	A,#LOW (l_data)
	ADD  	A,R5
	MOV  	R0,A
	MOV  	A,@R0
	MOV  	R7,A
	LCALL	_lcd2wd
; }	   delay(1);}
			; SOURCE LINE # 362
	INC  	R5
	CJNE 	R5,#05H,?C0055
?C0056:
	MOV  	R7,#01H
	MOV  	R6,#00H
	LJMP 	_delay
; END OF lcd2wd1

; /**********************************************************************************************
;  函数:void l2_set(void) 
;  说明:各段显示数据设置,若存在小数点,则相应位的显示数据改变
; ***********************************************************************************************/
; void l2_set(void)                        

	RSEG  ?PR?l2_set?PUMP
l2_set:
	USING	0
			; SOURCE LINE # 367
; {uchar i;
			; SOURCE LINE # 368
;  l_data[0]=0xff;
			; SOURCE LINE # 369
	MOV  	l_data,#0FFH
;  if(Fluxdrop_Flag)								//判断是流量还是滴数模式
			; SOURCE LINE # 370
	JNB  	Fluxdrop_Flag,?C0059
;     Point_Flag=0xff;
			; SOURCE LINE # 371
	MOV  	Point_Flag,#0FFH
	SJMP 	?C0060
?C0059:
;  else
;     Point_Flag=2;
			; SOURCE LINE # 373
	MOV  	Point_Flag,#02H
?C0060:
;  for(i=1;i<5;i++)
			; SOURCE LINE # 374
;---- Variable 'i?1756' assigned to Register 'R7' ----
	MOV  	R7,#01H
?C0061:
;    {l_data[i]=lcd_data[temp2[i-1]];
			; SOURCE LINE # 375
	MOV  	A,#LOW (temp2+0FFFFH)
	ADD  	A,R7
	MOV  	R0,A
	MOV  	A,@R0
	ADD  	A,#LOW (lcd_data)
	MOV  	R0,A
	MOV  	A,@R0
	MOV  	R6,A
	MOV  	A,#LOW (l_data)
	ADD  	A,R7
	MOV  	R0,A
	MOV  	@R0,AR6
;    } 
			; SOURCE LINE # 376
	INC  	R7
	CJNE 	R7,#05H,?C0061
; // if(Point_Flag!=0xff)                           
; //    l_data[(Point_Flag+1)]=l_data[(Point_Flag+1)]&0x7F;  
; }
			; SOURCE LINE # 379
?C0064:
	RET  	
; END OF l2_set

; /**********************************************************************************************
;  函数:void display2(void) 
;  说明:显示设置数据
; ***********************************************************************************************/
; void display2(void)                                   

	RSEG  ?PR?display2?PUMP
display2:
	USING	0
			; SOURCE LINE # 384
; {l2_set();
			; SOURCE LINE # 385
	LCALL	l2_set
;  lcd2wd1();
			; SOURCE LINE # 386
	LCALL	lcd2wd1
;  delay(Time_50ms);
			; SOURCE LINE # 387
;  WDTCN=0xA5;
			; SOURCE LINE # 388
;  delay(Time_50ms);
			; SOURCE LINE # 389
;  WDTCN=0xA5;
			; SOURCE LINE # 390
;   delay(Time_50ms);
			; SOURCE LINE # 391
;  WDTCN=0xA5;
			; SOURCE LINE # 392
;  delay(Time_50ms);
			; SOURCE LINE # 393
	LCALL	L?0238
;  WDTCN=0xA5;
			; SOURCE LINE # 394
	MOV  	WDTCN,#0A5H
; }
			; SOURCE LINE # 395
	RET  	
; END OF display2

; /**********************************************************************************************
;  函数:void noplay2(void) 
;  说明:为实现闪烁,需要一段时间空白显示
; ***********************************************************************************************/
; void noplay2(void)                      		    

	RSEG  ?PR?noplay2?PUMP
noplay2:
	USING	0
			; SOURCE LINE # 400
; {uchar i;
			; SOURCE LINE # 401
;  for(i=1;i<6;i++)
			; SOURCE LINE # 402
;---- Variable 'i?1957' assigned to Register 'R7' ----
?C0066:
;   l_data[i]=0xff;
			; SOURCE LINE # 403
	MOV  	R7,#05H
	MOV  	R0,#LOW (l_data+01H)
	MOV  	A,#0FFH
?C0190:
	MOV  	@R0,A
	INC  	R0
	DJNZ 	R7,?C0190
?C0067:
;   lcd2wd1();
			; SOURCE LINE # 404
	LCALL	lcd2wd1
;   delay(Time_50ms);
			; SOURCE LINE # 405
;   WDTCN=0xA5;
			; SOURCE LINE # 406
;   delay(Time_50ms);
			; SOURCE LINE # 407
;   WDTCN=0xA5;
			; SOURCE LINE # 408
;   delay(Time_50ms);
			; SOURCE LINE # 409
;   WDTCN=0xA5;
			; SOURCE LINE # 410
;   delay(Time_50ms);
			; SOURCE LINE # 411
	LCALL	L?0238
;   WDTCN=0xA5;
			; SOURCE LINE # 412
	MOV  	WDTCN,#0A5H
; }
			; SOURCE LINE # 413
	RET  	
; END OF noplay2

; 
; /**********************************************************************************************
;  函数:void SM_Set(void) 
;  说明:电机工作方式和初始状态设置
; ***********************************************************************************************/
; void SM_Set(void)			       				

	RSEG  ?PR?SM_Set?PUMP
SM_Set:
	USING	0
			; SOURCE LINE # 419
; {  DAC0_Set();
			; SOURCE LINE # 420
	LCALL	DAC0_Set
;    SM_RST=0;
			; SOURCE LINE # 421
	CLR  	SM_RST
;    nop(5);
			; SOURCE LINE # 422
	LCALL	L?0239
;    SM_RST=1;
			; SOURCE LINE # 423
	SETB 	SM_RST
;    nop(5);
			; SOURCE LINE # 424
	LCALL	_nop
;    SM_MODE=1;
			; SOURCE LINE # 425
	SETB 	SM_MODE
;    SM_CW=1;
			; SOURCE LINE # 426
	SETB 	SM_CW
;    nop(5);
			; SOURCE LINE # 427
	LJMP 	_nop
; END OF SM_Set

; }
; /**********************************************************************************************
;  函数:void Timer0_Set(void) 
;  说明:定时器T0设置,用于电机PWM控制脉冲的产生,采用中断方式
; ***********************************************************************************************/
; void T0_Set(void)			                 

	RSEG  ?PR?T0_Set?PUMP
T0_Set:
			; SOURCE LINE # 433
; {   
			; SOURCE LINE # 434
;    TMOD=0x51;					   
			; SOURCE LINE # 435
	MOV  	TMOD,#051H
;    TL0=((-PWM_Width)&0xff);
			; SOURCE LINE # 436
	MOV  	A,PWM_Width+01H
	CPL  	A
	INC  	A
	MOV  	TL0,A
;    TH0=((-PWM_Width>>8)&0xff);
			; SOURCE LINE # 437
	CLR  	C
	CLR  	A
	SUBB 	A,PWM_Width+01H
	CLR  	A
	SUBB 	A,PWM_Width
	MOV  	TH0,A
;    TR0=1;
			; SOURCE LINE # 438
	SETB 	TR0
; }
			; SOURCE LINE # 439
	RET  	
; END OF T0_Set

CSEG	AT	0000BH
	LJMP	T0_ISR

; /**********************************************************************************************
;  函数:void Timer0_ISR(void) 
;  说明:定时器T0中断服务函数,当驱动步进电机的PWM频率比较小,延迟时间比较长的时候,在中断中进行
;        时间累积,达到一定时间后,变换驱动脉冲的电平值
; ***********************************************************************************************/
; void T0_ISR(void) interrupt 1   			 

⌨️ 快捷键说明

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