📄 pump.lst
字号:
149 {
150 1 XBR0 = 0x09; // 交叉开关设置
151 1 XBR1 = 0x58;
152 1 XBR2 = 0x41;
153 1 PRT0CF = 0x04; // 端口输出方式寄存器设置
154 1 PRT1CF = 0xA3;
155 1 PRT2CF = 0x01;
156 1 PRT3CF = 0x00;
157 1 }
158 /**********************************************************************************************
159 函数:void ISR_Init(void)
160 说明:系统中断设置初始化
161 ***********************************************************************************************/
162 void ISR_Init(void)
163 {
164 1 IT1=1; //设置外部中断1为下降沿触发
165 1 EA=1; //开全局中断
166 1 EX1=1; //打开外部中断1
167 1 ET0=1; //定时器0开中断
168 1 ET1=1; //定时器1开中断
169 1 PT0=1; //置定时器0中断为高优先级
170 1 PT1=1; //置定时器1中断为高优先级
171 1 EIP1=0x04; //置ADC0窗口比较器中断为高优先级
172 1 //IE=0xAE; //或对IE中断允许寄存器进行设置
173 1 EIE1=0x04; //允许ADC0窗口比较器中断
174 1 EIE2=0x01; //定时器3开中断
175 1 }
176 /**********************************************************************************************
177 函数:void Global_Init(void)
178 说明:全局变量初始化
179 ***********************************************************************************************/
180 void Global_Init(void)
181 { P3=0x0F;
182 1 Heat_flag=1;
183 1 Fluxdrop_Flag=1;
184 1 Speed_Set=0;
185 1 Lpower_LED=1;
186 1 Hold_Flag=0;
187 1 SR_Flag=0;
188 1 Point_Flag=0x02;
189 1 BUFFER=0;
190 1 Buffer_NUM=1;
C51 COMPILER V8.01 PUMP 09/19/2006 11:35:54 PAGE 8
191 1 PWM_Width=0x07D0;
192 1 Drop_NStep=50.0;
193 1 SM_CLK1=0;
194 1 SM_RST=0;
195 1 SM_EN=0;
196 1 T1IN=1;
197 1 Balarm_flag=1;
198 1 PK_Flag=0;
199 1 State_LED=1;
200 1 Gross_Flag=0;
201 1 }
202 /**********************************************************************************************
203 函数:void Bubble_alarm(void)
204 说明:气泡检测报警、处理
205 ***********************************************************************************************/
206 void Bubble_alarm(void)
207 { Balarm_flag=0;
208 1 SR_Flag=0;
209 1 SM_SR();
210 1 }
211 /**********************************************************************************************
212 函数:void delay( uint t)
213 说明:延时子程序,延迟时间[(12.144*TIMER1+17.365)*TIMER2+28.375]/f,当t=16M时,为(76.9853t+1.7
214 734)us,当t=12M时,为(102.647t+2.3646)us
215 ***********************************************************************************************/
216 void delay( uint t)
217 { uint i,j;
218 1 for(i=0;i<t;i++)
219 1 for(j=0;j<100;j++)
220 1 ;
221 1 }
222 /**********************************************************************************************
223 函数:void nop(uint t)
224 说明:软件短时间精确延时子程序,相当于t个空操作
225 ***********************************************************************************************/
226 void nop(uint t)
227 { uint i;
228 1 for(i=0;i<t;i++)
229 1 _nop_();
230 1 }
231 /**********************************************************************************************
232 函数:void pk(void)
233 说明:输液前的排空操作,电机快速转动,迅速排出气泡
234 ***********************************************************************************************/
235 void pk(void)
236 {
237 1 if(PK_Flag==1)
238 1 {SR_Flag=1;
239 2 SM_SR();
240 2 }
241 1 else
242 1 {SR_Flag=0;
243 2 SM_SR();
244 2 }
245 1 }
246 /**********************************************************************************************
247 函数:void lcdwbit(bit n)
248 说明:LCD位传输函数
249 ***********************************************************************************************/
250 void lcdwbit(bit n)
251 { DIPIN = n;
252 1 CLKPIN = 1;
C51 COMPILER V8.01 PUMP 09/19/2006 11:35:54 PAGE 9
253 1 CLKPIN = 0;
254 1 CLKPIN = 1;
255 1 }
256 /**********************************************************************************************
257 函数:void lcdwd(uchar data1)
258 说明:LCD字节传输函数
259 ***********************************************************************************************/
260 void lcdwd(uchar data1)
261 { uchar i;
262 1 for(i=0;i<8;i++)
263 1 { if((data1&0x01)==0x01)
264 2 lcdwbit(1);
265 2 else
266 2 lcdwbit(0);
267 2 data1>>=1;
268 2 }
269 1 }
270 /**********************************************************************************************
271 函数:void lcdwd1(void)
272 说明:LCD4段数据传输函数
273 ***********************************************************************************************/
274 void lcdwd1(void)
275 { uchar i;
276 1 for(i=0;i<5;i++)
277 1 {lcdwd(l_data[i]);
278 2 } delay(1);}
279 /**********************************************************************************************
280 函数:void l_set(void)
281 说明:各段显示数据设置,若存在小数点,则相应位的显示数据改变
282 ***********************************************************************************************/
283 void l_set(void)
284 {uchar i;
285 1 l_data[0]=0xff;
286 1 if(Fluxdrop_Flag) //判断是流量还是滴数模式
287 1 Point_Flag=0xff;
288 1 else
289 1 Point_Flag=2;
290 1 for(i=1;i<5;i++)
291 1 {l_data[i]=lcd_data[temp[i-1]];
292 2 }
293 1 if(Point_Flag!=0xff)
294 1 l_data[(Point_Flag+1)]=l_data[(Point_Flag+1)]&0x7F;
295 1 }
296 /**********************************************************************************************
297 函数:void display(void)
298 说明:显示设置数据
299 ***********************************************************************************************/
300 void display(void)
301 {l_set();
302 1 lcdwd1();
303 1 delay(Time_50ms);
304 1 WDTCN=0xA5;
305 1 delay(Time_50ms);
306 1 WDTCN=0xA5;
307 1 delay(Time_50ms);
308 1 WDTCN=0xA5;
309 1 delay(Time_50ms);
310 1 WDTCN=0xA5;
311 1 }
312 /**********************************************************************************************
313 函数:void noplay(void)
314 说明:为实现闪烁,需要一段时间空白显示
C51 COMPILER V8.01 PUMP 09/19/2006 11:35:54 PAGE 10
315 ***********************************************************************************************/
316 void noplay(void)
317 {uchar i;
318 1 for(i=1;i<6;i++)
319 1 l_data[i]=0xff;
320 1 lcdwd1();
321 1 delay(Time_50ms);
322 1 WDTCN=0xA5;
323 1 delay(Time_50ms);
324 1 WDTCN=0xA5;
325 1 delay(Time_50ms);
326 1 WDTCN=0xA5;
327 1 delay(Time_50ms);
328 1 WDTCN=0xA5;
329 1 }
330 /**********************************************************************************************
331 函数:void lcd2wbit(bit n)
332 说明:LCD位传输函数
333 ***********************************************************************************************/
334 void lcd2wbit(bit n)
335 { DI2PIN = n;
336 1 CLK2PIN = 1;
337 1 CLK2PIN = 0;
338 1 CLK2PIN = 1;
339 1 }
340 /**********************************************************************************************
341 函数:void lcd2wd(uchar data1)
342 说明:LCD字节传输函数
343 ***********************************************************************************************/
344 void lcd2wd(uchar data1)
345 { uchar i;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -