Call i podprogram

Pytania, kody i porady dotyczące nie tylko Bascom.
ODPOWIEDZ
grabek_radek
Posty: 12
Rejestracja: 06 gru 2017, 17:10

Call i podprogram

Post autor: grabek_radek » 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
  1. $regfile = "m8adef.dat"
  2. $crystal = 8000000
  3.  
  4.  
  5. '----------------------------
  6. $hwstack = 40
  7. $swstack = 16
  8. $framesize = 32
  9. $baud = 9600
  10.  
  11.  
  12. Const Koniec = &HFF
  13. Dim Wykres_1 As String * 15
  14. Dim Wykres_2 As String * 15
  15. Dim C0 As Integer
  16. Dim C As Integer
  17. Dim Out_1 As Integer
  18. Dim Out_1_c As Integer
  19. Dim Out_2 As Integer
  20. Dim Out_2_c As Integer
  21. Dim Out_3 As Integer
  22. Dim Ccc As Integer
  23.  
  24.  
  25.  
  26.  
  27.  
  28. Declare Sub Charakterystyka
  29.  
  30.  
  31.  
  32. 'konfiguracja wyświetlacza LCD
  33. Config Lcd = 16 * 2
  34. Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.4 , Rs = Portd.5
  35. Cursor Off
  36. Cls
  37.  
  38.  
  39.  Config Adc = Single , Prescaler = Auto , Reference = Avcc
  40.  Dim Wart_ac_0 As Word
  41.  Dim Wart_ac_1 As Word
  42.  Dim Wart_ac_2 As Word
  43.  
  44.  
  45.  Dim V As Single
  46.  Dim Wart_nap As String * 3
  47.  
  48.  Start Adc
  49.  
  50.  
  51.  
  52.  
  53. Do
  54.  
  55.  
  56.  
  57.  
  58. Wart_ac_0 = Getadc(0)
  59. Wart_ac_0 = Wart_ac_0
  60. Ccc = Wart_ac_0
  61. Call Charakterystyka
  62.  
  63. Out_2_c = C
  64.  
  65.  
  66. Out_2 = 182 * Out_2_c
  67. Out_2 = Out_2 / 182
  68.  
  69. Wykres_2 = "add 2,1,"
  70. Print Wykres_2 ; Out_2;
  71. Printbin Koniec ; Koniec ; Koniec
  72.  
  73. Print "n1.val=" ; Out_2;
  74. Printbin Koniec ; Koniec ; Koniec
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81. Wart_ac_1 = Getadc(1)
  82. Wart_ac_1 = Wart_ac_1
  83. Ccc = Wart_ac_1
  84. Call Charakterystyka
  85.  
  86. Out_1_c = C
  87.  
  88.  
  89. Out_1 = 182 * Out_1_c
  90. Out_1 = Out_1 / 182
  91.  
  92. Wykres_1 = "add 2,0,"
  93. Print Wykres_1 ; Out_1;
  94. Printbin Koniec ; Koniec ; Koniec
  95.  
  96. Print "n0.val=" ; Out_1;
  97. Printbin Koniec ; Koniec ; Koniec
  98.  
  99.  
  100.  
  101.  
  102. Cls
  103. Lcd Wart_ac_1 ; "  " ; Wart_ac_0
  104. Wait 1
  105.  
  106.  
  107.  
  108.  
  109. Loop
  110. End
  111.  
  112. Charakterystyka:
  113. Select Case Ccc
  114.  
  115.   Case 835 : C = 0
  116.   Case 834 : C = 1
  117.   Case 833 : C = 2
  118.   Case 831 : C = 3
  119.   Case 830 : C = 4
  120.   Case 829 : C = 5
  121.   Case 828 : C = 6
  122.   Case 826 : C = 7
  123.   Case 825 : C = 8
  124.   Case 824 : C = 9
  125.  
  126.   Case 823 : C = 10
  127.   Case 822 : C = 11
  128.   Case 820 : C = 12
  129.   Case 819 : C = 13
  130.   Case 818 : C = 14
  131.   Case 816 : C = 15
  132.   Case 815 : C = 16
  133.   Case 814 : C = 17
  134.   Case 813 : C = 18
  135.   Case 811 : C = 19
  136.  
  137.   Case 810 : C = 20
  138.   Case 809 : C = 21
  139.   Case 807 : C = 22
  140.   Case 806 : C = 23
  141.   Case 805 : C = 24
  142.   Case 804 : C = 25
  143.   Case 802 : C = 26
  144.   Case 801 : C = 27
  145.  
  146.   Case 804 : C = 26
  147.   Case 802 : C = 26
  148.   Case 801 : C = 27
  149.   Case 800 : C = 28
  150.   Case 798 : C = 29
  151.  
  152.   Case 797 : C = 30
  153.   Case 796 : C = 31
  154.   Case 795 : C = 32
  155.   Case 793 : C = 33
  156.   Case 792 : C = 34
  157.   Case 791 : C = 35
  158.   Case 789 : C = 36
  159.   Case 788 : C = 37
  160.   Case 787 : C = 38
  161.   Case 786 : C = 39
  162.  
  163.   Case 784 : C = 40
  164.   Case 783 : C = 41
  165.   Case 782 : C = 42
  166.   Case 780 : C = 43
  167.   Case 779 : C = 44
  168.   Case 778 : C = 45
  169.   Case 776 : C = 46
  170.   Case 775 : C = 47
  171.   Case 774 : C = 48
  172.   Case 772 : C = 49
  173.   Case 771 : C = 50
  174.  
  175.   Case 770 : C = 51
  176.   Case 768 : C = 52
  177.   Case 767 : C = 53
  178.   Case 766 : C = 54
  179.   Case 764 : C = 55
  180.   Case 763 : C = 56
  181.   Case 762 : C = 57
  182.   Case 760 : C = 58
  183.   Case 759 : C = 59
  184.  
  185.   Case 758 : C = 60
  186.   Case 756 : C = 61
  187.   Case 755 : C = 62
  188.   Case 754 : C = 63
  189.   Case 752 : C = 64
  190.   Case 751 : C = 65
  191.   Case 750 : C = 66
  192.   Case 748 : C = 67
  193.   Case 747 : C = 68
  194.   Case 746 : C = 69
  195.  
  196.   Case 744 : C = 70
  197.   Case 743 : C = 71
  198.   Case 742 : C = 72
  199.   Case 740 : C = 73
  200.   Case 739 : C = 74
  201.   Case 738 : C = 75
  202.   Case 736 : C = 76
  203.   Case 735 : C = 77
  204.   Case 734 : C = 78
  205.   Case 732 : C = 79
  206.   Case 731 : C = 80
  207.  
  208.   Case 730 : C = 81
  209.   Case 728 : C = 82
  210.   Case 727 : C = 83
  211.   Case 725 : C = 84
  212.   Case 724 : C = 85
  213.   Case 723 : C = 86
  214.   Case 721 : C = 87
  215.   Case 720 : C = 88
  216.   Case 719 : C = 89
  217.  
  218.   Case 717 : C = 90
  219.   Case 716 : C = 91
  220.   Case 715 : C = 92
  221.   Case 713 : C = 93
  222.   Case 712 : C = 94
  223.   Case 711 : C = 95
  224.   Case 709 : C = 96
  225.   Case 708 : C = 97
  226.   Case 707 : C = 98
  227.   Case 705 : C = 99
  228.  
  229.   Case 704 : C = 100
  230.   Case 703 : C = 101
  231.   Case 701 : C = 102
  232.   Case 700 : C = 103
  233.   Case 699 : C = 104
  234.   Case 697 : C = 105
  235.   Case 696 : C = 106
  236.   Case 695 : C = 107
  237.   Case 693 : C = 108
  238.   Case 692 : C = 109
  239.  
  240.   Case 691 : C = 110
  241.   Case 689 : C = 111
  242.   Case 688 : C = 112
  243.   Case 687 : C = 113
  244.   Case 685 : C = 114
  245.   Case 684 : C = 115
  246.   Case 682 : C = 116
  247.   Case 681 : C = 117
  248.   Case 680 : C = 118
  249.   Case 678 : C = 119
  250.  
  251.   Case 677 : C = 120
  252.   Case 676 : C = 121
  253.   Case 674 : C = 122
  254.   Case 673 : C = 123
  255.   Case 672 : C = 124
  256.   Case 670 : C = 125
  257.   Case 669 : C = 126
  258.   Case 668 : C = 127
  259.   Case 666 : C = 128
  260.   Case 665 : C = 129
  261.   Case 664 : C = 130
  262.  
  263.   Case 662 : C = 131
  264.   Case 661 : C = 132
  265.   Case 660 : C = 133
  266.   Case 658 : C = 134
  267.   Case 657 : C = 135
  268.   Case 656 : C = 136
  269.   Case 654 : C = 137
  270.   Case 653 : C = 138
  271.   Case 652 : C = 139
  272.   Case 651 : C = 140
  273.  
  274.   Case 649 : C = 141
  275.   Case 648 : C = 142
  276.   Case 647 : C = 143
  277.   Case 645 : C = 144
  278.   Case 644 : C = 145
  279.   Case 643 : C = 146
  280.   Case 641 : C = 147
  281.   Case 640 : C = 148
  282.   Case 539 : C = 149
  283.   Case 637 : C = 150
  284.  
  285.   Case 636 : C = 151
  286.   Case 635 : C = 152
  287.   Case 634 : C = 153
  288.   Case 632 : C = 154
  289.   Case 631 : C = 155
  290.   Case 630 : C = 156
  291.   Case 628 : C = 157
  292.   Case 627 : C = 158
  293.   Case 626 : C = 159
  294.   Case 625 : C = 160
  295.  
  296.   Case 623 : C = 161
  297.   Case 622 : C = 162
  298.   Case 621 : C = 163
  299.   Case 619 : C = 164
  300.   Case 618 : C = 165
  301.   Case 617 : C = 166
  302.   Case 616 : C = 167
  303.   Case 614 : C = 168
  304.   Case 613 : C = 169
  305.   Case 612 : C = 170
  306.  
  307.   Case 611 : C = 171
  308.   Case 609 : C = 172
  309.   Case 608 : C = 173
  310.   Case 607 : C = 174
  311.   Case 605 : C = 175
  312.   Case 604 : C = 176
  313.   Case 603 : C = 177
  314.   Case 602 : C = 178
  315.   Case 600 : C = 179
  316.   Case 599 : C = 180
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323. End Select
  324.  
  325. Return
