- LiFePO4 Speicher Test         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: timer0 hört auf zu zählen...

  1. #11
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Anzeige

    LiFePo4 Akku selber bauen - Video
    @torsten_G: ogottogott, da ist ja mein Schwager !
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  2. #12
    Benutzer Stammmitglied
    Registriert seit
    25.09.2004
    Alter
    34
    Beiträge
    54
    Hallo.
    So, ich hab jetzt das programm nochmal komplett anders aufgebaut (ohne GOTOs) und es funktioniert auch. Jetzt wollt ich wissen, ob das vom "Stiel" her so OK ist. Wär nett, wenn einer von euch das mal kurz überfliegen könnte.

    Code:
    $regfile = "2313def.dat"
    $crystal = 3686400
    $baud = 9600
    
    Dim Zaehler As Byte
    
    Ddrd.2 = 1                                                  'motor rechts vorwärts
    Ddrd.3 = 1                                                  'motor rechts rückwärts
    Ddrd.4 = 1                                                  'motor links vorwärts
    Ddrd.5 = 1                                                  'motor links rückwärts
    Ddrb.6 = 1                                                  'enable rechts
    Ddrb.7 = 1                                                  'enable links
    
    Ddrb.0 = 0                                                  'taster links vorne
    Ddrb.1 = 0                                                  'taster mitte vorne
    Ddrb.2 = 0                                                  'taster rechts vorne
    Portb.0 = 1
    Portb.1 = 1
    Portb.2 = 1
    
    Mrechtsvor Alias Portd.2
    Mrechtsrueck Alias Portd.3
    Mlinksvor Alias Portd.4
    Mlinksrueck Alias Portd.5
    Enablerechts Alias Portb.6
    Enablelinks Alias Portb.7
    
    Schalterlinks Alias Pinb.0
    Schaltermitte Alias Pinb.1
    Schalterrechts Alias Pinb.2
    
    Config Timer0 = Timer , Prescale = 1024
    Enable Timer0
    Start Timer0
    Enable Interrupts
    On Timer0 Ontimer
    
    Enablelinks = 1
    Enablerechts = 1
    
    Do
       If Schalterlinks = 1 And Schaltermitte = 1 And Schalterrechts = 1 Then
          Print "g"
          Gosub Gerade
       End If
       If Schalterlinks = 0 Then
          Print "L"
          Zaehler = 0
          Gosub Links
       End If
       If Schaltermitte = 0 Then
          Print "M"
          Zaehler = 0
          Gosub Mitte
       End If
       If Schalterrechts = 0 Then
          Print "R"
          Zaehler = 0
          Gosub Rechts
       End If
    Loop
    
    Gerade:
       Mlinksvor = 0
       Mlinksrueck = 0
       Mrechtsvor = 0
       Mrechtsrueck = 0
       Waitms 100
    Do
       Mlinksvor = 1
       Mlinksrueck = 0
       Mrechtsvor = 1
       Mrechtsrueck = 0
       If Schalterlinks = 0 Or Schaltermitte = 0 Or Schalterrechts = 0 Then
          Return
       End If
    Loop
    
    Links:
       Mlinksvor = 0
       Mlinksrueck = 0
       Mrechtsvor = 0
       Mrechtsrueck = 0
       Waitms 100
    Do
       If Schaltermitte = 0 Or Schalterrechts = 0 Then
          Return
       End If
       If Zaehler <= 33 Then
          Mlinksvor = 0
          Mlinksrueck = 1
          Mrechtsvor = 0
          Mrechtsrueck = 1
       Else
          Mlinksvor = 1
          Mlinksrueck = 0
          Mrechtsvor = 0
          Mrechtsrueck = 1
       End If
       If Zaehler = 70 Then
          Return
       End If
    Loop
    
    Mitte:
       Mlinksvor = 0
       Mlinksrueck = 0
       Mrechtsvor = 0
       Mrechtsrueck = 0
       Waitms 100
    Do
       If Schalterlinks = 0 Or Schalterrechts = 0 Then
          Return
       End If
       If Zaehler <= 33 Then
          Mlinksvor = 0
          Mlinksrueck = 1
          Mrechtsvor = 0
          Mrechtsrueck = 1
       Else
          Mlinksvor = 1
          Mlinksrueck = 0
          Mrechtsvor = 0
          Mrechtsrueck = 1
       End If
       If Zaehler = 90 Then
          Return
       End If
    Loop
    
    Rechts:
       Mlinksvor = 0
       Mlinksrueck = 0
       Mrechtsvor = 0
       Mrechtsrueck = 0
       Waitms 100
    Do
       If Schalterlinks = 0 Or Schaltermitte = 0 Then
          Return
       End If
       If Zaehler <= 33 Then
          Mlinksvor = 0
          Mlinksrueck = 1
          Mrechtsvor = 0
          Mrechtsrueck = 1
       Else
          Mlinksvor = 0
          Mlinksrueck = 1
          Mrechtsvor = 1
          Mrechtsrueck = 0
       End If
       If Zaehler = 70 Then
          Return
       End If
    Loop
    
    Ontimer:
       Incr Zaehler
    Return
    mfg Markus

    Edit: Achja, ich hab jetzt keine Relais mehr, sondern nen L293D, deswegen sind die pinbelegungen jetzt etwas anders.

  3. #13
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    25.02.2005
    Beiträge
    175
    Also, ich find´s schon viel besser als vorher!

    Sogar die If-Then-Abfragen mit Tab eingerückt, sieht richtig gut aus!

    Allerdings, Kommentarzeilen (die beginnen mit Hochkomma ') sind nicht nur ein uncooles Feature für Alzheimer-geplagte Programmierer - sie erleichtern auch "Programmfremden" den Durchblick und beschleunigen sogar die Orientierung im eigenen Programm!

    Ich weiß ja, "Kommentarzeilen-Einfüger" steht in einer Reihe mit "Schattenparker" und "Warmduscher", aber ich finde, fehlende Kommentare sind fast noch schlimmer als verstrubbelte Goto´s und Gosub´s, weil hinterher noch nicht einmal mehr die Intentionen des Programmierers nachvollzogen werden können -> 10 Euro in die Kaffeekasse! \/

    Man kann im Übrigen Kommentare ins Bascom-Programm hacken bis zum Abwinken, sie fressen keinen Speicherplatz im Chip und werden somit auch bei der Einschränkung der Bascom-Demo nicht berücksichtigt.

    Du hattest ja gefragt, ob der Stil so ok ist, und das würde halt noch fehlen.

    Hier ein Beispiel aus eigener Feder, stell Dir mal vor, Du müsstest da ohne die Kommentare durchsteigen:

    :
    Code:
    '*****************************************
    ' Program for PWM Speed Controller
    ' based on Stupsi´s RN-Power-Board
    ' Designed for Atmel AVR Mega 8
    ' Bascom Version 1.11.7.9
    ' 18.11.2005 T. Gietenbruch
    '
    ' Hardware Configuration:
    ' -> Setup button input at Pinb.0 (14)
    ' -> RC-Channel PWM input at Pind.2 (4) (INT0)
    ' -> Output FWD direction signal at Portd.6 (12)
    ' -> Output BWD direction signal at Portd.7 (13)
    ' -> LED for FWD direction indication at Portd.4 (6)
    ' -> LED for BWD direction indication at Portd.5 (11)
    ' -> Output PWM_Pulse at Portb.3 (17) (MOSI / OC2)
    ' -> I2C-Bus: SDA at PC4 / SCL at PC5
    ' -> Internal Oscillator 8000000Hz
    '
    ' External TTL logic for circuit protection
    '
    '******************************************
    
    '==========================================
    ' System Configurations
    '==========================================
    
    'Definition for Mega 8
    $regfile "m8def.dat"
    
    $crystal = 8000000
    
    '$lib "i2c_twi.lbx"
    
    '==========================================
    ' Configurations
    '==========================================
    
    'PIN Configurations
    '   Bit  76543210 0->IN / 1->OUT
    Ddrb = &B00001000
    Ddrd = &B11110000
    
    
    'Timer 1 for RC-Channel measurement
    Config Timer1 = Timer , Prescale = 1
    
    'Timer 2 for PWM-signal on OC2
    Config Timer2 = Pwm , Prescale = 64 , Compare = Clear
    
    
    '==========================================
    ' Tag Declarations
    '==========================================
    Dim Error As Byte
    Dim Init As Bit
    Dim N As Byte
    Dim Timer_calc As Long
    Dim Steps_max As Word
    Dim Steps_min As Word
    Dim Upperlimit As Word
    Dim Lowerlimit As Word
    Dim Window As Word
    Dim Start_max As Word
    Dim Start_min As Word
    Dim State As Byte
    
    'EEPROM Tags
    Dim Neutral As Eram Word
    Dim Maximum As Eram Word
    Dim Minimum As Eram Word
    
    Dim State_byte As Eram Byte
    'State_Byte.0 for Direction: 0-> Not inverted, 1-> Inverted
    
    '==========================================
    ' Interrupt Handlings
    '==========================================
    On Timer1 Read_error
    Enable Interrupts
    
    
    '==========================================
    ' Initializing Timers
    '==========================================
    Enable Timer1
    Enable Timer2
    Stop Timer1
    Stop Timer2
    Timer1 = 0
    Timer2 = 0
    
    
    '==========================================
    ' Initializing values
    '==========================================
    Ocr2 = 0
    Portb = &B11111111
    Portd = &B00111111
    
    Window = 250
    Init = 0
    Error = 0
    
    '==========================================
    ' Configure RC-Channel Settings
    '==========================================
    Setup_again:
    
    '1. Wait until switch on B.0 is on
    
    If Pinb.0 = 1 Then Goto Nosetup
    
    Bitwait Pinb.0 , Set
    
    While Pinb.0 <> 0
       Toggle Portd.4
       Toggle Portd.5
       Waitms 500
    Wend
    Portd.4 = 1
    Portd.5 = 1
    
    '2. Read neutral position value
    Timer1 = 0
    Start Timer1
    Bitwait Pind.2 , Reset
    Gosub Read_channel
    Stop Timer1
    Neutral = Timer1
    Timer1 = 0
    'Flash LED for read confirmation
    For N = 0 To 2
       Toggle Portd.4
       Toggle Portd.5
       Waitms 30
       Toggle Portd.4
       Toggle Portd.5
       Waitms 100
    Next
    Portd.4 = 1
    Portd.5 = 1
    
    '4. Wait until switch on B.0 is off and on again
    Bitwait Pinb.0 , Set
    Waitms 100
    While Pinb.0 <> 0
       Toggle Portd.4
       Waitms 500
    Wend
    Portd.4 = 1
    
    '5. Read forward value
    Timer1 = 0
    Start Timer1
    Bitwait Pind.2 , Reset
    Gosub Read_channel
    Stop Timer1
    
    If Timer1 > Neutral Then
       Maximum = Timer1
       State.0 = 0
    Else
       Minimum = Timer1
       State.0 = 1
    End If
    
    Timer1 = 0
    
    'Flash LED for read confirmation
    For N = 0 To 2
       Toggle Portd.4
       Waitms 30
       Toggle Portd.4
       Waitms 100
    Next
    Portd.5 = 1
    
    '6. Wait until switch on B.0 is off and on again
    Bitwait Pinb.0 , Set
    Waitms 100
    While Pinb.0 <> 0
       Toggle Portd.5
       Waitms 500
    Wend
    Portd.5 = 1
    
    '7. Read backward value
    Timer1 = 0
    Start Timer1
    Bitwait Pind.2 , Reset
    Gosub Read_channel
    Stop Timer1
    
    Select Case State.0
    
    Case 0:
    If Timer1 > Neutral Then
       Goto Setup_again
    Else
       Minimum = Timer1
    End If
    
    Case 1:
    If Timer1 < Neutral Then
       Goto Setup_again
    Else
       Maximum = Timer1
    End If
    
    End Select
    
    Timer1 = 0
    'Flash LED for read confirmation
    For N = 0 To 2
       Toggle Portd.5
       Waitms 30
       Toggle Portd.5
       Waitms 100
    Next
    Portd.5 = 1
    
    '8. Write State to eprom byte
    State_byte = State
    
    '8. Wait until switch on B.0 is off
    Bitwait Pinb.0 , Set
    
    'Target without setup
    Nosetup:
    
    If Neutral < 2000 Or Neutral > 20000 Or Maximum < 6000 Or Maximum > 30000 Or Maximum <= Neutral Or Minimum < 2000 Or Minimum > 30000 Or Minimum >= Neutral Then
       Portd.4 = 0
       Portd.5 = 1
       While Pinb.0 = 1
          Toggle Portd.4
          Toggle Portd.5
          Waitms 100
       Wend
       Portd.4 = 1
       Portd.5 = 1
       Goto Setup_again
    End If
    
    'Calculation of RC-Channel compare values
    Start_max = Neutral + Window
    Steps_max = Maximum - Start_max
    Steps_max = Steps_max - 30
    
    Start_min = Neutral - Window
    Steps_min = Start_min - Minimum
    Steps_min = Steps_min - 30
    
    State = State_byte
    
    
    
    '==========================================
    ' Main Program Loop
    '==========================================
    Do
    
    'Disable PWM with Pinb.0=0 (Button pressed)
    If Pinb.0 = 0 Or Init = 0 Then
       Stop Timer2
       Timer2 = 0
       Ocr2 = 0
       Portd.6 = 0
       Portd.7 = 0
    End If
    
    'Enable PWM with Pinb.0=1
    If Pinb.0 = 1 And Init = 1 Then
       Start Timer2
    End If
    
    
    'Calculate PWM-value for maximum direction
    If Timer1 >= Start_max And Pinb.0 = 1 And Init = 1 Then
          Portd.6 = Not State.0
          Portd.7 = State.0
          Timer_calc = Timer1 - Start_max
          Timer_calc = Timer_calc * 255
          Timer_calc = Timer_calc / Steps_max
    End If
    
    'Calculate PWM-value for minimum direction
    If Timer1 <= Start_min And Pinb.0 = 1 And Init = 1 Then
          Portd.6 = State.0
          Portd.7 = Not State.0
          Timer_calc = Start_min - Timer1
          Timer_calc = Timer_calc * 255
          Timer_calc = Timer_calc / Steps_min
    End If
    
    'Set PWM-value to zero in within neutral position window
    If Timer1 > Start_min And Timer1 < Start_max Then
       Portd.6 = 0
       Portd.7 = 0
       Timer_calc = 0
       Init = 1
    End If
    
    'Limit PWM-value to maximum 255
    If Timer_calc > 255 Then Timer_calc = 255
    
    'Write PWM-value to compare register for timer2
    If Init = 1 And Pinb.0 = 1 Then
       Ocr2 = Timer_calc
    Else
       Portd.6 = 0
       Portd.7 = 0
       Ocr2 = 0
    End If
    
    'Switch LED´s on according direction bits
    Portd.4 = Not Portd.6
    Portd.5 = Not Portd.7
    
    'Jump to RC-channel subroutine
    Enable Interrupts
    Timer1 = 0
    Start Timer1
    Bitwait Pind.2 , Reset
    Stop Timer1
    Gosub Read_channel
    Disable Interrupts
    
    Loop
    
    'RC-channel reading
    Read_channel:
    Timer1 = 0
    Start Timer1
    Bitwait Pind.2 , Set
    Timer1 = 0
    Bitwait Pind.2 , Reset
    Stop Timer1
    Error = 0
    Return
    
    'Error handler
    Read_error:
    If Error < 10 Then Error = Error + 1
    While Error = 10
       Stop Timer2
       Timer2 = 0
       Ocr2 = 0
       Init = 0
       Portd.6 = 0
       Portd.7 = 0
       Portd.4 = 0
       Portd.5 = 0
       Gosub Read_channel
    Wend
    
    Return
    Grüße

    Torsten

    @PicNick:
    Dir wär´s bestimmt lieber, wenn das der reiche Erbonkel wäre...

  4. #14
    Benutzer Stammmitglied
    Registriert seit
    14.09.2005
    Alter
    69
    Beiträge
    77
    Ist OK so, So habe ich mich gleich in deinem Programm zurecht gefunden. Bei deiner ersten Version hätte ich mir erst gar nicht die Mühe gemacht den Ablauf zu verstehen.

    Nur wie Torsten schon sagte, Kommentarzeilen einfügen. Auch wenn das anfangs lästig erscheint spart es dir im nachhinein viel ärger und Zeit. Ich habe durch gute Kommentarzeilen schon oft viel Zeit gespart.

    Du kannst auch Kommentare hinter eine Anweisung setzen, zum Beispiel
    Else ' ***** Kommentar ****

    Ich würde jetzt noch deine If umändern. So ist sie noch übersichtlicher. Man sieht gleich, daß wenn die drei Schalter 1 sind "Gerade" ausgeführt wird, andernfalls die andren Ifs abgearbeitet werden. Zudem kannst du die drei andren Abfragen noch einrücken, was das ganze noch übersichtlicher macht.


    Code:
    Do
          If Schalterlinks = 1 And Schaltermitte = 1 And Schalterrechts = 1 Then
                Print "g"
                Gosub Gerade
          Else
                If Schalterlinks = 0 Then
                   Print "L"
                   Zaehler = 0
                   Gosub Links
                End If
                If Schaltermitte = 0 Then
                   Print "M"
                   Zaehler = 0
                   Gosub Mitte
                End If
                If Schalterrechts = 0 Then
                   Print "R"
                   Zaehler = 0
                   Gosub Rechts
                End If
          End If
    Loop
    mfg
    guy

  5. #15
    Benutzer Stammmitglied
    Registriert seit
    25.09.2004
    Alter
    34
    Beiträge
    54
    Hallo.
    So, ich hab jetzt die IF-schleifen noch so umgebaut und kommentare eigefuegt.
    Mfg Markus

    Code:
    $regfile = "2313def.dat"                                    'Atmel AT90S2313
    $crystal = 3686400                                          'Quarz = 3.6864 mhz
    $baud = 9600                                                ' Baudrate = 9600
    
    Dim Zaehler As Byte
    
    Ddrd.2 = 1                                                  'motor rechts vorwärts
    Ddrd.3 = 1                                                  'motor rechts rückwärts
    Ddrd.4 = 1                                                  'motor links vorwärts
    Ddrd.5 = 1                                                  'motor links rückwärts
    Ddrb.6 = 1                                                  'enable rechts
    Ddrb.7 = 1                                                  'enable links
    
    Ddrb.0 = 0                                                  'taster links vorne
    Ddrb.1 = 0                                                  'taster mitte vorne
    Ddrb.2 = 0                                                  'taster rechts vorne
    Portb.0 = 1                                                 'Pullups fuer taster aktivieren
    Portb.1 = 1
    Portb.2 = 1
    
    Mrechtsvor Alias Portd.2                                    'Pins entsprechent der belegung benennen
    Mrechtsrueck Alias Portd.3
    Mlinksvor Alias Portd.4
    Mlinksrueck Alias Portd.5
    Enablerechts Alias Portb.6
    Enablelinks Alias Portb.7
    
    Schalterlinks Alias Pinb.0
    Schaltermitte Alias Pinb.1
    Schalterrechts Alias Pinb.2
    
    Config Timer0 = Timer , Prescale = 1024                     'timer0 wird verwendet, quarz / 1024
    Enable Timer0                                               'timer0 einschalten
    Start Timer0                                                'timer0 starten
    Enable Interrupts                                           'interrupts zulassen
    On Timer0 Ontimer                                           'bei timerueberlauf gehe zu "ontimer"
    
    Enablelinks = 1                                             'Pin fuer linken motor auf 5V
    Enablerechts = 1                                            'Pin fuer rechten motor auf 5V
    
    '***************######  HAUPTSCHLEIFE  ######***************
    
    Do
       If Schalterlinks = 1 And Schaltermitte = 1 And Schalterrechts = 1 Then       'wenn alle schalter frei
          Print "g"                                             'print "g" für fahrtenschreiber
          Gosub Gerade                                          'gehe zu "gerade"
       Else
          If Schalterlinks = 0 Then                             'wenn linker schalter gedrückt
             Print "L"                                          'print "L" für fahrtenschreiber
             Zaehler = 0                                        'setzte Zaehler auf null
             Gosub Links                                        'gehe zu "links"
          End If
          If Schaltermitte = 0 Then                             'wenn mittlerer schalter gedrückt
             Print "M"                                          'print "M" für fahrtenschreiber
             Zaehler = 0                                        'setzte Zaehler auf null
             Gosub Mitte                                        'gehe zu "mitte"
          End If
          If Schalterrechts = 0 Then                            'wenn rechter schalter gedrückt
             Print "R"                                          'print "R" für fahrtenschreiber
             Zaehler = 0                                        'setzte Zaehler auf null
             Gosub Rechts                                       'gehe zu "rechts"
          End If
       End If
    Loop
    
    
    '***************######  GERADE  ######***************
    Gerade:
       Mlinksvor = 0                                            'motoren bremsen
       Mlinksrueck = 0
       Mrechtsvor = 0
       Mrechtsrueck = 0
       Waitms 100                                               'zeit zum bremsen
    Do
       Mlinksvor = 1                                            'unendlich vorwaerts fahren, bis anderer befehl kommt
       Mlinksrueck = 0
       Mrechtsvor = 1
       Mrechtsrueck = 0
       If Schalterlinks = 0 Or Schaltermitte = 0 Or Schalterrechts = 0 Then       'wenn irgendein schalter gedrückt
          Return                                                'dann zurueck zur hauptschleife
       End If
    Loop
    
    
    '***************######  BEI LINKEM SCHALTER  ######***************
    Links:
       Mlinksvor = 0                                            'motoren bremsen
       Mlinksrueck = 0
       Mrechtsvor = 0
       Mrechtsrueck = 0
       Waitms 100                                               'zeit zum bremsen
    Do
       If Schaltermitte = 0 Or Schalterrechts = 0 Then          'wenn mittlerer oder rechter schalter gedrueckt
          Return                                                'dann zurueck zur hauptschleife
       Else
          If Zaehler <= 33 Then                                 'wenn Zaehler <= 33
             Mlinksvor = 0                                      'dann rueckwaerts fahren bis Zaehler > 33
             Mlinksrueck = 1
             Mrechtsvor = 0
             Mrechtsrueck = 1
          Else
             Mlinksvor = 1                                      'danach drehung nach rechts
             Mlinksrueck = 0
             Mrechtsvor = 0
             Mrechtsrueck = 1
          End If
       End If
       If Zaehler = 70 Then                                     'wenn Zaehler = 70
          Return                                                'dann zurueck zur hauptschleife
       End If
    Loop
    
    
    '***************######  BEI MITTLEREM SCHALTER  ######***************
    Mitte:
       Mlinksvor = 0                                            'motoren bremsen
       Mlinksrueck = 0
       Mrechtsvor = 0
       Mrechtsrueck = 0
       Waitms 100                                               'zeit zum bremsen
    Do
       If Schalterlinks = 0 Or Schalterrechts = 0 Then          'wenn linker oder rechter schalter gedrueckt
          Return                                                'dann zurueck zur hauptschleife
       Else
          If Zaehler <= 33 Then                                 'wenn Zaehler <= 33
             Mlinksvor = 0                                      'dann rueckwaerts fahren bis Zaehler > 33
             Mlinksrueck = 1
             Mrechtsvor = 0
             Mrechtsrueck = 1
          Else
             Mlinksvor = 1                                      'danach drehung nach rechts
             Mlinksrueck = 0
             Mrechtsvor = 0
             Mrechtsrueck = 1
          End If
       End If
       If Zaehler = 90 Then                                     'wenn Zaehler = 90
          Return                                                'dann zurueck zur hauptschleife
       End If
    Loop
    
    
    '***************######  BEI RECHTEM SCHALTER  ######***************
    Rechts:
       Mlinksvor = 0                                            'motoren bremsen
       Mlinksrueck = 0
       Mrechtsvor = 0
       Mrechtsrueck = 0
       Waitms 100                                               'zeit zum bremsen
    Do
       If Schalterlinks = 0 Or Schaltermitte = 0 Then           'wenn linker oder mittlerer schalter gedrueckt
          Return                                                'dann zurueck zur hauptschleife
       Else
          If Zaehler <= 33 Then                                 'wenn Zaehler <= 33
             Mlinksvor = 0                                      'dann rueckwaerts fahren bis Zaehler > 33
             Mlinksrueck = 1
             Mrechtsvor = 0
             Mrechtsrueck = 1
          Else
             Mlinksvor = 0                                      'danach drehung nach links
             Mlinksrueck = 1
             Mrechtsvor = 1
             Mrechtsrueck = 0
          End If
       End If
       If Zaehler = 70 Then                                     'wenn Zaehler = 70
          Return                                                'dann zurueck zur hauptschleife
       End If
    Loop
    
    
    'Interrupt-Routine für TIMER0
    Ontimer:                                                    'wenn timer0 ueberlaeuft
       Incr Zaehler                                             'dann Zaehler incrementieren
    Return                                                       'danach zurueck zur hauptschleife

  6. #16
    Benutzer Stammmitglied
    Registriert seit
    14.09.2005
    Alter
    69
    Beiträge
    77
    Gut so, aber du darfst auch nicht über kommentieren.

    Anweisungen die selbsterklärend sind wie
    $crystal = 3686400 'Quarz = 3.6864 mhz
    $baud = 9600 ' Baudrate = 9600
    Enable Timer0 'timer0 einschalten
    Start Timer0 'timer0 starten
    Enable Interrupts 'interrupts zulassen

    Braus du nicht unbedingt zu kommentieren sonst wird das auch unübersichtlich.

    So was kannst du in den Kopf des Programms als Kommentar schreiben.
    Zum Beispiel Wozu das Programm gut ist, Version, Datum, Quart, Controler etc.

Seite 2 von 2 ErsteErste 12

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests