| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- 1 ; C Compiler for STM8 (COSMIC Software)
- 2 ; Parser V4.8.32 - 23 Mar 2010
- 3 ; Generator V4.3.4 - 23 Mar 2010
- 2468 ; 18 void ADC_INIT()
- 2468 ; 19 {
- 2470 switch .text
- 2471 0000 _ADC_INIT:
- 2475 ; 21 CLK_PCKENR2 |=0x08;
- 2477 0000 721650ca bset _CLK_PCKENR2,#3
- 2478 ; 23 ADC_CR1 = 0x00;
- 2480 0004 725f5401 clr _ADC_CR1
- 2481 ; 25 ADC_CR2 = 0x08;
- 2483 0008 35085402 mov _ADC_CR2,#8
- 2484 ; 27 ADC_CR3 = 0x00;
- 2486 000c 725f5403 clr _ADC_CR3
- 2487 ; 30 ADC_TDRH = 0x00;
- 2489 0010 725f5406 clr _ADC_TDRH
- 2490 ; 31 ADC_TDRL = 0x00;
- 2492 0014 725f5407 clr _ADC_TDRL
- 2493 ; 32 }
- 2496 0018 81 ret
- 2560 ; 39 unsigned int getADCValue(unsigned char channel){
- 2561 switch .text
- 2562 0019 _getADCValue:
- 2564 0019 88 push a
- 2565 001a 5204 subw sp,#4
- 2566 00000004 OFST: set 4
- 2569 ; 41 unsigned int tmp = 0;
- 2571 001c 5f clrw x
- 2572 001d 1f01 ldw (OFST-3,sp),x
- 2573 ; 42 unsigned int j = 60,i;
- 2575 ; 44 ADC_CSR &=0xF0;
- 2577 001f c65400 ld a,_ADC_CSR
- 2578 0022 a4f0 and a,#240
- 2579 0024 c75400 ld _ADC_CSR,a
- 2580 ; 46 if(channel < 16){
- 2582 0027 7b05 ld a,(OFST+1,sp)
- 2583 0029 a110 cp a,#16
- 2584 002b 244b jruge L3361
- 2585 ; 48 ADC_CSR |= channel;
- 2587 002d c65400 ld a,_ADC_CSR
- 2588 0030 1a05 or a,(OFST+1,sp)
- 2589 0032 c75400 ld _ADC_CSR,a
- 2590 ; 50 ADC_CR1 |= 0x01;
- 2592 0035 72105401 bset _ADC_CR1,#0
- 2593 ; 52 j = 60;
- 2595 0039 ae003c ldw x,#60
- 2596 003c 1f03 ldw (OFST-1,sp),x
- 2597 ; 53 tmp = 0;
- 2599 003e 5f clrw x
- 2600 003f 1f01 ldw (OFST-3,sp),x
- 2602 0041 L1461:
- 2603 ; 54 while(j--);
- 2605 0041 1e03 ldw x,(OFST-1,sp)
- 2606 0043 1d0001 subw x,#1
- 2607 0046 1f03 ldw (OFST-1,sp),x
- 2608 0048 1c0001 addw x,#1
- 2609 004b a30000 cpw x,#0
- 2610 004e 26f1 jrne L1461
- 2611 ; 56 for(i=0;i<10;i++) {
- 2613 0050 5f clrw x
- 2614 0051 1f03 ldw (OFST-1,sp),x
- 2615 0053 L5461:
- 2616 ; 59 ADC_CR1 |= 0x01;
- 2618 0053 72105401 bset _ADC_CR1,#0
- 2620 0057 L5561:
- 2621 ; 61 while((ADC_CSR & 0x80) == 0);
- 2623 0057 c65400 ld a,_ADC_CSR
- 2624 005a a580 bcp a,#128
- 2625 005c 27f9 jreq L5561
- 2626 ; 63 ADC_CSR &= (~0x80);
- 2628 005e 721f5400 bres _ADC_CSR,#7
- 2629 ; 65 tmp += *((uint *)&ADC_DRH);
- 2631 0062 1e01 ldw x,(OFST-3,sp)
- 2632 0064 72bb5404 addw x,_ADC_DRH
- 2633 0068 1f01 ldw (OFST-3,sp),x
- 2634 ; 56 for(i=0;i<10;i++) {
- 2636 006a 1e03 ldw x,(OFST-1,sp)
- 2637 006c 1c0001 addw x,#1
- 2638 006f 1f03 ldw (OFST-1,sp),x
- 2641 0071 1e03 ldw x,(OFST-1,sp)
- 2642 0073 a3000a cpw x,#10
- 2643 0076 25db jrult L5461
- 2644 0078 L3361:
- 2645 ; 77 ADC_CR1 &= ~0x01;
- 2647 0078 72115401 bres _ADC_CR1,#0
- 2648 ; 80 return tmp/10;
- 2650 007c 1e01 ldw x,(OFST-3,sp)
- 2651 007e 90ae000a ldw y,#10
- 2652 0082 65 divw x,y
- 2655 0083 5b05 addw sp,#5
- 2656 0085 81 ret
- 2681 xdef _getADCValue
- 2682 xdef _ADC_INIT
- 2683 switch .ubsct
- 2684 0000 _adcvalue:
- 2685 0000 000000000000 ds.b 20
- 2686 xdef _adcvalue
- 2706 end
|