Call i podprogram
: 09 sty 2018, 20:42
Witam serdecznie,
Mam pewien problem z podprogramem a mianowicie podprogram jest wykorzystywany do zamiany wartosci odczytanej z ADC na stopnie C zgodnie z charakterystyką czujnika zapisanego w select case
problem polega na tym że co jakiś czas są przekłamania w zmiennych Out_1 i Out_2
sprawdziłem jak się zachowuje jak nie wywołuje 2 raz podprogramu i jest wszystko w porządku i teraz pytanko jak by to wygladało jak call był by uzyty z parametrem >? o ile takie rozwiazanie przyniesie korzyści
Mam pewien problem z podprogramem a mianowicie podprogram jest wykorzystywany do zamiany wartosci odczytanej z ADC na stopnie C zgodnie z charakterystyką czujnika zapisanego w select case
problem polega na tym że co jakiś czas są przekłamania w zmiennych Out_1 i Out_2
sprawdziłem jak się zachowuje jak nie wywołuje 2 raz podprogramu i jest wszystko w porządku i teraz pytanko jak by to wygladało jak call był by uzyty z parametrem >? o ile takie rozwiazanie przyniesie korzyści
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- $regfile = "m8adef.dat"
- $crystal = 8000000
- '----------------------------
- $hwstack = 40
- $swstack = 16
- $framesize = 32
- $baud = 9600
- Const Koniec = &HFF
- Dim Wykres_1 As String * 15
- Dim Wykres_2 As String * 15
- Dim C0 As Integer
- Dim C As Integer
- Dim Out_1 As Integer
- Dim Out_1_c As Integer
- Dim Out_2 As Integer
- Dim Out_2_c As Integer
- Dim Out_3 As Integer
- Dim Ccc As Integer
- Declare Sub Charakterystyka
- 'konfiguracja wyświetlacza LCD
- Config Lcd = 16 * 2
- Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.4 , Rs = Portd.5
- Cursor Off
- Cls
- Config Adc = Single , Prescaler = Auto , Reference = Avcc
- Dim Wart_ac_0 As Word
- Dim Wart_ac_1 As Word
- Dim Wart_ac_2 As Word
- Dim V As Single
- Dim Wart_nap As String * 3
- Start Adc
- Do
- Wart_ac_0 = Getadc(0)
- Wart_ac_0 = Wart_ac_0
- Ccc = Wart_ac_0
- Call Charakterystyka
- Out_2_c = C
- Out_2 = 182 * Out_2_c
- Out_2 = Out_2 / 182
- Wykres_2 = "add 2,1,"
- Print Wykres_2 ; Out_2;
- Printbin Koniec ; Koniec ; Koniec
- Print "n1.val=" ; Out_2;
- Printbin Koniec ; Koniec ; Koniec
- Wart_ac_1 = Getadc(1)
- Wart_ac_1 = Wart_ac_1
- Ccc = Wart_ac_1
- Call Charakterystyka
- Out_1_c = C
- Out_1 = 182 * Out_1_c
- Out_1 = Out_1 / 182
- Wykres_1 = "add 2,0,"
- Print Wykres_1 ; Out_1;
- Printbin Koniec ; Koniec ; Koniec
- Print "n0.val=" ; Out_1;
- Printbin Koniec ; Koniec ; Koniec
- Cls
- Lcd Wart_ac_1 ; " " ; Wart_ac_0
- Wait 1
- Loop
- End
- Charakterystyka:
- Select Case Ccc
- Case 835 : C = 0
- Case 834 : C = 1
- Case 833 : C = 2
- Case 831 : C = 3
- Case 830 : C = 4
- Case 829 : C = 5
- Case 828 : C = 6
- Case 826 : C = 7
- Case 825 : C = 8
- Case 824 : C = 9
- Case 823 : C = 10
- Case 822 : C = 11
- Case 820 : C = 12
- Case 819 : C = 13
- Case 818 : C = 14
- Case 816 : C = 15
- Case 815 : C = 16
- Case 814 : C = 17
- Case 813 : C = 18
- Case 811 : C = 19
- Case 810 : C = 20
- Case 809 : C = 21
- Case 807 : C = 22
- Case 806 : C = 23
- Case 805 : C = 24
- Case 804 : C = 25
- Case 802 : C = 26
- Case 801 : C = 27
- Case 804 : C = 26
- Case 802 : C = 26
- Case 801 : C = 27
- Case 800 : C = 28
- Case 798 : C = 29
- Case 797 : C = 30
- Case 796 : C = 31
- Case 795 : C = 32
- Case 793 : C = 33
- Case 792 : C = 34
- Case 791 : C = 35
- Case 789 : C = 36
- Case 788 : C = 37
- Case 787 : C = 38
- Case 786 : C = 39
- Case 784 : C = 40
- Case 783 : C = 41
- Case 782 : C = 42
- Case 780 : C = 43
- Case 779 : C = 44
- Case 778 : C = 45
- Case 776 : C = 46
- Case 775 : C = 47
- Case 774 : C = 48
- Case 772 : C = 49
- Case 771 : C = 50
- Case 770 : C = 51
- Case 768 : C = 52
- Case 767 : C = 53
- Case 766 : C = 54
- Case 764 : C = 55
- Case 763 : C = 56
- Case 762 : C = 57
- Case 760 : C = 58
- Case 759 : C = 59
- Case 758 : C = 60
- Case 756 : C = 61
- Case 755 : C = 62
- Case 754 : C = 63
- Case 752 : C = 64
- Case 751 : C = 65
- Case 750 : C = 66
- Case 748 : C = 67
- Case 747 : C = 68
- Case 746 : C = 69
- Case 744 : C = 70
- Case 743 : C = 71
- Case 742 : C = 72
- Case 740 : C = 73
- Case 739 : C = 74
- Case 738 : C = 75
- Case 736 : C = 76
- Case 735 : C = 77
- Case 734 : C = 78
- Case 732 : C = 79
- Case 731 : C = 80
- Case 730 : C = 81
- Case 728 : C = 82
- Case 727 : C = 83
- Case 725 : C = 84
- Case 724 : C = 85
- Case 723 : C = 86
- Case 721 : C = 87
- Case 720 : C = 88
- Case 719 : C = 89
- Case 717 : C = 90
- Case 716 : C = 91
- Case 715 : C = 92
- Case 713 : C = 93
- Case 712 : C = 94
- Case 711 : C = 95
- Case 709 : C = 96
- Case 708 : C = 97
- Case 707 : C = 98
- Case 705 : C = 99
- Case 704 : C = 100
- Case 703 : C = 101
- Case 701 : C = 102
- Case 700 : C = 103
- Case 699 : C = 104
- Case 697 : C = 105
- Case 696 : C = 106
- Case 695 : C = 107
- Case 693 : C = 108
- Case 692 : C = 109
- Case 691 : C = 110
- Case 689 : C = 111
- Case 688 : C = 112
- Case 687 : C = 113
- Case 685 : C = 114
- Case 684 : C = 115
- Case 682 : C = 116
- Case 681 : C = 117
- Case 680 : C = 118
- Case 678 : C = 119
- Case 677 : C = 120
- Case 676 : C = 121
- Case 674 : C = 122
- Case 673 : C = 123
- Case 672 : C = 124
- Case 670 : C = 125
- Case 669 : C = 126
- Case 668 : C = 127
- Case 666 : C = 128
- Case 665 : C = 129
- Case 664 : C = 130
- Case 662 : C = 131
- Case 661 : C = 132
- Case 660 : C = 133
- Case 658 : C = 134
- Case 657 : C = 135
- Case 656 : C = 136
- Case 654 : C = 137
- Case 653 : C = 138
- Case 652 : C = 139
- Case 651 : C = 140
- Case 649 : C = 141
- Case 648 : C = 142
- Case 647 : C = 143
- Case 645 : C = 144
- Case 644 : C = 145
- Case 643 : C = 146
- Case 641 : C = 147
- Case 640 : C = 148
- Case 539 : C = 149
- Case 637 : C = 150
- Case 636 : C = 151
- Case 635 : C = 152
- Case 634 : C = 153
- Case 632 : C = 154
- Case 631 : C = 155
- Case 630 : C = 156
- Case 628 : C = 157
- Case 627 : C = 158
- Case 626 : C = 159
- Case 625 : C = 160
- Case 623 : C = 161
- Case 622 : C = 162
- Case 621 : C = 163
- Case 619 : C = 164
- Case 618 : C = 165
- Case 617 : C = 166
- Case 616 : C = 167
- Case 614 : C = 168
- Case 613 : C = 169
- Case 612 : C = 170
- Case 611 : C = 171
- Case 609 : C = 172
- Case 608 : C = 173
- Case 607 : C = 174
- Case 605 : C = 175
- Case 604 : C = 176
- Case 603 : C = 177
- Case 602 : C = 178
- Case 600 : C = 179
- Case 599 : C = 180
- End Select
- Return