Awatar użytkownika
niveasoft
Posty: 1313
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Call i podprogram

Post autor: niveasoft » 09 sty 2018, 22:03

Trochę to dziwne. Dlaczego tam masz takie dziury np. wartość 611 i dopiero 609? Co jak z ADC odczyta 610?
Po co przepisujesz te zmienne w miejscu Wart_ac_1 = Wart_ac_1?

W składni Select Case można używać jeszcze dwóch dodatkowych zapisów np. Case 610 to 611 oraz Case Is < 180

Nie potrafię zrozumieć pytania :D
grabek_radek
Posty: 12
Rejestracja: 06 gru 2017, 17:10

Re: Call i podprogram

Post autor: grabek_radek » 10 sty 2018, 10:32

Co jak z ADC odczyta 610?
nic, pozostawi wczesniejsza wartość.
Wart_ac_1 = Wart_ac_1?
pozostałości po testach na to proszę nie patrzeć
główny problem to że w chwili obecnej mieszają wi się co jakiś czas wartości w Out_1 i Out_2 tak wygląda że zmienna C jest źle przekazywana
  1. $regfile = "m8adef.dat"
  2. $crystal = 8000000
  3.  
  4.  
  5. '----------------------------
  6. $hwstack = 40
  7. $swstack = 16
  8. $framesize = 32
  9. $baud = 9600
  10.  
  11.  
  12. Const Koniec = &HFF
  13. Dim Wykres_1 As String * 15
  14. Dim Wykres_2 As String * 15
  15. Dim C0 As Integer
  16. Dim C As Integer
  17. Dim Out_1 As Integer
  18. Dim Out_1_c As Integer
  19. Dim Out_2 As Integer
  20. Dim Out_2_c As Integer
  21.  
  22. Dim Ccc As Integer
  23.  
  24.  
  25.  
  26.  
  27.  
  28. Declare Sub Charakterystyka
  29.  
  30.  
  31.  
  32. 'konfiguracja wyświetlacza LCD
  33. Config Lcd = 16 * 2
  34. Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.4 , Rs = Portd.5
  35. Cursor Off
  36. Cls
  37.  
  38.  
  39.  Config Adc = Single , Prescaler = Auto , Reference = Avcc
  40.  Dim Wart_ac_0 As Word
  41.  Dim Wart_ac_1 As Word
  42.  
  43.  
  44.  
  45.  Start Adc
  46.  
  47.  
  48.  
  49.  
  50. Do
  51.  
  52.  
  53.  
  54.  
  55. Wart_ac_0 = Getadc(0)
  56. Ccc = Wart_ac_0
  57. Call Charakterystyka
  58.  
  59. Out_2_c = C
  60.  
  61.  
  62. Out_2 = 182 * Out_2_c
  63. Out_2 = Out_2 / 182
  64.  
  65. Wykres_2 = "add 2,1,"
  66. Print Wykres_2 ; Out_2;
  67. Printbin Koniec ; Koniec ; Koniec
  68.  
  69. Print "n1.val=" ; Out_2;
  70. Printbin Koniec ; Koniec ; Koniec
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77. Wart_ac_1 = Getadc(1)
  78. Ccc = Wart_ac_1
  79. Call Charakterystyka
  80.  
  81. Out_1_c = C
  82.  
  83.  
  84. Out_1 = 182 * Out_1_c
  85. Out_1 = Out_1 / 182
  86.  
  87. Wykres_1 = "add 2,0,"
  88. Print Wykres_1 ; Out_1;
  89. Printbin Koniec ; Koniec ; Koniec
  90.  
  91. Print "n0.val=" ; Out_1;
  92. Printbin Koniec ; Koniec ; Koniec
  93.  
  94.  
  95.  
  96. Cls
  97. Lcd Wart_ac_1 ; "  " ; Wart_ac_0
  98. Wait 1
  99.  
  100.  
  101. Loop
  102. End
  103.  
  104. Sub Charakterystyka
  105. Select Case Ccc
  106.  
  107.   Case 835 : C = 0
  108.   Case 834 : C = 1
  109.   Case 833 : C = 2
  110.   Case 831 : C = 3
  111.   Case 830 : C = 4
  112.   Case 829 : C = 5
  113.   Case 828 : C = 6
  114.   Case 826 : C = 7
  115.   Case 825 : C = 8
  116.   Case 824 : C = 9
  117.  
  118.   Case 823 : C = 10
  119.   Case 822 : C = 11
  120.   Case 820 : C = 12
  121.   Case 819 : C = 13
  122.   Case 818 : C = 14
  123.   Case 816 : C = 15
  124.   Case 815 : C = 16
  125.   Case 814 : C = 17
  126.   Case 813 : C = 18
  127.   Case 811 : C = 19
  128.  
  129.   Case 810 : C = 20
  130.   Case 809 : C = 21
  131.   Case 807 : C = 22
  132.   Case 806 : C = 23
  133.   Case 805 : C = 24
  134.   Case 804 : C = 25
  135.   Case 802 : C = 26
  136.   Case 801 : C = 27
  137.  
  138.   Case 804 : C = 26
  139.   Case 802 : C = 26
  140.   Case 801 : C = 27
  141.   Case 800 : C = 28
  142.   Case 798 : C = 29
  143.  
  144.   Case 797 : C = 30
  145.   Case 796 : C = 31
  146.   Case 795 : C = 32
  147.   Case 793 : C = 33
  148.   Case 792 : C = 34
  149.   Case 791 : C = 35
  150.   Case 789 : C = 36
  151.   Case 788 : C = 37
  152.   Case 787 : C = 38
  153.   Case 786 : C = 39
  154.  
  155.   Case 784 : C = 40
  156.   Case 783 : C = 41
  157.   Case 782 : C = 42
  158.   Case 780 : C = 43
  159.   Case 779 : C = 44
  160.   Case 778 : C = 45
  161.   Case 776 : C = 46
  162.   Case 775 : C = 47
  163.   Case 774 : C = 48
  164.   Case 772 : C = 49
  165.   Case 771 : C = 50
  166.  
  167.   Case 770 : C = 51
  168.   Case 768 : C = 52
  169.   Case 767 : C = 53
  170.   Case 766 : C = 54
  171.   Case 764 : C = 55
  172.   Case 763 : C = 56
  173.   Case 762 : C = 57
  174.   Case 760 : C = 58
  175.   Case 759 : C = 59
  176.  
  177.   Case 758 : C = 60
  178.   Case 756 : C = 61
  179.   Case 755 : C = 62
  180.   Case 754 : C = 63
  181.   Case 752 : C = 64
  182.   Case 751 : C = 65
  183.   Case 750 : C = 66
  184.   Case 748 : C = 67
  185.   Case 747 : C = 68
  186.   Case 746 : C = 69
  187.  
  188.   Case 744 : C = 70
  189.   Case 743 : C = 71
  190.   Case 742 : C = 72
  191.   Case 740 : C = 73
  192.   Case 739 : C = 74
  193.   Case 738 : C = 75
  194.   Case 736 : C = 76
  195.   Case 735 : C = 77
  196.   Case 734 : C = 78
  197.   Case 732 : C = 79
  198.   Case 731 : C = 80
  199.  
  200.   Case 730 : C = 81
  201.   Case 728 : C = 82
  202.   Case 727 : C = 83
  203.   Case 725 : C = 84
  204.   Case 724 : C = 85
  205.   Case 723 : C = 86
  206.   Case 721 : C = 87
  207.   Case 720 : C = 88
  208.   Case 719 : C = 89
  209.  
  210.   Case 717 : C = 90
  211.   Case 716 : C = 91
  212.   Case 715 : C = 92
  213.   Case 713 : C = 93
  214.   Case 712 : C = 94
  215.   Case 711 : C = 95
  216.   Case 709 : C = 96
  217.   Case 708 : C = 97
  218.   Case 707 : C = 98
  219.   Case 705 : C = 99
  220.  
  221.   Case 704 : C = 100
  222.   Case 703 : C = 101
  223.   Case 701 : C = 102
  224.   Case 700 : C = 103
  225.   Case 699 : C = 104
  226.   Case 697 : C = 105
  227.   Case 696 : C = 106
  228.   Case 695 : C = 107
  229.   Case 693 : C = 108
  230.   Case 692 : C = 109
  231.  
  232.   Case 691 : C = 110
  233.   Case 689 : C = 111
  234.   Case 688 : C = 112
  235.   Case 687 : C = 113
  236.   Case 685 : C = 114
  237.   Case 684 : C = 115
  238.   Case 682 : C = 116
  239.   Case 681 : C = 117
  240.   Case 680 : C = 118
  241.   Case 678 : C = 119
  242.  
  243.   Case 677 : C = 120
  244.   Case 676 : C = 121
  245.   Case 674 : C = 122
  246.   Case 673 : C = 123
  247.   Case 672 : C = 124
  248.   Case 670 : C = 125
  249.   Case 669 : C = 126
  250.   Case 668 : C = 127
  251.   Case 666 : C = 128
  252.   Case 665 : C = 129
  253.   Case 664 : C = 130
  254.  
  255.   Case 662 : C = 131
  256.   Case 661 : C = 132
  257.   Case 660 : C = 133
  258.   Case 658 : C = 134
  259.   Case 657 : C = 135
  260.   Case 656 : C = 136
  261.   Case 654 : C = 137
  262.   Case 653 : C = 138
  263.   Case 652 : C = 139
  264.   Case 651 : C = 140
  265.  
  266.   Case 649 : C = 141
  267.   Case 648 : C = 142
  268.   Case 647 : C = 143
  269.   Case 645 : C = 144
  270.   Case 644 : C = 145
  271.   Case 643 : C = 146
  272.   Case 641 : C = 147
  273.   Case 640 : C = 148
  274.   Case 539 : C = 149
  275.   Case 637 : C = 150
  276.  
  277.   Case 636 : C = 151
  278.   Case 635 : C = 152
  279.   Case 634 : C = 153
  280.   Case 632 : C = 154
  281.   Case 631 : C = 155
  282.   Case 630 : C = 156
  283.   Case 628 : C = 157
  284.   Case 627 : C = 158
  285.   Case 626 : C = 159
  286.   Case 625 : C = 160
  287.  
  288.   Case 623 : C = 161
  289.   Case 622 : C = 162
  290.   Case 621 : C = 163
  291.   Case 619 : C = 164
  292.   Case 618 : C = 165
  293.   Case 617 : C = 166
  294.   Case 616 : C = 167
  295.   Case 614 : C = 168
  296.   Case 613 : C = 169
  297.   Case 612 : C = 170
  298.  
  299.   Case 611 : C = 171
  300.   Case 609 : C = 172
  301.   Case 608 : C = 173
  302.   Case 607 : C = 174
  303.   Case 605 : C = 175
  304.   Case 604 : C = 176
  305.   Case 603 : C = 177
  306.   Case 602 : C = 178
  307.   Case 600 : C = 179
  308.   Case 599 : C = 180
  309.  
  310. End Select
  311.  
  312. End Sub
Awatar użytkownika
niveasoft
Posty: 1313
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Call i podprogram

Post autor: niveasoft » 10 sty 2018, 11:56

Gdyby to był Sub któremu przekazujesz cokolwiek to bym to rozważył. To jest jednak Sub który obrabia zmienną globalną.
Jeśli jesteś pewien że w tym programie coś działa nieprawidłowo to sprawdziłbym dwie rzeczy:
-Może masz za małą wartość dla $framesize. Spróbuj napisać $framesize = 64
-Podobny efekt nadpisywania zmiennych może wystąpić kiedy do tych zmiennych String * 15 wpiszesz coś dłuższego niż 15 znaków.
Nic innego mi do głowy nie przychodzi.
grabek_radek
Posty: 12
Rejestracja: 06 gru 2017, 17:10

Re: Call i podprogram

Post autor: grabek_radek » 10 sty 2018, 13:27

tutaj nie jest problem z
$hwstack = 40
$swstack = 16
$framesize = 32
to tylko obsługuje panel
robie doświadczenie na zwykłym LCD
i wartości z ADC i jeśli przyłoże palec na jedym czujniku to wartość z 1 ADC rośnie druga jest stała a wartości OUT_1 i OUT2 się zmieniają a powinna tylko jedna
  1. Cls
  2. Lcd Wart_ac_1 ; "  " ; Wart_ac_0
  3. Lowerline
  4. Lcd Out_1 ; " " ; Out_2
  5. Wait 1

Cos jest nie tak jak używam podprogramu z 2 miejsc
Awatar użytkownika
niveasoft
Posty: 1313
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Call i podprogram

Post autor: niveasoft » 10 sty 2018, 13:56

Nie podoba mi się to podejście że jak nie znajdzie takiej wartości w Select Case to wartosć pozostanie bez zmian.
Poniżej masz to napisane tak żeby jednak przekazywało wartość (tu dokładniej przekazuje adres zmiennej)

Sprawdź. O cuda ostatnio trudniej i raczej musi się coś zmienić.
  1. $regfile = "m8adef.dat"
  2. $crystal = 8000000
  3.  
  4.  
  5. '----------------------------
  6. $hwstack = 40
  7. $swstack = 16
  8. $framesize = 64
  9. $baud = 9600
  10.  
  11.  
  12. Const Koniec = &HFF
  13. Dim Wykres_1 As String * 15
  14. Dim Wykres_2 As String * 15
  15. Dim C0 As Integer
  16.  
  17. Dim Out_1 As Integer
  18. Dim Out_1_c As Integer
  19. Dim Out_2 As Integer
  20. Dim Out_2_c As Integer
  21.  
  22. Dim Ccc As Integer
  23.  
  24.  
  25. Declare Function Charakterystyka(byref Value As Integer) As Word
  26.  
  27.  
  28.  
  29. 'konfiguracja wyświetlacza LCD
  30. Config Lcd = 16x2
  31. Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.4 , Rs = Portd.5
  32. Cursor Off
  33. Cls
  34.  
  35. Config Adc = Single , Prescaler = Auto , Reference = Avcc
  36. Dim Wart_ac_0 As Word
  37. Dim Wart_ac_1 As Word
  38.  
  39. Do
  40.  
  41.  
  42.  
  43.  
  44.    Wart_ac_0 = Getadc(0)
  45.  
  46.    Out_2_c = Charakterystyka(wart_ac_0)
  47.  
  48.    Out_2 = 182 * Out_2_c
  49.    Out_2 = Out_2 / 182
  50.  
  51.    Wykres_2 = "add 2,1,"
  52.    Print Wykres_2 ; Out_2;
  53.    Printbin Koniec ; Koniec ; Koniec
  54.  
  55.    Print "n1.val=" ; Out_2;
  56.    Printbin Koniec ; Koniec ; Koniec
  57.  
  58.  
  59.  
  60.    Wart_ac_1 = Getadc(1)
  61.  
  62.    Out_1_c = Charakterystyka(wart_ac_1)
  63.  
  64.  
  65.    Out_1 = 182 * Out_1_c
  66.    Out_1 = Out_1 / 182
  67.  
  68.    Wykres_1 = "add 2,0,"
  69.    Print Wykres_1 ; Out_1;
  70.    Printbin Koniec ; Koniec ; Koniec
  71.  
  72.    Print "n0.val=" ; Out_1;
  73.    Printbin Koniec ; Koniec ; Koniec
  74.  
  75.  
  76.  
  77.    Cls
  78.    Lcd Wart_ac_1 ; "  " ; Wart_ac_0
  79.    Wait 1
  80.  
  81.  
  82. Loop
  83. End
  84.  
  85. Function Charakterystyka(byref Value As Integer) As Word
  86.  
  87.   Local C As Integer : C = 0
  88.  
  89.    Select Case Value
  90.  
  91.       Case 835 : C = 0
  92.       Case 834 : C = 1
  93.       Case 833 : C = 2
  94.       Case 831 : C = 3
  95.       Case 830 : C = 4
  96.       Case 829 : C = 5
  97.       Case 828 : C = 6
  98.       Case 826 : C = 7
  99.       Case 825 : C = 8
  100.       Case 824 : C = 9
  101.  
  102.       Case 823 : C = 10
  103.       Case 822 : C = 11
  104.       Case 820 : C = 12
  105.       Case 819 : C = 13
  106.       Case 818 : C = 14
  107.       Case 816 : C = 15
  108.       Case 815 : C = 16
  109.       Case 814 : C = 17
  110.       Case 813 : C = 18
  111.       Case 811 : C = 19
  112.  
  113.       Case 810 : C = 20
  114.       Case 809 : C = 21
  115.       Case 807 : C = 22
  116.       Case 806 : C = 23
  117.       Case 805 : C = 24
  118.       Case 804 : C = 25
  119.       Case 802 : C = 26
  120.       Case 801 : C = 27
  121.  
  122.       Case 804 : C = 26
  123.       Case 802 : C = 26
  124.       Case 801 : C = 27
  125.       Case 800 : C = 28
  126.       Case 798 : C = 29
  127.  
  128.       Case 797 : C = 30
  129.       Case 796 : C = 31
  130.       Case 795 : C = 32
  131.       Case 793 : C = 33
  132.       Case 792 : C = 34
  133.       Case 791 : C = 35
  134.       Case 789 : C = 36
  135.       Case 788 : C = 37
  136.       Case 787 : C = 38
  137.       Case 786 : C = 39
  138.  
  139.       Case 784 : C = 40
  140.       Case 783 : C = 41
  141.       Case 782 : C = 42
  142.       Case 780 : C = 43
  143.       Case 779 : C = 44
  144.       Case 778 : C = 45
  145.       Case 776 : C = 46
  146.       Case 775 : C = 47
  147.       Case 774 : C = 48
  148.       Case 772 : C = 49
  149.       Case 771 : C = 50
  150.  
  151.       Case 770 : C = 51
  152.       Case 768 : C = 52
  153.       Case 767 : C = 53
  154.       Case 766 : C = 54
  155.       Case 764 : C = 55
  156.       Case 763 : C = 56
  157.       Case 762 : C = 57
  158.       Case 760 : C = 58
  159.       Case 759 : C = 59
  160.  
  161.       Case 758 : C = 60
  162.       Case 756 : C = 61
  163.       Case 755 : C = 62
  164.       Case 754 : C = 63
  165.       Case 752 : C = 64
  166.       Case 751 : C = 65
  167.       Case 750 : C = 66
  168.       Case 748 : C = 67
  169.       Case 747 : C = 68
  170.       Case 746 : C = 69
  171.  
  172.       Case 744 : C = 70
  173.       Case 743 : C = 71
  174.       Case 742 : C = 72
  175.       Case 740 : C = 73
  176.       Case 739 : C = 74
  177.       Case 738 : C = 75
  178.       Case 736 : C = 76
  179.       Case 735 : C = 77
  180.       Case 734 : C = 78
  181.       Case 732 : C = 79
  182.       Case 731 : C = 80
  183.  
  184.       Case 730 : C = 81
  185.       Case 728 : C = 82
  186.       Case 727 : C = 83
  187.       Case 725 : C = 84
  188.       Case 724 : C = 85
  189.       Case 723 : C = 86
  190.       Case 721 : C = 87
  191.       Case 720 : C = 88
  192.       Case 719 : C = 89
  193.  
  194.       Case 717 : C = 90
  195.       Case 716 : C = 91
  196.       Case 715 : C = 92
  197.       Case 713 : C = 93
  198.       Case 712 : C = 94
  199.       Case 711 : C = 95
  200.       Case 709 : C = 96
  201.       Case 708 : C = 97
  202.       Case 707 : C = 98
  203.       Case 705 : C = 99
  204.  
  205.       Case 704 : C = 100
  206.       Case 703 : C = 101
  207.       Case 701 : C = 102
  208.       Case 700 : C = 103
  209.       Case 699 : C = 104
  210.       Case 697 : C = 105
  211.       Case 696 : C = 106
  212.       Case 695 : C = 107
  213.       Case 693 : C = 108
  214.       Case 692 : C = 109
  215.  
  216.       Case 691 : C = 110
  217.       Case 689 : C = 111
  218.       Case 688 : C = 112
  219.       Case 687 : C = 113
  220.       Case 685 : C = 114
  221.       Case 684 : C = 115
  222.       Case 682 : C = 116
  223.       Case 681 : C = 117
  224.       Case 680 : C = 118
  225.       Case 678 : C = 119
  226.  
  227.       Case 677 : C = 120
  228.       Case 676 : C = 121
  229.       Case 674 : C = 122
  230.       Case 673 : C = 123
  231.       Case 672 : C = 124
  232.       Case 670 : C = 125
  233.       Case 669 : C = 126
  234.       Case 668 : C = 127
  235.       Case 666 : C = 128
  236.       Case 665 : C = 129
  237.       Case 664 : C = 130
  238.  
  239.       Case 662 : C = 131
  240.       Case 661 : C = 132
  241.       Case 660 : C = 133
  242.       Case 658 : C = 134
  243.       Case 657 : C = 135
  244.       Case 656 : C = 136
  245.       Case 654 : C = 137
  246.       Case 653 : C = 138
  247.       Case 652 : C = 139
  248.       Case 651 : C = 140
  249.  
  250.       Case 649 : C = 141
  251.       Case 648 : C = 142
  252.       Case 647 : C = 143
  253.       Case 645 : C = 144
  254.       Case 644 : C = 145
  255.       Case 643 : C = 146
  256.       Case 641 : C = 147
  257.       Case 640 : C = 148
  258.       Case 539 : C = 149
  259.       Case 637 : C = 150
  260.  
  261.       Case 636 : C = 151
  262.       Case 635 : C = 152
  263.       Case 634 : C = 153
  264.       Case 632 : C = 154
  265.       Case 631 : C = 155
  266.       Case 630 : C = 156
  267.       Case 628 : C = 157
  268.       Case 627 : C = 158
  269.       Case 626 : C = 159
  270.       Case 625 : C = 160
  271.  
  272.       Case 623 : C = 161
  273.       Case 622 : C = 162
  274.       Case 621 : C = 163
  275.       Case 619 : C = 164
  276.       Case 618 : C = 165
  277.       Case 617 : C = 166
  278.       Case 616 : C = 167
  279.       Case 614 : C = 168
  280.       Case 613 : C = 169
  281.       Case 612 : C = 170
  282.  
  283.       Case 611 : C = 171
  284.       Case 609 : C = 172
  285.       Case 608 : C = 173
  286.       Case 607 : C = 174
  287.       Case 605 : C = 175
  288.       Case 604 : C = 176
  289.       Case 603 : C = 177
  290.       Case 602 : C = 178
  291.       Case 600 : C = 179
  292.       Case 599 : C = 180
  293.  
  294.    End Select
  295.  
  296.    Charakterystyka = C
  297.  
  298. End function
grabek_radek
Posty: 12
Rejestracja: 06 gru 2017, 17:10

Re: Call i podprogram

Post autor: grabek_radek » 10 sty 2018, 18:01

ok dzieki działa
faktycznie select case musi byc uzupełniony w brakujace wartosci z ADC bo inaczej wskakuje zero
ODPOWIEDZ