📄 de.lst
字号:
293
294 void timer0() interrupt 1
295 {
296 1
297 1 TH0=0xfa;
298 1 TL0=0x00; //1ms的初始值
299 1 time_1ms_flag=1;
300 1 time_10ms++;
301 1 if(time_10ms == 10)
302 1 {
303 2 time_50ms++;
C51 COMPILER V8.04 DE 01/18/2008 13:01:19 PAGE 6
304 2 time_10ms=0;
305 2 time_10ms_flag=1;
306 2 }
307 1 if(time_50ms == 5) //设置50ms扫描一次键盘
308 1 {
309 2 time_100ms++;
310 2 time_50ms = 0;
311 2 time_50ms_flag = 1;
312 2 key=keyup(); //按键扫描
313 2 if( key!= 0 ) //判断是否有按键按下
314 2 {
315 3 send_flag = 1;
316 3 }
317 2 }
318 1 if(time_100ms == 2)
319 1 {time_500ms++;time_100ms=0;time_100ms_flag=1;}
320 1 if(time_500ms == 5)
321 1 {time_1s++;time_500ms=0;time_500ms_flag=1;}
322 1 if(time_1s == 2)
323 1 {time_60s++;time_1s=0;time_1s_flag=1;}
324 1 if(time_60s == 60)
325 1 {time_60s=0;time_60s_flag=1;}
326 1 }
327
328 /*******************************************************************
329 * 函数名称:value_change
330 *
331 * 函数功能描述:ADC转换后的电压变换处理。
332 *
333 * 输入参数:none;
334 *
335 * 返回数据:none;
336 *
337 * 注意:none;
338 ********************************************************************/
339
340 uchar value_change()
341 {
342 1 int i;
343 1 if(channel0_flag==1)
344 1 {
345 2 DAC0_Init();
346 2 DAC1_Init();
347 2 delay(300);
348 2 {
349 3 ADC0_Conver();
350 3 i=0;
351 3 {
352 4 EA=0;
353 4 voltage=result[0]; //读取值。
354 4 EA=1;
355 4 voltage=2450*voltage;
356 4 voltage=voltage>>12;
357 4 voltage=voltage/100;
358 4 mopt[0]=voltage;
359 4 EA=0;
360 4 }
361 3 ADC0_Conver();
362 3 i=0;
363 3 {
364 4 EA=0;
365 4 voltage=result[0]; //读取值。
C51 COMPILER V8.04 DE 01/18/2008 13:01:19 PAGE 7
366 4 EA=1;
367 4 voltage=2450*voltage;
368 4 voltage=voltage>>12;
369 4 voltage=voltage/100;
370 4 mopt[0]=voltage;
371 4 EA=0;
372 4 }
373 3 ADC0_Conver();
374 3 i=0;
375 3 {
376 4 EA=0;
377 4 voltage=result[0]; //读取值。
378 4 EA=1;
379 4 voltage=2450*voltage;
380 4 voltage=voltage>>12;
381 4 voltage=voltage/100;
382 4 mopt[0]=voltage;
383 4 EA=0;
384 4 }
385 3 }
386 2 delay(300);
387 2 channel0_flag=0;
388 2 }
389 1 if(channel1_flag==1)
390 1 { DAC0_Init();
391 2 DAC1_Init();
392 2 delay(300);
393 2 ADC0_Conver();
394 2 i=1;
395 2 {
396 3 EA=0;
397 3 voltage=result[i]; //读取值。
398 3 EA=1;
399 3 voltage=2450*voltage;
400 3 voltage=voltage>>12;
401 3 voltage=voltage/100;
402 3 mopt[i]=voltage;
403 3 EA=0;
404 3 }
405 2 ADC0_Conver();
406 2 i=1;
407 2 {
408 3 EA=0;
409 3 voltage=result[i]; //读取值。
410 3 EA=1;
411 3 voltage=2450*voltage;
412 3 voltage=voltage>>12;
413 3 voltage=voltage/100;
414 3 mopt[i]=voltage;
415 3 EA=0;
416 3 }
417 2 ADC0_Conver();
418 2 i=1;
419 2 {
420 3 EA=0;
421 3 voltage=result[i]; //读取值。
422 3 EA=1;
423 3 voltage=2450*voltage;
424 3 voltage=voltage>>12;
425 3 voltage=voltage/100;
426 3 mopt[i]=voltage;
427 3 EA=0;
C51 COMPILER V8.04 DE 01/18/2008 13:01:19 PAGE 8
428 3 }
429 2
430 2 channel1_flag=0;
431 2 }
432 1 strcpy(dat,"AIN1=");
433 1 dat[5]=(uchar)(mopt[0]/10)+0x30;
434 1 dat[6]='.';
435 1 dat[7]=(uchar)(mopt[0] % 10)+0x30;
436 1 dat[8]='V';
437 1 dat[9]=','; //AIN1=x.xV, AIN2=x.xV
438 1 dat[10]='A';
439 1 dat[11]='I';
440 1 dat[12]='N';
441 1 dat[13]='2';
442 1 dat[14]='=';
443 1 dat[15]=(uchar)(mopt[1]/10)+0x30;
444 1 dat[16]='.';
445 1 dat[17]=(uchar)(mopt[1] % 10)+0x30;
446 1 dat[18]='V';
447 1 delay(500);
448 1 return 1;
449 1 }
450
451 /*******************************************************************
452 * 函数名称:send_232;
453 *
454 * 函数功能描述:向232发送字符到SBUF0;
455 ********************************************************************/
456
457 void send_232(send_232_end,uchar send_232_code[])
458 {
459 1 if(rs232_send_size<send_232_end)
460 1 {
461 2 SBUF0=send_232_code[rs232_send_size];
462 2 rs232_send_size++;
463 2 }
464 1 }
465
466 /*******************************************************************
467 * 函数名称:serial_0();
468 *
469 * 函数功能描述:UART0采用定时中断的方式通过串0口发送字符,
470 *
471 * 输入参数:none
472 *
473 * 返回数据:none;
474 ********************************************************************/
475
476 void serial_0(void) interrupt 4
477 {
478 1 if ( TI0 )
479 1 {
480 2 send_232(sizeof(dat),&dat);
481 2 TI0=0;
482 2 }
483 1 if ( RI0 )
484 1 {
485 2 RI0=0;
486 2 }
487 1 }
488
489 /*******************************************************************
C51 COMPILER V8.04 DE 01/18/2008 13:01:19 PAGE 9
490 *主循环程序
491 *
492 ********************************************************************/
493
494 main()
495 {
496 1 uchar i=0;
497 1 uchar dat[20];
498 1 DAC0L=0;
499 1 DAC0H=0;
500 1 DAC1L=0;
501 1 DAC1H=0;
502 1 memset(dat,0,sizeof(dat));
503 1 Init_Device();
504 1 Uart0_Enable(1);
505 1 ADC0_Init();
506 1 ADC0_enable(1);
507 1 while(1)
508 1 {
509 2 if(send_flag== 1)
510 2 {
511 3 switch(key)
512 3 {
513 4 case 0x11:
514 4 dac_value[0]=0xaa;
515 4 dac_value[1]=0x06;
516 4 dac_value[2]=0;
517 4 dac_value[3]=0;
518 4 channel0_flag=1;
519 4 break;
520 4 case 0x21:
521 4 dac_value[0]=0x54;
522 4 dac_value[1]=0x0b;
523 4 dac_value[2]=0;
524 4 dac_value[3]=0;
525 4 channel0_flag=1;
526 4 break;
527 4 case 0x41:
528 4 dac_value[0]=0;
529 4 dac_value[1]=0;
530 4 dac_value[2]=0xaa;
531 4 dac_value[3]=0x06;
532 4 channel1_flag=1;
533 4 break;
534 4 case 0x81:
535 4 dac_value[0]=0;
536 4 dac_value[1]=0;
537 4 dac_value[2]=0x54;
538 4 dac_value[3]=0x0b;
539 4 channel1_flag=1;
540 4 break;
541 4 default:
542 4 DAC0L=0;
543 4 DAC0H=0;
544 4 DAC1L=0;
545 4 DAC1H=0;
546 4 break;
547 4 }
548 3 send_flag= 0;
549 3 }
550 2 EA=1;
551 2 value_change();
C51 COMPILER V8.04 DE 01/18/2008 13:01:19 PAGE 10
552 2 delay(500);
553 2 if(time_1s_flag==1)
554 2 {
555 3 rs232_send_size=0;
556 3 SFRPAGE=UART0_PAGE;
557 3 delay(100);
558 3 TI0=1;
559 3 time_1s_flag=0;
560 3 }
561 2 if(time_1ms_flag==1)
562 2 {
563 3 P3_5=~P3_5;
564 3 P2_4=~P2_4;
565 3 P2_5=~P2_5;
566 3 P2_6=~P2_6;
567 3 time_1ms_flag=0;
568 3 }
569 2
570 2 }
571 1 }
572
573 /*******************************************************************/
574 // 文件结束
575 /*******************************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1582 ----
CONSTANT SIZE = 6 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 62 25
IDATA SIZE = ---- ----
BIT SIZE = 7 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -