📄 lpc935.lst
字号:
313 6 case 5:
314 6 LED7=On;
315 6 break;
316 6 case 6:
317 6 LED8=On;
318 6 break;
319 6 case 7:
320 6 LED9=On;
321 6 break;
322 6 }
323 5 }
324 4 else
325 4 {
326 5 switch(CMD.Param1)
327 5 {
328 6 case 5:
329 6 LED7=Off;
330 6 break;
331 6 case 6:
332 6 LED8=Off;
333 6 break;
334 6 case 7:
335 6 LED9=Off;
336 6 break;
337 6 }
338 5 }
339 4 break;
340 4 case PWM_COMMAND:
341 4 //LED7=Off;LED8=Off;LED9=On;
342 4 break;
343 4 case ADSMPL_COMMAND:
344 4 AD_Channel=CMD.Param1;
345 4 Send_Ms_Cnt=CMD.Param2;
346 4 Flag_AD=true;
347 4 break;
348 4 case SOFT_RESET:
349 4 if(CMD.Param1==0x00A5&&CMD.Param2==0x00A5)
350 4 AUXR1|=0x08;
351 4 break;
352 4 case GET_COUNT:
353 4 if(CMD.Param2==1)Flag_GetCounter=true;
354 4 else if(CMD.Param2==0) Flag_GetCounter=false;
355 4 break;
356 4 default:
357 4 /* Second_Cnt=0;
358 4 RELAX1=High;
359 4 RELAX2=High;
360 4 RELAX3=High;
361 4 RELAX4=High;
362 4 LED7=On;
363 4 LED8=On;
364 4 LED9=On;
365 4 while(Second_Cnt<1);
C51 COMPILER V7.09 LPC935 03/14/2006 04:35:09 PAGE 7
366 4 Second_Cnt=0;
367 4 RELAX1=Low;
368 4 RELAX2=Low;
369 4 RELAX3=Low;
370 4 RELAX4=Low;
371 4 LED7=Off;
372 4 LED8=Off;
373 4 LED9=Off;
374 4 while(Second_Cnt<1);/**/
375 4 break;
376 4 }
377 3 }
378 2 //}
379 2 }
380 1 } // end main()
381
382
383 //**************************************************
384
385
386
387 void Init_IO(void)
388 {
389 1
390 1 P2M1=0x00;
391 1 P2M2=0x00;
392 1 P3M1=0x00;
393 1 P3M2=0x00;
394 1 P1M1=0x80;
395 1 P1M2=0x00;
396 1 //P0M1=0x1F;
397 1 P0M1=0x00;
398 1 P0M2=0x00;
399 1 // AUXR1&=~0x08;// Disable the software reset
400 1 // AUXR1|=1;
401 1 DIVM=0;
402 1 }
403
404 //**************************************************
405 //串口 9600BAUDRATE N 8 1
406 void UART_init()
407 {
408 1 // configure UART
409 1 // clear SMOD0
410 1 PCON &= ~0x40;
411 1 SCON = 0x50;
412 1 // set or clear SMOD1
413 1 PCON &= 0x7f;
414 1 PCON |= (0 << 8);
415 1 SSTAT = 0x00;
416 1
417 1 // configure baud rate generator
418 1 BRGCON = 0x00;
419 1 BRGR0 = 0xF0; //7.373M baudrate=9600 (BRGR1,BTGR0)=7.373M/9600-16
420 1 BRGR1 = 0x02;
421 1 BRGCON = 0x03;
422 1
423 1 ESR=1; //ESR=Enable Serial Recieve
424 1 }
425
426 void Rcv_ISR() interrupt 4
427 {
C51 COMPILER V7.09 LPC935 03/14/2006 04:35:09 PAGE 8
428 1 byte temp;
429 1 EA=0;
430 1 //LED7=On;
431 1 if(RI)
432 1 {
433 2 RI=0;
434 2 temp=SBUF;
435 2 //SIO_Out_Byte(temp);LED7=Off;
436 2 switch(Rec_Idx)
437 2 {
438 3 case 0:
439 3 if(temp<0xA0||temp>0xA6)
440 3 {
441 4 Rec_Idx=0;return;
442 4 }
443 3 tempCMD.Command=temp;
444 3 //SIO_Out_Byte(temp);
445 3 Rec_Idx++;
446 3 break;
447 3 case 1:
448 3 tempCMD.Param1=temp;
449 3 tempCMD.Param1<<=8;
450 3 //SIO_Out_Byte(temp);
451 3 Rec_Idx++;
452 3 break;
453 3 case 2:
454 3 tempCMD.Param1+=temp;
455 3 //SIO_Out_Byte(temp);
456 3 Rec_Idx++;
457 3 break;
458 3 case 3:
459 3 tempCMD.Param2=temp;
460 3 tempCMD.Param2<<=8;
461 3 //SIO_Out_Byte(temp);
462 3 Rec_Idx++;
463 3 break;
464 3 case 4:
465 3 tempCMD.Param2+=temp;
466 3 CMD.Command=tempCMD.Command;
467 3 CMD.Param1=tempCMD.Param1;
468 3 CMD.Param2=tempCMD.Param2;
469 3 //SIO_Out_Byte(temp);
470 3 Flag_COM_Rec=true;Rec_Idx=0;
471 3 break;
472 3 default:
473 3 Rec_Idx=0;
474 3 break;
475 3 }
476 2 }
477 1 EA=1;
478 1 }
479
480 //------------------------- //功能发送中断 //-------------------------
481 void Send_ISR() interrupt 13
482 {
483 1 EA=0;
484 1 EA=1;
485 1 } //--------------------------
486
487
488 //**************************************************
489 //10ms 中断函数
C51 COMPILER V7.09 LPC935 03/14/2006 04:35:09 PAGE 9
490 void timer0_int(void) interrupt 1
491 {
492 1 EA=0;
493 1 TH0=TH0_DATA;
494 1 TL0=TL0_DATA;
495 1 Cnt_100us++;
496 1 if(Cnt_100us>=10)
497 1 {
498 2 Cnt_MS++;
499 2 Snd_Time_Cnt++;
500 2 Cnt_100us=0;
501 2 }
502 1 if (Cnt_MS>=1000)
503 1 {
504 2 Cnt_MS=0;
505 2 //Flag_Second=true;
506 2 Second_Cnt++;
507 2 }
508 1 //if(Snd_Time_Cnt>=Send_Ms_Cnt&&Flag_AD) Send_AD_Result();
509 1 EA=1;
510 1 }
511
512 void timer0_init(void)
513 {
514 1 // configure timer 0
515 1 TMOD = 0x01;
516 1
517 1 // timer values
518 1 TH0 = TH0_DATA;
519 1 TL0 = TL0_DATA;
520 1
521 1 // enable timer 0 interrupt
522 1 ET0 = 1;
523 1 // start timer 0
524 1 TR0 = 1;
525 1 } // timers_init
526
527 void ADC_init(void)
528 {
529 1
530 1 ADINS=0x31; //0011 0001, 选择 AD11,AD10,AD00 3 channels
531 1 ADMODA=0x11; //0001 0001, 选择转换工作模式:自动扫描,单次转换模式
532 1 //ADMODA=0x44; //0001 0001, 选择转换工作模式:自动扫描,连续转换模式
533 1 ADMODB=0x00; //500Khz < ADC CLK < 3.3Mhz,,
534 1 // disable adc interrupt
535 1 EAD = 0;
536 1 }
537
538 void delayms(word ms)
539 {
540 1 byte i;
541 1 while (ms>0) {
542 2 for (i=0;i<200;i++);
543 2 ms--;
544 2 }
545 1 }
546
547 void SIO_Out_Hex(byte b)
548 {
549 1 SBUF='0';
550 1 while (!TI);
551 1 TI=0;
C51 COMPILER V7.09 LPC935 03/14/2006 04:35:09 PAGE 10
552 1 SBUF='x';
553 1 while (!TI);
554 1 TI=0;
555 1 if ((b>>4)<0x0a)
556 1 SBUF=0x30+(b>>4);
557 1 else
558 1 SBUF=0x37+(b>>4);
559 1 while (!TI);
560 1 TI=0;
561 1
562 1 if ((b&0x0f)<0x0a)
563 1 SBUF=0x30+(b&0x0f);
564 1 else
565 1 SBUF=0x37+(b&0x0f);
566 1 while (!TI);
567 1 TI=0;
568 1
569 1 SBUF='H';
570 1 while (!TI);
571 1 TI=0;
572 1
573 1 }
574
575 void SIO_Out_Dec(byte b)
576 {
577 1 byte temp;
578 1 temp=b/10;
579 1 SBUF=0x30+(temp);
580 1 while (!TI);
581 1 TI=0;
582 1
583 1 SBUF=0x30+(b-temp*10);
584 1 while (!TI);
585 1 TI=0;
586 1 }
587
588 void SIO_Out_Byte(byte b)
589 {
590 1 SBUF=b;
591 1 while (!TI);
592 1 TI=0;
593 1 }
594
595 void SIO_Out_Str (byte *pstr)
596 {
597 1 while (*pstr!=0x00)
598 1 {
599 2 SBUF=*pstr;
600 2 while (!TI);
601 2 TI=0;
602 2 pstr++;
603 2 }
604 1 }
605
606 void Clear_Timer(void)
607 {
608 1 EA=0;
609 1 Flag_10ms=false;
610 1 Flag_Second=false;
611 1 EA=1;
612 1 }
613
C51 COMPILER V7.09 LPC935 03/14/2006 04:35:09 PAGE 11
614 void Do_ADConvert()
615 {
616 1 ADCON0=0x05; //选择转换触发模式;并立即启动
617 1 AD_Current=AD0DAT0;
618 1 ADCON0&=0xF7; //清除中断完成标志
619 1
620 1 ADCON1=0x05; //选择转换触发模式;并立即启动
621 1 AD_Load=AD1DAT0; // ALL AD Convert in sample frequencs
622 1 AD_Battery=AD1DAT1;
623 1 ADCON1&=0xF7; //清除中断完成标志
624 1 }
625
626
627
628 void delayus(word us)
629 {
630 1 while (us--);
631 1 }
632
633 void Send_AD_Result(void)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -