Subroutine und Wait in BASCOM geht nicht

OP #802070
Lesenswert?
• ▲
▼
Hallo,


ich habe ein Programm mit Subroutinen, bei denen die Übergabe in die Sub 
nicht funktioniert, es kommt nichts an. Der Aufruf:
Call Sequenzumsetzung( "0202210000000001")
oder
Call Sequenzumsetzung(Taste1)

Die Simulation zeigt - nichts wird übergeben. Was mach ich falsch?

Ebenso der Wait-Befehl: von warten keine Spur, der Wartebefehl wird 
ignoriert.

Kannn jemand helfen?

Hier das Programm in den Grundzügen - einige Teile habe ich zu 
Testzwecken wieder ausgebaut.


Danke
Timo

1
' ------------------------------------------------------------------------------------
2
' lese RC5 ein und sende in RC-MM
3
' ------------------------------------------------------------------------------------
4

5

6

7
$regfile = "m8def.dat"                                      ' specify the used micro
8
$crystal = 12000000                                         ' used crystal frequency
9
$lib "mcsbyte.lbx"                                          'use byte library for smaller code
10
$sim
11

12
Config Portd.4 = Output                                     ' für IR-Sendediode
13
Config Timer2 = Timer , Prescale = 1
14

15
   Rcmm Alias Portd.4
16

17

18
' -- Subroutinen
19
Declare Sub Taktgenerierung(byval Pulsmenge As Byte , Byval Bitform As Byte)
20
Declare Sub Sequenzumsetzung(byval daten As String)
21

22

23

24
Const P_plus = "0202210000000132"
25
Const P_minus = "0202210020000133"
26
Const Mute1 = "0202210020000031"
27
Const Mute2 = "0202210000000031"
28
Const Power1 = "0202210000000030"
29
Const Power2 = "0202210020000030"
30

31
Const Taste0 = "0202210020000000"
32
Const Taste1 = "0202210000000001"
33
Const Taste2 = "0202210020000002"
34
Const Taste3 = "0202210000000003"
35
Const Taste4 = "0202210000000010"
36
Const Taste5 = "0202210020000011"
37
Const Taste6 = "0202210020000012"
38
Const Taste7 = "0202210000000013"
39
Const Taste8 = "0202210000000020"
40
Const Taste9 = "0202210000000021"
41

42

43

44

45

46

47
   Enable Timer2                                            ' Timer2 für Ereugung 36kHz einschalten
48

49
   Rcmm = 1                                                 ' IR_Diode abschalten
50

51
' *************************************************************************************************************
52
Funktionsmodus:
53

54

55
      Call Sequenzumsetzung( "0202210000000001")
56
      Wait 1
57

58
      Goto Funktionsmodus
59

60

61

62

63

64

65

66
' *************************************************************************************************************
67

68
Sub Sequenzumsetzung(byval Daten As String)
69
   Dim J As Byte
70
   Dim Teil As String * 2
71

72
   'Header
73
   Call Taktgenerierung(15 , 1)
74
   Call Taktgenerierung(10 , 0)
75

76

77
   For J = 1 To Len(daten)
78
      Teil = Mid(daten , J , 1)
79
         Select Case Teil
80
            Case "0"                                        '"00"
81
               Call Taktgenerierung(6 , 1)
82
               Call Taktgenerierung(10 , 0)
83
            Case "1"                                        ' "01"
84
               Call Taktgenerierung(6 , 1)
85
               Call Taktgenerierung(16 , 0)
86

87
            Case "2"                                        '"10"
88
               Call Taktgenerierung(6 , 1)
89
               Call Taktgenerierung(22 , 0)
90

91
            Case "3"                                        '"11"
92
               Call Taktgenerierung(6 , 1)
93
               Call Taktgenerierung(28 , 0)
94

95
         End Select
96

97
   Next
98

99

100
      Call Taktgenerierung(6 , 1)
101

102

103
End Sub
104

105
' *************************************************************************************************************
106

107

108
Sub Taktgenerierung(byval Pulsmenge As Byte , Byval Bitform As Byte)
109
    Dim I As Byte
110
   Start Timer2
111

112
   Pulsmenge = Pulsmenge * 2                                ' Faktor 2 da auf Flanken getoggelt wird
113
   For I = 1 To Pulsmenge
114
        ' so lange verharren, bis der Counter den Zielwert hat
115
        Tcnt2 = 0
116
        While Tcnt2 < 121                                   '= 36kHz
117
        Wend
118

119
        ' Ausgang toggeln
120
        If Bitform = 1 Then
121
           Toggle Rcmm
122
        End If
123
        Tcnt2 = 0
124
   Next
125

126
  Stop Timer2
127

128
End Sub

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren