mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Subroutine und Wait in BASCOM geht nicht


Autor: Timo R. (tire)
Datum:

Bewertung
0 lesenswert
nicht 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


' ------------------------------------------------------------------------------------
' lese RC5 ein und sende in RC-MM
' ------------------------------------------------------------------------------------



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

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

   Rcmm Alias Portd.4


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



Const P_plus = "0202210000000132"
Const P_minus = "0202210020000133"
Const Mute1 = "0202210020000031"
Const Mute2 = "0202210000000031"
Const Power1 = "0202210000000030"
Const Power2 = "0202210020000030"

Const Taste0 = "0202210020000000"
Const Taste1 = "0202210000000001"
Const Taste2 = "0202210020000002"
Const Taste3 = "0202210000000003"
Const Taste4 = "0202210000000010"
Const Taste5 = "0202210020000011"
Const Taste6 = "0202210020000012"
Const Taste7 = "0202210000000013"
Const Taste8 = "0202210000000020"
Const Taste9 = "0202210000000021"






   Enable Timer2                                            ' Timer2 für Ereugung 36kHz einschalten

   Rcmm = 1                                                 ' IR_Diode abschalten

' *************************************************************************************************************
Funktionsmodus:


      Call Sequenzumsetzung( "0202210000000001")
      Wait 1

      Goto Funktionsmodus







' *************************************************************************************************************

Sub Sequenzumsetzung(byval Daten As String)
   Dim J As Byte
   Dim Teil As String * 2

   'Header
   Call Taktgenerierung(15 , 1)
   Call Taktgenerierung(10 , 0)


   For J = 1 To Len(daten)
      Teil = Mid(daten , J , 1)
         Select Case Teil
            Case "0"                                        '"00"
               Call Taktgenerierung(6 , 1)
               Call Taktgenerierung(10 , 0)
            Case "1"                                        ' "01"
               Call Taktgenerierung(6 , 1)
               Call Taktgenerierung(16 , 0)

            Case "2"                                        '"10"
               Call Taktgenerierung(6 , 1)
               Call Taktgenerierung(22 , 0)

            Case "3"                                        '"11"
               Call Taktgenerierung(6 , 1)
               Call Taktgenerierung(28 , 0)

         End Select

   Next


      Call Taktgenerierung(6 , 1)


End Sub

' *************************************************************************************************************


Sub Taktgenerierung(byval Pulsmenge As Byte , Byval Bitform As Byte)
    Dim I As Byte
   Start Timer2

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

        ' Ausgang toggeln
        If Bitform = 1 Then
           Toggle Rcmm
        End If
        Tcnt2 = 0
   Next

  Stop Timer2

End Sub


Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.