📄 pump.src
字号:
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 + -