?? term3.lst
字號:
301 3 if (fmbak==245) surt_js=1;
302 3 if ((fmbak==240) && (surt_js==1)) surt_js=2;
C51 COMPILER V7.50 TERM3 04/06/2007 17:58:07 PAGE 6
303 3 else if ((fmbak==204) && (surt_js==1)) surt_js=6;
304 3 if ((surt_js==2) && (fmbak<201))
305 3 {
306 4 surt_js=3;
307 4 fmbak3=fmbak;
308 4 he=229+fmbak;
309 4 }
310 3 if ((surt_js==2) && (fmbak==250))
311 3 {
312 4 surt_js=3;
313 4 fmbak3=fmbak;
314 4 he=229+fmbak;
315 4 }
316 3 if ((surt_js==6) && (fmbak<10))
317 3 {
318 4 surt_js=7;
319 4 fmbak3=fmbak;
320 4 he=193+fmbak;
321 4 }
322 3
323 3 if ((surt_js==7) && (he==fmbak))
324 3 {
325 4 surt_js=0;
326 4 if (fmbak3<10) b_light=fmbak3+0x30;
327 4 if (fmbak3>4) DAC0=(fmbak3-5)*15000;
328 4 else DAC0=0;
329 4 }
330 3 if ((surt_js==3) && (he==fmbak))
331 3 {
332 4 surt_js=0;
333 4 if (fmbak3==250)
334 4 {
335 5 fm[0]=(2+0x30); //hundred
336 5 fm[1]=(5+0x30); //ten
337 5 fm[2]=(0+0x30); //one
338 5 Control_inf(fmbak1,fmbak2,0);
339 5 }
340 4 else
341 4 {
342 5 fm[0]=(fmbak3/100+0x30); //hundred
343 5 fm[1]=((fmbak3 % 100)/10+0x30); //ten
344 5 fm[2]=(((fmbak3 % 100) % 10)+0x30); //one
345 5 fmbak1=fmbak3/10+88;
346 5 fmbak2=fm[2]-0x30;
347 5 Control_inf(fmbak1,fmbak2,1);
348 5 }
349 4 }
350 3
351 3 RDR=0;
352 3 }
353 2
354 2 }
355 1 }
356
357 /////////////////////////////////////
358 // Config2 Code Configuration File //
359 /////////////////////////////////////
360 //----------------------------------------------------------------------------
361 // P0.0---VREF; SW_TX0(由于目前在該程序中ADC和DAC尚未初始化,所以SW_TX0暫被
362 // 分配在P0.0口上面;否則一切正常初始化完成后,已被分配
363 // 在P0.2腳上)
364 // P0.1---IDA;
C51 COMPILER V7.50 TERM3 04/06/2007 17:58:07 PAGE 7
365 // P0.2---GPIO; 待一切初始化正常后,將作為SW_TX0使用。
366 // P0.3---CEX0; SW_RX0
367 // P0.4---TX0;
368 // P0.5---RX0;
369 // P0.6---T0
370 // P0.7---GPIO; SW_SPI
371 // P1.0---GPIO; SW_SPI
372 // P1.1---GPIO; SW_SPI
373 // P1.2---AIN0
374 // P1.3---GPIO
375 // P1.4---GPIO
376 // P1.5---GPIO;
377 // P1.6---GPIO;
378 // P1.7---GPIO;
379 // Peripheral specific initialization functions,
380 // Called from the Init_Device() function
381 void Port_Init()
382 {
383 1 P0MDIN = 0xFE;
384 1 P0SKIP = 0x07;
385 1 P0MDOUT |= 0x16;
386 1
387 1 P1MDIN = 0xFF;
388 1 P1SKIP = 0x00;
389 1 P1MDOUT |= 0x00;
390 1
391 1 XBR0 = 0x01;
392 1 XBR1 = 0xC1;
393 1
394 1 }
395
396 //-----------------------------------------------------------------------------
397 // SYSCLK_Init
398 //-----------------------------------------------------------------------------
399 //
400 // This routine initializes the system clock to use the internal oscillator
401 // at its maximum frequency.
402 // Also enables the Missing Clock Detector.
403 //
404
405 void SYSCLK_Init (void)
406 {
407 1 OSCICN |= 0x03; // Configure internal oscillator for
408 1 // its maximum frequency
409 1 RSTSRC = 0x04; // Enable missing clock detector
410 1
411 1 }
412
413 //-----------------------------------------------------------------------------
414 // UART0_Init
415 //-----------------------------------------------------------------------------
416 //
417 // Configure the UART0 using Timer1, for <BAUDRATE> and 8-N-1.
418 //
419 void UART0_Init (void)
420 {
421 1 SCON0 = 0x10; // SCON0: 8-bit variable bit rate
422 1 // level of STOP bit is ignored
423 1 // RX enabled
424 1 // ninth bits are zeros
425 1 // clear RI0 and TI0 bits
426 1 if (SYSCLK/BAUDRATE/2/256 < 1) {
C51 COMPILER V7.50 TERM3 04/06/2007 17:58:07 PAGE 8
427 2 TH1 = -(SYSCLK/BAUDRATE/2);
428 2 CKCON &= ~0x0B; // T1M = 1; SCA1:0 = xx
429 2 CKCON |= 0x08;
430 2 } else if (SYSCLK/BAUDRATE/2/256 < 4) {
431 2 TH1 = -(SYSCLK/BAUDRATE/2/4);
432 2 CKCON &= ~0x0B; // T1M = 0; SCA1:0 = 01
433 2 CKCON |= 0x09;
434 2 } else if (SYSCLK/BAUDRATE/2/256 < 12) {
435 2 TH1 = -(SYSCLK/BAUDRATE/2/12);
436 2 CKCON &= ~0x0B; // T1M = 0; SCA1:0 = 00
437 2 } else {
438 2 TH1 = -(SYSCLK/BAUDRATE/2/48);
439 2 CKCON &= ~0x0B; // T1M = 0; SCA1:0 = 10
440 2 CKCON |= 0x02;
441 2 }
442 1
443 1 TL1 = TH1; // init Timer1
444 1 TMOD &= ~0xf0; // TMOD: timer 1 in 8-bit autoreload
445 1 TMOD |= 0x20;
446 1 TR1 = 1; // START Timer1
447 1 TI0 = 1; // Indicate TX0 ready
448 1 }
449
450 void SW_UART_Init (void)
451 {
452 1 PCA0MD = 0x02; //PCA counter use SYSCLK/4 as timebase
453 1 PCA0CPM1 = 0x49; //PCA0CPM1:capture triggered by
454 1 //negative edge on P0.3,enable module1
455 1 //interrupt
456 1 PCA0CPM0 = 0x11; //PCA0CPM0:software timer mode,enable
457 1 //module 0 interrupt
458 1
459 1 PCA0CN |= 0x40; //enables the PCA Counter/Timer.
460 1
461 1 CCF0 = 0;
462 1 CCF1 = 0;
463 1 SRI = 0; //????????
464 1 STI = 0; // ????????
465 1 SW_TX = 1; // TX????????
466 1 STXBSY = 0; // ??SW_UART???
467 1 SREN = 1; //????
468 1 }
469
470 //-----------------------------------------------------------------------------
471 // ???0???
472 //-----------------------------------------------------------------------------
473
474 void Timer0_Init (void)
475 {
476 1 TMOD|=0X06; //COUNT0
477 1 TL0=0X0FF; //interrupt when every pulse come
478 1 TH0=0X0FF;
479 1 EA=1;
480 1 ET0=1; //COUNT0 INT ENABLE
481 1 TR0=1; //COUNT0 START
482 1 }
483
484 void Timer0_ISR (void) interrupt 1
485 {
486 1 Pulse_s++;
487 1 }
488
C51 COMPILER V7.50 TERM3 04/06/2007 17:58:07 PAGE 9
489 //-----------------------------------------------------------------------------
490 // ADC0_Init ADBUSY, LP tracking, no Interrupt, ADC disabled
491 //-----------------------------------------------------------------------------
492 //
493 // Configure ADC0 to use ADBUSY as conversion source, and to sense the output
494 // of the temp sensor. Disables ADC end of conversion interrupt. Leaves ADC
495 // disabled.
496 //
497 void AD_Init (void)
498 {
499 1 ADC0CN = 0x40; // ADC0 disabled; LP tracking
500 1 // mode; ADC0 conversions are initiated
501 1 // on a write to ADBusy
502 1 AMX0P = 0x0a; // Temp sensor selected at + input
503 1 AMX0N = 0x11; // Single-ended mode
504 1
505 1 ADC0CF = (SYSCLK/3000000) << 3; // ADC conversion clock <= 3MHz
506 1
507 1 ADC0CF &= ~0x04; // Make ADC0 right-justified
508 1 REF0CN = 0x0E; // enable temp sensor, VREF = VDD, bias
509 1 // generator is on.
510 1
511 1 //EIE1 |= 0x08; // Enable ADC0 interrupt
512 1 ADC0CN = 0x80;
513 1 AD0BUSY = 1;
514 1 }
515
516
517 void Timer3_ISR (void) interrupt 14 //2.5ms
518 {
519 1 TMR3CN &= ~0x80;
520 1 key_scan_time++;
521 1
522 1 count_time++;
523 1
524 1 key_press_time++;
525 1
526 1 if (LcdBackLight_Delay_AfterS2410>0) LcdBackLight_Delay_AfterS2410--;
527 1 else if (key_zt==99)
528 1 {
529 2 }
530 1
531 1 if (key_time>0) key_time--;else key_time=0;
532 1
533 1 test++;
534 1
535 1 if (GPS_Alarm_js>0) GPS_Alarm_js--;else GPS_Alarm_js=0;
536 1
537 1 if (GPS_time>0) GPS_time--;else GPS_time=0;
538 1
539 1 if (FM_delay>0) FM_delay--;else FM_delay=0;
540 1
541 1 }
542
543 void Measure (void)
544 {
545 1 // (X*5-Y)/25=Z X:采樣數字 Y:基準(mV) Z:角度
546 1 AMX0P = 0x0a;
547 1 AMX0N = 0x11;
548 1 AD0INT = 0;
549 1 AD0BUSY = 1;
550 1 while (!AD0INT); // Wait for conversion to complete
C51 COMPILER V7.50 TERM3 04/06/2007 17:58:07 PAGE 10
551 1 AD0INT = 0; // Clear end-of-conversion indicator
552 1 TL_Adresult=ADC0; // Store latest ADC conversion
553 1
554 1 AMX0P = 0x00;
555 1 AMX0N = 0x11;
556 1 AD0INT = 0;
557 1 AD0BUSY = 1;
558 1 while (!AD0INT); // Wait for conversion to complete
559 1 AD0INT = 0; // Clear end-of-conversion indicator
560 1 GPS_Current=ADC0; // Store latest ADC conversion
561 1 }
562
563 //-----------------------------------------------------------------------------
564 // ???3???
565 //-----------------------------------------------------------------------------
566 void Timer3_Init ()
567 {
568 1 TMR3CN = 0x00;
569 1 CKCON |= 0x40;
570 1 TMR3RL = -60000;
571 1 TMR3 = TMR3RL;
572 1 EIE1 |= 0x80;
573 1 TMR3CN |= 0x04;
574 1
575 1 }
576
577 /*****************************************
578 * Uart Interrupt
579 *
580 *****************************************/
581 void Rcv_INT(void) interrupt 4
582 {
583 1 unsigned char tmp;
584 1 RI0=0;
585 1 tmp=RecvByte;
586 1 UartBuff=SBUF0;
587 1 RecvByte++;
588 1 if (RecvByte<HeaderLength+1)
589 1 {
590 2 Header[tmp]=UartBuff;
591 2 }
592 1 if(RecvByte==HeaderLength)
593 1 {
594 2 if((Header[0]=='$')&&(Header[1]=='G')&&(Header[2]=='P')&&(Header[3]=='G')&&(Header[4]=='G')&&(Header[5
-]=='A'))
595 2 { //if it is a "$GPGGA" frame
596 3 FrameLength=1;
597 3 }
598 2 else if((Header[0]=='$')&&(Header[1]=='G')&&(Header[2]=='P')&&(Header[3]=='R')&&(Header[4]=='M')&&(Heade
-r[5]=='C'))
599 2 { //if it is a "$GPGGA" frame
600 3 FrameLength=3;
601 3 }
602 2 else
603 2 {
604 3 FrameLength=2; //if it is other frame,discard it
605 3 }
606 2
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -