📄 subprog.lst
字号:
257 1 }
258 /*********************************************************************************************************
259 ** 函数名称: void SetupDA(unsigned int temp16)
260 ** 功能描述: 设定DA
261 ** 输 入:
262 ** 输 出:
263 ** 全局变量:
264 ** 调用模块:
265 ** 注 意:
266 ** 作 者:
267 ** 日 期:
268 **-------------------------------------------------------------------------------------------------------
269 ** 修改人:
270 ** 日 期:
271 **-------------------------------------------------------------------------------------------------------
272 *********************************************************************************************************/
273 void SetupDA(unsigned int temp16)
274 {
275 1 if(temp16 > 4094)
276 1 {
277 2 temp16 = 4094;
278 2 }
279 1 WriteOutDA = temp16;
280 1 WriteOutXRAM(CPLD_PWM_HIGH,(unsigned char)(temp16>>8));
281 1 WriteOutXRAM(CPLD_PWM_LOW ,(unsigned char)temp16);
282 1 }
283 /*********************************************************************************************************
284 ** 函数名称: Midst
285 ** 功能描述: 求中间值 返回中间值
286 ** 输 入: pbuf被处理数据区首地址,width:被处理数据区宽度
287 ** 输 出: 中间值
288 ** 全局变量: 无
289 ** 调用模块: 无
290 **
291 ** 作 者: 刘宝贵
292 ** 日 期: 2004年4月19日
293 **-------------------------------------------------------------------------------------------------------
294 ** 修改人:
295 ** 日 期:
296 **-------------------------------------------------------------------------------------------------------
297 *********************************************************************************************************/
298 /*
299 uint16 Midst(uint16 *pbuf, uint8 width)
300 {
301 int8 m, n;
302 uint16 itemp;
C51 COMPILER V7.06 SUBPROG 01/22/2007 09:50:03 PAGE 6
303 uint16 xdata buf[99];
304 for (m = 0; m < width; m++)
305 {
306 buf[m] = pbuf[m];
307 }
308 for (m = 0; m < width; m++)
309 {
310 for ( n = m - 1; n >= 0; n--)
311 {
312 if (buf[n+1] > buf[n])
313 {
314 itemp = buf[n];
315 buf[n] = buf[n+1];
316 buf[n+1] = itemp;
317 }
318 }
319 }
320 itemp = buf[width/2];
321
322 itemp+= buf[width/2-1];
323 itemp+= buf[width/2-2];
324 itemp+= buf[width/2+1];
325 itemp+= buf[width/2+2];
326 itemp/=5;
327 return itemp;
328 // return buf[width/2];
329 }
330 /*********************************************************************************************************
331 ** 函数名称: uint16 MidstStruct(struct DataRecord *pbuf, uint8 width,uint16 NewRecord)
332 ** 功能描述: 求中间值 返回中间值
333 ** 输 入: pbuf被处理数据区首地址,width:被处理数据区宽度
334 ** 输 出: 中间值
335 ** 全局变量: 无
336 ** 调用模块: 无
337 **
338 ** 作 者: 刘宝贵
339 ** 日 期: 2006年3月25日
340 **-------------------------------------------------------------------------------------------------------
341 ** 修改人:
342 ** 日 期:
343 **-------------------------------------------------------------------------------------------------------
344 *********************************************************************************************************/
345 uint16 MidstStruct(struct DataRecord *pbuf, uint8 width,uint16 NewRecord)
346 {
347 1 uint8 i,j;
348 1 struct DataRecord *ptemp;
349 1 bit flag;
350 1 flag = 0;
351 1 ptemp = pbuf;
352 1 for(i = 0;i<width; i++,pbuf++)
353 1 {
354 2 if(pbuf->Sequence >0)
355 2 {
356 3 if(--(pbuf->Sequence)==0)
357 3 {
358 4 j = i;
359 4 }
360 3 }
361 2 }
362 1 pbuf = ptemp + j;
363 1 for(i = j;i<width-1; i++,pbuf++)
364 1 {
C51 COMPILER V7.06 SUBPROG 01/22/2007 09:50:03 PAGE 7
365 2 pbuf->Record = (pbuf+1)->Record;
366 2 pbuf->Sequence = (pbuf+1)->Sequence;
367 2 }
368 1 for(;i>0;i--,pbuf--)
369 1 {
370 2 if(NewRecord < (pbuf-1)->Record)
371 2 {
372 3 pbuf->Record = (pbuf-1)->Record;
373 3 pbuf->Sequence = (pbuf-1)->Sequence;
374 3 }
375 2 else
376 2 {
377 3 break;
378 3 }
379 2 }
380 1 pbuf->Record = NewRecord;
381 1 pbuf->Sequence = width;
382 1 return((ptemp+width/2)->Record);
383 1 }
384 /*********************************************************************************************************
385 ** 函数名称: unsigned char WriteOutXRAM(unsigned char Address,unsigned char temp8)
386 ** 功能描述: 写单片机外扩的XRAM,要先不使能单片机内部的XRAM,写完后再使能CPU内部XRAM
387 ** 输 入:
388 ** 输 出:
389 ** 全局变量: 无
390 ** 调用模块: 无
391 **
392 ** 作 者: 刘宝贵
393 ** 日 期: 2006年3月24日
394 **-------------------------------------------------------------------------------------------------------
395 ** 修改人:
396 ** 日 期:
397 **-------------------------------------------------------------------------------------------------------
398 *********************************************************************************************************/
399 void WriteOutXRAM(unsigned char Address,unsigned char temp8)
400 {
401 1 P0 = Address;
402 1 ALE = 0;
403 1 P0 = temp8;
404 1 WR = 0;
405 1 WR = 1;
406 1 ALE = 1;
407 1 }
408 /*********************************************************************************************************
409 ** 函数名称: unsigned char ReadOutXRAM(unsigned char Address)
410 ** 功能描述: 读单片机外扩的XRAM,要先不使能单片机内部的XRAM,读完后再使能CPU内部XRAM
411 ** 输 入:
412 ** 输 出:
413 ** 全局变量: 无
414 ** 调用模块: 无
415 **
416 ** 作 者: 刘宝贵
417 ** 日 期: 2006年3月24日
418 **-------------------------------------------------------------------------------------------------------
419 ** 修改人:
420 ** 日 期:
421 **-------------------------------------------------------------------------------------------------------
422 *********************************************************************************************************/
423 unsigned char ReadOutXRAM(unsigned char Address)
424 {
425 1 unsigned char i;
426 1 P0 = Address;
C51 COMPILER V7.06 SUBPROG 01/22/2007 09:50:03 PAGE 8
427 1 ALE = 0;
428 1 P0 = 0xFF;
429 1 RD = 0;
430 1 i = P0;
431 1 RD = 1;
432 1 ALE = 1;
433 1 return(i);
434 1 }
435 /*********************************************************************************************************
436 ** 函数名称: unsigned int ClaculateSub(unsigned int Count,unsigned int b,unsigned int k)
437 ** 功能描述: 对给定的数据进行处理
438 ** 输 入:
439 ** 输 出:
440 ** 全局变量:
441 ** 调用模块: 无
442 **
443 ** 作 者: 刘宝贵
444 ** 日 期: 2006年4月6日
445 **-------------------------------------------------------------------------------------------------------
446 ** 修改人:
447 ** 日 期:
448 **-------------------------------------------------------------------------------------------------------
449 *********************************************************************************************************/
450 unsigned int ClaculateSub(unsigned int Count,unsigned int b,unsigned int k)
451 {
452 1 unsigned long temp32;
453 1 if( (4095-b) > Count)
454 1 {
455 2 temp32 = (4095-b) - Count;
456 2 }
457 1 else
458 1 {
459 2 temp32 = 0;
460 2 }
461 1 temp32*=k;
462 1 temp32/=1000;
463 1 return ( (unsigned int)temp32 );
464 1 }
465 /*********************************************************************************************************
466 ** 函数名称: bit TestDataSub(unsigned int Data16A,unsigned int Data16B,unsigned char multiple)
467 ** 功能描述: 测试给定的数据A和数据B是否相差给定的倍数分之一
468 ** 输 入:
469 ** 输 出:
470 ** 全局变量:
471 ** 调用模块: 无
472 **
473 ** 作 者: 刘宝贵
474 ** 日 期: 2006年4月6日
475 **-------------------------------------------------------------------------------------------------------
476 ** 修改人:
477 ** 日 期:
478 **-------------------------------------------------------------------------------------------------------
479 *********************************************************************************************************/
480 bit TestDataSub(unsigned int Data16A,unsigned int Data16B,unsigned char Multiple)
481 {
482 1 if( Data16A > Data16B)
483 1 {
484 2 if(Data16A - Data16B > Data16A/Multiple)
485 2 {
486 3 return(1);
487 3 }
488 2 else
C51 COMPILER V7.06 SUBPROG 01/22/2007 09:50:03 PAGE 9
489 2 {
490 3 return(0);
491 3 }
492 2 }
493 1 else
494 1 {
495 2 if(Data16B - Data16A > Data16B/Multiple)
496 2 {
497 3 return(1);
498 3 }
499 2 else
500 2 {
501 3 return(0);
502 3 }
503 2 }
504 1 }
505 /*********************************************************************************************************
506 ** 函数名称: void AdjustVoltage()
507 ** 功能描述: 恒压充电时进行恒压调节
508 ** 输 入:
509 ** 输 出:
510 ** 全局变量:
511 ** 调用模块:
512 **
513 ** 作 者: 刘宝贵
514 ** 日 期: 2006年4月8日
515 **-------------------------------------------------------------------------------------------------------
516 ** 修改人:
517 ** 日 期:
518 **-------------------------------------------------------------------------------------------------------
519 *********************************************************************************************************/
520 #define UZero 2
521 #define IZero 2
522 void AdjustVoltage()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -