Code:
'
'$sim
$regfile = "m8def.dat"
$crystal = 1000000
Config Timer1 = Timer , Prescale = 8
Enable Timer1
On Timer1 Timer1_isr
Enable Interrupts
Const Timer1startwert = 49911
Timer1 = Timer1startwert
Config Portc.0 = Output
Config Portc.1 = Output
Config Portc.2 = Output
Config Portc.3 = Output
Config Portc.4 = Output
Config Pinb.0 = Input
Config Pinb.1 = Input
Portb.0 = 1
Portb.1 = 1
Ddrd = &B00000011
Portd = &B11111100
Ddrc = &B00011111
Leds_zaehlen Alias Portc.0
Led_rueckwaerts Alias Portc.1
Leds_wahl Alias Portc.2
Led_weiter Alias Portc.3
Leds_reset Alias Portc.4
Poti Alias Portc.5
Ta_reset Alias Pind.2
Ta_weiter Alias Pind.3
Ta_wahl_gs Alias Pind.4
Ta_wahl_seite_aufschl Alias Pind.5
Ta_wahl_seite_gast Alias Pind.6
Ta_rueckwaerts Alias Pind.7
Ta_baelle_li Alias Pinb.0
Ta_baelle_re Alias Pinb.1
Dim Var_hauptschleife As Byte
Const Const_anz_start = 0
Const Const_anz_wahl = 1
Const Const_anz_00 = 2
Const Const_anz_01 = 3
Const Const_anz_satzende = 4
Const Const_anz_satzpause = 5
Const Const_anz_seitenwechsel = 6
Const Const_anz_spielende_1 = 7
Const Const_anz_spielende_2 = 8
Const Ein = 1
Const Aus = 0
Const Ja = 1
Const Nein = 0
Dim Var_ausgabearray(8) As Byte
Dim Flag_aufschlagseite_gewaehlt As Bit
Dim Flag_gast_gewaehlt As Bit
Dim Flag_ende As Bit
Dim Flag_heim_gewaehlt As Bit
Dim Var_anzahl_der_gewinnsaetze As Byte
Var_anzahl_der_gewinnsaetze = 3
Dim Flag_satzende As Bit
Dim Flag_spielende As Bit
Dim Flag_gh As Bit
Dim Flag_hg As Bit
Dim Flag_gh_start As Bit
Dim Flag_hg_start As Bit
Dim Flag_aufschlag As Bit
Dim Flag_aufschlag_li As Bit
Dim Flag_aufschlag_re As Bit
Dim Var_baelle_li As Byte
Dim Var_baelle_re As Byte
Dim Var_saetze_li As Byte
Dim Var_saetze_li_2 As Byte 'nur für spielendeprüfung
Dim Var_saetze_re As Byte
Dim Var_saetze_re_2 As Byte 'nur für spielendeprüfung
'Dim Var_ziffer_baelle_li As Word 'At Var_baelle_li_ziffer Overlay
'Dim Var_ziffer_baelle_re As Word 'At Var_baelle_re_ziffer Overlay
Dim Var_baelle_li_ziffer_e As Byte 'At Var_ziffer_baelle_li Overlay
Dim Var_baelle_li_ziffer_z As Byte 'At Var_ziffer_baelle_li + 1 Overlay
Dim Var_baelle_re_ziffer_e As Byte 'At Var_ziffer_baelle_re Overlay
Dim Var_baelle_re_ziffer_z As Byte 'At Var_ziffer_baelle_re + 1 Overlay
Dim Var_saetze_li_ziffer As Byte
Dim Var_saetze_re_ziffer As Byte
Dim Var_einer_baelle_li As Byte
Dim Var_zehner_baelle_li As Byte
Dim Var_einer_baelle_re As Byte
Dim Var_zehner_baelle_re As Byte
Dim Var_ziffernwahl As Byte
Dim Var_ziffernwahl_baelle_li As Byte
Dim Var_ziffernwahl_baelle_re As Byte
Dim Var_ziffer As Byte
Dim Var_betaetigt_gh As Bit
Dim Var_betaetigt_aufschlagwahl As Bit
Dim Var_alles_gewaehlt__weiter_moegl As Byte
Dim Var_summe_baelle As Byte
Dim Var_differenz_baelle As Integer
Dim Var_summe_gs As Byte
Dim Flag_seitenwechsel_erfolgt As Bit
Dim Var_seite_im_spiel_vor_sw_ent As Byte
Dim Var_seite_im_spiel_nach_sw_ent As Byte
Dim Flag_aufschlag_2 As Byte
Dim Flag_rw_gezaehlt As Bit
Dim A As Byte
Dim B As Byte
Dim C As Byte
Dim D As Byte
Dim E As Word
Dim F As Byte
Dim G As Byte
Dim H As Byte
Declare Sub Sub_ausgabe_anzeige 'gibt die aktuellen Bytes aus ohne sie zu verändern
Declare Sub Sub_ausgabe_anzeige_00
Declare Sub Sub_ausgabe_anzeige_satzpause
Declare Sub Sub_schleife_anz_start
Declare Sub Sub_schleife_anz_wahl
Declare Sub Sub_schleife_anz_00
Declare Sub Sub_schleife_anz_satzende
Declare Sub Sub_schleife_anz_satzpause
Declare Sub Sub_schleife_anz_spielende
Declare Sub Sub_gewinnsaetze_festlegen
Declare Sub Sub_seitenwahl_1
Declare Sub Sub_seitenwahl_2
Declare Sub Sub_aufschlagwahl_1
Declare Sub Sub_aufschlagwahl_2
Declare Sub Sub_zaehlen_li
Declare Sub Sub_zaehlen_re
Declare Sub Sub_ziffernwahl
Declare Sub Sub_ziffernwahl_baelle_li
Declare Sub Sub_ziffernwahl_baelle_re
Declare Sub Sub_rechnung_aufschlag
Declare Sub Sub_seitenwechsel_satzende
Declare Sub Sub_seitenwechsel_entscheid_1
Declare Sub Sub_seitenwechsel_entscheid_2
Declare Sub Sub_seitenwechsel_entscheid_3
Declare Sub Sub_saetze_hochzaehlen
Declare Sub Sub_saetze_hochzaehlen_2
Config Spi = Hard , Interrupt = On , Data Order = Lsb , Master = Yes , Polarity = High , Phase = 1 , Clockrate = 4
Spiinit
Config Debounce = 50
Hauptschleife:
Do
Select Case Var_hauptschleife
Case Const_anz_start : Goto Schleife_anz_start
Case Const_anz_wahl : Goto Schleife_anz_wahl
Case Const_anz_00 : Goto Schleife_anz_00
Case Const_anz_satzende : Goto Schleife_anz_satzende
Case Const_anz_satzpause : Goto Schleife_anz_satzpause
Case Const_anz_spielende_1 : Goto Schleife_anz_spielende_1
Case Const_anz_spielende_2 : Goto Schleife_anz_spielende_2
End Select
Loop
Schleife_anz_start:
Do
Var_ausgabearray(1) = 0 'ev.LED's Tablau -gfedcba
Var_ausgabearray(2) = 0 'rechts Sätze
Var_ausgabearray(3) = 0 'Bälle rechts Einer
Var_ausgabearray(4) = 0 'Bälle rechts Zehner
Var_ausgabearray(5) = 0 'G/H + Satzende + Aufschlaganzeige
Var_ausgabearray(6) = 0 'Bälle links Einer
Var_ausgabearray(7) = 0 'Bälle links Zehner
Var_ausgabearray(8) = 0 'links Sätze
Leds_zaehlen = 0 'Tableau Bedienung
Led_rueckwaerts = 0 'Tableau Bedienung
Leds_wahl = 0 'Tableau Bedienung
Led_weiter = 1 'Tableau Bedienung
Leds_reset = 0 'Tableau Bedienung
Gosub Sub_ausgabe_anzeige
Debounce Ta_weiter , 0 , Sub_schleife_anz_wahl , Sub
Goto Hauptschleife
Loop
Schleife_anz_wahl:
Do
Var_ausgabearray(1) = 0 'ev.LED's Tablau -gfedcba
Var_ausgabearray(2) = 0 'rechts Sätze
Var_ziffernwahl = Var_anzahl_der_gewinnsaetze
Gosub Sub_ziffernwahl
Var_ausgabearray(3) = Var_ziffer 'Bälle rechts Einer
Var_ausgabearray(4) = 0 'Bälle rechts Zehner
Var_ausgabearray(5) = &B00000000 '0=heim.1=gast/.2=AUF-re/.3=Ende/.4=AUF-li .
Var_ausgabearray(5).0 = Flag_gh 'Flag_gh
Var_ausgabearray(5).1 = Flag_hg 'Flag_hg
Var_ausgabearray(5).2 = Flag_aufschlag_li
Var_ausgabearray(5).3 = Flag_ende
Var_ausgabearray(5).4 = Flag_aufschlag_re
Var_ausgabearray(6) = &B01101101 'Bälle links Einer
Var_ausgabearray(7) = &B00111101 'Bälle links Zehner
Var_ausgabearray(8) = 0 'links Sätze
Leds_zaehlen = 0 'Tableau Bedienung
Led_rueckwaerts = 1 'Tableau Bedienung
Leds_wahl = 1 'Tableau Bedienung
Led_weiter = 0 'Tableau Bedienung
Leds_reset = 0 'Tableau Bedienung
Gosub Sub_ausgabe_anzeige
If Var_alles_gewaehlt__weiter_moegl = 2 Then
Led_weiter = 1
Debounce Ta_weiter , 0 , Sub_schleife_anz_satzpause , Sub
End If
Debounce Ta_wahl_gs , 0 , Sub_gewinnsaetze_festlegen , Sub
If Var_betaetigt_gh = 0 Then
Debounce Ta_wahl_seite_gast , 0 , Sub_seitenwahl_1 , Sub
Else
Debounce Ta_wahl_seite_gast , 0 , Sub_seitenwahl_2 , Sub
End If
If Var_betaetigt_aufschlagwahl = 0 Then
Debounce Ta_wahl_seite_aufschl , 0 , Sub_aufschlagwahl_1 , Sub
Else
Debounce Ta_wahl_seite_aufschl , 0 , Sub_aufschlagwahl_2 , Sub
End If
Goto Hauptschleife
Loop
Schleife_anz_00:
Do
Flag_satzende = 0
Flag_ende = 0
Debounce Ta_baelle_li , 0 , Sub_zaehlen_li , Sub
Debounce Ta_baelle_re , 0 , Sub_zaehlen_re , Sub
Gosub Sub_rechnung_aufschlag
Gosub Sub_ausgabe_anzeige_00
Leds_zaehlen = 1 'Tableau Bedienung
Led_rueckwaerts = 0 'Tableau Bedienung
Leds_wahl = 0 'Tableau Bedienung
Led_weiter = 0 'Tableau Bedienung
Leds_reset = 0 'Tableau Bedienung
Pruefung_sw_vorwaerts:
A = Var_saetze_li + 1
B = Var_saetze_re + 1
If A < Var_anzahl_der_gewinnsaetze Then
Goto Kein_seitenwechsel
Else
If B < Var_anzahl_der_gewinnsaetze Then
Goto Kein_seitenwechsel
Else
If Flag_seitenwechsel_erfolgt = 1 Then
Goto Kein_seitenwechsel
Else
If Var_baelle_li = 5 Then
Zurueck1:
Leds_zaehlen = 0 'Tableau Bedienung
Led_rueckwaerts = 0 'Tableau Bedienung
Leds_wahl = 0 'Tableau Bedienung
Led_weiter = 1 'Tableau Bedienung
Leds_reset = 0 'Tableau Bedienung
Debounce Ta_weiter , 0 , Sub_seitenwechsel_entscheid_1 , Sub
Var_ausgabearray(6) = 0 'Blinken der"5"
Gosub Sub_ausgabe_anzeige '
Waitms 30 '
Var_ziffernwahl = Var_baelle_li '
Gosub Sub_ziffernwahl_baelle_li '
Gosub Sub_ausgabe_anzeige_00 '
Waitms 30 '
Select Case C
Case 1 :
Flag_seitenwechsel_erfolgt = 1
Sub_seitenwechsel_entscheid_2
Case 0 : Goto Zurueck1
End Select
C = 0
Leds_zaehlen = 1 'Tableau Bedienung
Led_rueckwaerts = 0 'Tableau Bedienung
Leds_wahl = 0 'Tableau Bedienung
Led_weiter = 0 'Tableau Bedienung
Leds_reset = 0 'Tableau Bedienung
Else
If Var_baelle_re = 5 Then
Zurueck2:
Leds_zaehlen = 0 'Tableau Bedienung
Led_rueckwaerts = 0 'Tableau Bedienung
Leds_wahl = 0 'Tableau Bedienung
Led_weiter = 1 'Tableau Bedienung
Leds_reset = 0 'Tableau Bedienung
Debounce Ta_weiter , 0 , Sub_seitenwechsel_entscheid_1 , Sub
Var_ausgabearray(4) = 0 'Blinken der"5"
Gosub Sub_ausgabe_anzeige '
Waitms 30 '
Var_ziffernwahl = Var_baelle_re '
Gosub Sub_ziffernwahl_baelle_re '
Gosub Sub_ausgabe_anzeige_00 '
Waitms 30
Select Case C
Case 1 :
Flag_seitenwechsel_erfolgt = 1
Sub_seitenwechsel_entscheid_2
Case 0 : Goto Zurueck2
End Select
C = 0
Leds_zaehlen = 1 'Tableau Bedienung
Led_rueckwaerts = 0 'Tableau Bedienung
Leds_wahl = 0 'Tableau Bedienung
Led_weiter = 0 'Tableau Bedienung
Leds_reset = 0 'Tableau Bedienung
End If
End If
End If
End If
End If
A = 0
B = 0
Kein_seitenwechsel:
'Sub_satzendepruefung
Var_differenz_baelle = Var_baelle_li - Var_baelle_re
If Var_baelle_li > 10 Then
Goto Differenztest
End If
If Var_baelle_re > 10 Then
Goto Differenztest
Else
Goto Kein_satzende
End If
Differenztest:
If Var_differenz_baelle > 1 Then
Flag_satzende = 1
Var_hauptschleife = Const_anz_satzende
Gosub Sub_saetze_hochzaehlen_2
Else
If Var_differenz_baelle < -1 Then
Flag_satzende = 1
Var_hauptschleife = Const_anz_satzende
Gosub Sub_saetze_hochzaehlen_2
Else
Goto Kein_satzende
End If
End If
Kein_satzende:
'spielendepruefung:
If Var_anzahl_der_gewinnsaetze = Var_saetze_li_2 Then
Var_hauptschleife = Const_anz_spielende_1
Flag_spielende = 1
End If
If Var_anzahl_der_gewinnsaetze = Var_saetze_re_2 Then
Var_hauptschleife = Const_anz_spielende_1
Flag_spielende = 1
End If
'Gosub Sub_satzendepruefung
'Gosub Sub_spielendepruefung
Flag_ende = Flag_satzende
Goto Hauptschleife
Loop
Schleife_anz_satzende:
Do
Flag_ende = 1
Flag_aufschlag_li = 0
Flag_aufschlag_re = 0
Leds_zaehlen = 0 'Tableau Bedienung
Led_rueckwaerts = 0 'Tableau Bedienung
Leds_wahl = 0 'Tableau Bedienung
Led_weiter = 1 'Tableau Bedienung
Leds_reset = 0 'Tableau Bedienung
Gosub Sub_ausgabe_anzeige_00
If Flag_spielende = 1 Then
Debounce Ta_weiter , 0 , Sub_schleife_anz_spielende_1 , Sub
Else
Debounce Ta_weiter , 0 , Sub_seitenwechsel_satzende , Sub
End If
Goto Hauptschleife
Loop
Schleife_anz_satzpause:
Do
Gosub Sub_ausgabe_anzeige_satzpause
Leds_zaehlen = 0 'Tableau Bedienung
Led_rueckwaerts = 0 'Tableau Bedienung
Leds_wahl = 0 'Tableau Bedienung
Led_weiter = 1 'Tableau Bedienung
Leds_reset = 0 'Tableau Bedienung
Debounce Ta_weiter , 0 , Sub_schleife_anz_00 , Sub
Goto Hauptschleife
Loop
Schleife_anz_spielende_1:
Do
Flag_ende = 1
Flag_aufschlag_li = 0
Flag_aufschlag_re = 0
Leds_zaehlen = 0 'Tableau Bedienung
Led_rueckwaerts = 0 'Tableau Bedienung
Leds_wahl = 0 'Tableau Bedienung
Led_weiter = 1 'Tableau Bedienung
Leds_reset = 0 'Tableau Bedienung
Gosub Sub_ausgabe_anzeige_00
Debounce Ta_weiter , 0 , Sub_schleife_anz_spielende_2 , Sub
'Goto Hauptschleife
If Var_hauptschleife = Const_anz_spielende_2 Then
Goto Schleife_anz_spielende_2
End If
Loop
Schleife_anz_spielende_2:
Gosub Sub_saetze_hochzaehlen
Do
Gosub Sub_ausgabe_anzeige_satzpause
Leds_zaehlen = 0 'Tableau Bedienung
Led_rueckwaerts = 0 'Tableau Bedienung
Leds_wahl = 0 'Tableau Bedienung
Led_weiter = 0 'Tableau Bedienung
Leds_reset = 1 'Tableau Bedienung
'Debounce Ta_weiter , 0 , Sub_reset , Sub
If Var_hauptschleife = Const_anz_start Then
Goto Hauptschleife
End If
Loop
End
'_____________________________________________________________________________________________________________________
Sub_ausgabe_anzeige:
Spiout Var_ausgabearray(1) , 8
Return
'_______________________________________________________________________________
Sub_ausgabe_anzeige_satzpause:
Var_ziffernwahl = Var_baelle_li
Gosub Sub_ziffernwahl_baelle_li
Var_ziffernwahl = Var_baelle_re
Gosub Sub_ziffernwahl_baelle_re
Var_ziffernwahl = Var_saetze_li
Gosub Sub_ziffernwahl
Var_saetze_li_ziffer = Var_ziffer
Var_ziffernwahl = Var_saetze_re
Gosub Sub_ziffernwahl
Var_saetze_re_ziffer = Var_ziffer
Flag_ende = 1
Var_ausgabearray(1) = 0 'ev.LED's -gfedcba
Var_ausgabearray(2) = Var_saetze_re_ziffer 'rechts Sätze
Var_ausgabearray(3) = 0 'Bälle rechts Einer
Var_ausgabearray(4) = 0 'Bälle rechts Zehner
Var_ausgabearray(5) = 0 '0=heim.1=gast/.2=AUF-re/.3=Ende/.4=AUF-li)
Var_ausgabearray(5).0 = Flag_gh 'Flag_gh
Var_ausgabearray(5).1 = Flag_hg 'Flag_hg
Var_ausgabearray(5).2 = 0
Var_ausgabearray(5).3 = Flag_ende
Var_ausgabearray(5).4 = 0
Var_ausgabearray(6) = 0 'Bälle links Einer
Var_ausgabearray(7) = 0 'Bälle links Zehner
Var_ausgabearray(8) = Var_saetze_li_ziffer 'links Sätze
Spiout Var_ausgabearray(1) , 8
Return
Sub_ausgabe_anzeige_00:
Var_ziffernwahl = Var_baelle_li
Gosub Sub_ziffernwahl_baelle_li
Var_ziffernwahl = Var_baelle_re
Gosub Sub_ziffernwahl_baelle_re
Var_ziffernwahl = Var_saetze_li
Gosub Sub_ziffernwahl
Var_saetze_li_ziffer = Var_ziffer
Var_ziffernwahl = Var_saetze_re
Gosub Sub_ziffernwahl
Var_saetze_re_ziffer = Var_ziffer
Var_ausgabearray(1) = 0 'ev.LED's -gfedcba
Var_ausgabearray(2) = Var_saetze_re_ziffer 'rechts Sätze
Var_ausgabearray(3) = Var_einer_baelle_re 'Bälle rechts Einer
Var_ausgabearray(4) = Var_zehner_baelle_re 'Bälle rechts Zehner
Var_ausgabearray(5) = 0 '0=heim.1=gast/.2=AUF-re/.3=Ende/.4=AUF-li)
Var_ausgabearray(5).0 = Flag_gh 'Flag_gh
Var_ausgabearray(5).1 = Flag_hg 'Flag_hg
Var_ausgabearray(5).2 = Flag_aufschlag_li
Var_ausgabearray(5).3 = Flag_ende
Var_ausgabearray(5).4 = Flag_aufschlag_re
Var_ausgabearray(6) = Var_einer_baelle_li 'Bälle links Einer
Var_ausgabearray(7) = Var_zehner_baelle_li 'Bälle links Zehner
Var_ausgabearray(8) = Var_saetze_li_ziffer 'links Sätze
Spiout Var_ausgabearray(1) , 8
Return
'Subs für den Taster "Weiter"__________________
Sub_schleife_anz_start:
Var_hauptschleife = Const_anz_start
Return
Sub_schleife_anz_wahl:
Var_hauptschleife = Const_anz_wahl
Return
Sub_schleife_anz_00:
Var_hauptschleife = Const_anz_00
Return
Sub_schleife_anz_01:
Var_hauptschleife = Const_anz_01
Return
Sub_schleife_anz_satzende:
Var_hauptschleife = Const_anz_satzende
Return
Sub_schleife_anz_satzpause:
Var_hauptschleife = Const_anz_satzpause
Return
Sub_schleife_anz_seitenwechsel:
Var_hauptschleife = Const_anz_seitenwechsel
Return
Sub_schleife_anz_spielende_1:
Var_hauptschleife = Const_anz_spielende_1
Return
Sub_schleife_anz_spielende_2:
Var_hauptschleife = Const_anz_spielende_2
Return
'Subs "Wahl"______________
Sub_gewinnsaetze_festlegen:
If Ta_rueckwaerts = 0 Then
If Var_anzahl_der_gewinnsaetze > 1 Then
Var_anzahl_der_gewinnsaetze = Var_anzahl_der_gewinnsaetze - 1
End If
End If
If Ta_rueckwaerts = 1 Then
If Var_anzahl_der_gewinnsaetze < 9 Then
Var_anzahl_der_gewinnsaetze = Var_anzahl_der_gewinnsaetze + 1
End If
End If
Return
Sub_seitenwahl_1: 'wenn die Seitenwahl noch nicht betätigt wurde
Var_betaetigt_gh = 1
'Flag_gh_start = 1
Var_summe_gs = Var_saetze_li + Var_saetze_re
Flag_gh = Var_summe_gs.0
Flag_hg = Not Flag_gh
Var_alles_gewaehlt__weiter_moegl = Var_betaetigt_gh + Var_betaetigt_aufschlagwahl
Return
Sub_seitenwahl_2: 'wenn die Seitenwahl schon einmal erfolgt ist
Var_betaetigt_gh = 1
Var_alles_gewaehlt__weiter_moegl = Var_betaetigt_gh + Var_betaetigt_aufschlagwahl
Toggle Flag_gh_start
'Toggle Flag_hg_start
Var_summe_gs = Var_saetze_li + Var_saetze_re
Var_seite_im_spiel_vor_sw_ent = Var_summe_gs + Flag_gh_start
Var_seite_im_spiel_nach_sw_ent = Var_seite_im_spiel_vor_sw_ent + Flag_seitenwechsel_erfolgt
Flag_gh = Var_seite_im_spiel_nach_sw_ent.0
Flag_hg = Not Flag_gh
Return
Sub_aufschlagwahl_1:
Var_betaetigt_aufschlagwahl = 1
Flag_aufschlag = 1
Flag_aufschlag_li = Flag_aufschlag
Var_alles_gewaehlt__weiter_moegl = Var_betaetigt_gh + Var_betaetigt_aufschlagwahl
Return
Sub_aufschlagwahl_2:
Var_betaetigt_aufschlagwahl = 1
Var_alles_gewaehlt__weiter_moegl = Var_betaetigt_gh + Var_betaetigt_aufschlagwahl
Toggle Flag_aufschlag
Flag_aufschlag_li = Flag_aufschlag
Flag_aufschlag_re = Not Flag_aufschlag_li
'Toggle Flag_aufschlag_re
Return
Sub_ziffernwahl:
Select Case Var_ziffernwahl
Case 0 : Var_ziffer = &B00111111
Case 1 : Var_ziffer = &B00000110
Case 2 : Var_ziffer = &B01011011
Case 3 : Var_ziffer = &B01001111
Case 4 : Var_ziffer = &B01100110
Case 5 : Var_ziffer = &B01101101
Case 6 : Var_ziffer = &B01111101
Case 7 : Var_ziffer = &B00000111
Case 8 : Var_ziffer = &B01111111
Case 9 : Var_ziffer = &B01101111
Case Else : Var_ziffer = &B01000000
End Select
Return
Sub_ziffernwahl_baelle_li:
Var_einer_baelle_li = Var_ziffernwahl Mod 10
Var_ziffernwahl = Var_ziffernwahl - Var_einer_baelle_li
Var_ziffernwahl = Var_ziffernwahl / 10
Var_zehner_baelle_li = Var_ziffernwahl Mod 10
Var_ziffernwahl = Var_ziffernwahl - Var_zehner_baelle_li
Var_ziffernwahl = Var_ziffernwahl / 10
If Var_baelle_li < 10 Then
Select Case Var_einer_baelle_li
Case 0 : Var_einer_baelle_li = &B00111111
Case 1 : Var_einer_baelle_li = &B00000110
Case 2 : Var_einer_baelle_li = &B01011011
Case 3 : Var_einer_baelle_li = &B01001111
Case 4 : Var_einer_baelle_li = &B01100110
Case 5 : Var_einer_baelle_li = &B01101101
Case 6 : Var_einer_baelle_li = &B01111101
Case 7 : Var_einer_baelle_li = &B00000111
Case 8 : Var_einer_baelle_li = &B01111111
Case 9 : Var_einer_baelle_li = &B01101111
Case Else : Var_einer_baelle_li = &B01000000
End Select
Var_zehner_baelle_li = 0
Else
Select Case Var_einer_baelle_li
Case 0 : Var_einer_baelle_li = &B00111111
Case 1 : Var_einer_baelle_li = &B00000110
Case 2 : Var_einer_baelle_li = &B01011011
Case 3 : Var_einer_baelle_li = &B01001111
Case 4 : Var_einer_baelle_li = &B01100110
Case 5 : Var_einer_baelle_li = &B01101101
Case 6 : Var_einer_baelle_li = &B01111101
Case 7 : Var_einer_baelle_li = &B00000111
Case 8 : Var_einer_baelle_li = &B01111111
Case 9 : Var_einer_baelle_li = &B01101111
Case Else : Var_einer_baelle_li = &B01000000
End Select
Select Case Var_zehner_baelle_li
Case 0 : Var_zehner_baelle_li = &B00111111
Case 1 : Var_zehner_baelle_li = &B00000110
Case 2 : Var_zehner_baelle_li = &B01011011
Case 3 : Var_zehner_baelle_li = &B01001111
Case 4 : Var_zehner_baelle_li = &B01100110
Case 5 : Var_zehner_baelle_li = &B01101101
Case 6 : Var_zehner_baelle_li = &B01111101
Case 7 : Var_zehner_baelle_li = &B00000111
Case 8 : Var_zehner_baelle_li = &B01111111
Case 9 : Var_zehner_baelle_li = &B01101111
Case Else : Var_zehner_baelle_li = &B01000000
End Select
End If
Return
Sub_ziffernwahl_baelle_re:
Var_einer_baelle_re = Var_ziffernwahl Mod 10
Var_ziffernwahl = Var_ziffernwahl - Var_einer_baelle_re
Var_ziffernwahl = Var_ziffernwahl / 10
Var_zehner_baelle_re = Var_ziffernwahl Mod 10
Var_ziffernwahl = Var_ziffernwahl - Var_zehner_baelle_re
Var_ziffernwahl = Var_ziffernwahl / 10
If Var_baelle_re < 10 Then
Select Case Var_einer_baelle_re
Case 0 : Var_zehner_baelle_re = &B00111111
Case 1 : Var_zehner_baelle_re = &B00000110
Case 2 : Var_zehner_baelle_re = &B01011011
Case 3 : Var_zehner_baelle_re = &B01001111
Case 4 : Var_zehner_baelle_re = &B01100110
Case 5 : Var_zehner_baelle_re = &B01101101
Case 6 : Var_zehner_baelle_re = &B01111101
Case 7 : Var_zehner_baelle_re = &B00000111
Case 8 : Var_zehner_baelle_re = &B01111111
Case 9 : Var_zehner_baelle_re = &B01101111
Case Else : Var_zehner_baelle_re = &B01000000
End Select
Var_einer_baelle_re = 0
Else
Select Case Var_einer_baelle_re
Case 0 : Var_einer_baelle_re = &B00111111
Case 1 : Var_einer_baelle_re = &B00000110
Case 2 : Var_einer_baelle_re = &B01011011
Case 3 : Var_einer_baelle_re = &B01001111
Case 4 : Var_einer_baelle_re = &B01100110
Case 5 : Var_einer_baelle_re = &B01101101
Case 6 : Var_einer_baelle_re = &B01111101
Case 7 : Var_einer_baelle_re = &B00000111
Case 8 : Var_einer_baelle_re = &B01111111
Case 9 : Var_einer_baelle_re = &B01101111
Case Else : Var_einer_baelle_re = &B01000000
End Select
Select Case Var_zehner_baelle_re
Case 0 : Var_zehner_baelle_re = &B00111111
Case 1 : Var_zehner_baelle_re = &B00000110
Case 2 : Var_zehner_baelle_re = &B01011011
Case 3 : Var_zehner_baelle_re = &B01001111
Case 4 : Var_zehner_baelle_re = &B01100110
Case 5 : Var_zehner_baelle_re = &B01101101
Case 6 : Var_zehner_baelle_re = &B01111101
Case 7 : Var_zehner_baelle_re = &B00000111
Case 8 : Var_zehner_baelle_re = &B01111111
Case 9 : Var_zehner_baelle_re = &B01101111
Case Else : Var_zehner_baelle_re = &B01000000
End Select
End If
Return
Sub_zaehlen_li:
If Ta_rueckwaerts = 0 Then
If Var_baelle_li > 0 Then
Decr Var_baelle_li
Flag_rw_gezaehlt = 1
End If
End If
If Ta_rueckwaerts = 1 Then
Incr Var_baelle_li
Flag_rw_gezaehlt = 0
End If
Return
Sub_zaehlen_re:
If Ta_rueckwaerts = 0 Then
If Var_baelle_re > 0 Then
Decr Var_baelle_re
Flag_rw_gezaehlt = 1
End If
End If
If Ta_rueckwaerts = 1 Then
Incr Var_baelle_re
Flag_rw_gezaehlt = 0
End If
Return
Sub_rechnung_aufschlag:
Var_summe_baelle = Var_baelle_li + Var_baelle_re
Flag_aufschlag_2 = Flag_aufschlag + Flag_seitenwechsel_erfolgt
If Var_summe_baelle > 19 Then
Goto Satzverlaengerung
Else
If Flag_aufschlag_2.0 = 0 Then
Flag_aufschlag_li = Var_summe_baelle.1
Flag_aufschlag_re = Not Flag_aufschlag_li
Goto Ende_aufschlagrechnung
Else
If Flag_aufschlag_2.0 = 1 Then
Flag_aufschlag_re = Var_summe_baelle.1
Flag_aufschlag_li = Not Flag_aufschlag_re
Goto Ende_aufschlagrechnung
End If
End If
End If
Satzverlaengerung:
If Flag_aufschlag_2.0 = 0 Then
Flag_aufschlag_li = Var_summe_baelle.0
Flag_aufschlag_re = Not Flag_aufschlag_li
End If
If Flag_aufschlag_2.0 = 1 Then
Flag_aufschlag_re = Var_summe_baelle.0
Flag_aufschlag_li = Not Flag_aufschlag_re
End If
Ende_aufschlagrechnung:
Return
Sub_seitenwechsel_satzende:
'If Var_baelle_li > Var_baelle_re Then
'Incr Var_saetze_li
'End If
'If Var_baelle_re > Var_baelle_li Then
'Incr Var_saetze_re
'End If
'Return
Gosub Sub_saetze_hochzaehlen
A = Var_saetze_li 'Sätze Tauschen
B = Var_saetze_re
Var_saetze_li = B
Var_saetze_re = A
A = 0
B = 0
A = Var_saetze_li_2 'Sätze Tauschen_2
B = Var_saetze_re_2
Var_saetze_li_2 = B
Var_saetze_re_2 = A
A = 0
B = 0
'Toggle Flag_gh 'Heim/Gast tauschen
'Toggle Flag_hg
Var_summe_gs = Var_saetze_li + Var_saetze_re
Var_seite_im_spiel_vor_sw_ent = Var_summe_gs + Flag_gh_start
Var_seite_im_spiel_nach_sw_ent = Var_seite_im_spiel_vor_sw_ent + Flag_seitenwechsel_erfolgt
Flag_gh = Var_seite_im_spiel_nach_sw_ent.0
Flag_hg = Not Flag_gh
Var_baelle_li = 0
Var_baelle_re = 0
Var_hauptschleife = Const_anz_satzpause
Return
Sub_saetze_hochzaehlen:
If Var_baelle_li > Var_baelle_re Then 'Sätze weiterzählen
Incr Var_saetze_li
End If
If Var_baelle_re > Var_baelle_li Then
Incr Var_saetze_re
End If
Return
Sub_saetze_hochzaehlen_2:
If Var_baelle_li > Var_baelle_re Then 'Sätze weiterzählen
Incr Var_saetze_li_2
End If
If Var_baelle_re > Var_baelle_li Then
Incr Var_saetze_re_2
End If
Return
Sub_seitenwechsel_entscheid_1:
C = 1
Return
Sub_seitenwechsel_entscheid_2:
'Flag_seitenwechsel_erfolgt = 1
Var_summe_gs = Var_saetze_li + Var_saetze_re
Var_seite_im_spiel_vor_sw_ent = Var_summe_gs + Flag_gh_start
Var_seite_im_spiel_nach_sw_ent = Var_seite_im_spiel_vor_sw_ent + Flag_seitenwechsel_erfolgt
Flag_gh = Var_seite_im_spiel_nach_sw_ent.0
Flag_hg = Not Flag_gh
A = Var_baelle_li 'Bälle Tauschen
B = Var_baelle_re
Var_baelle_li = B
Var_baelle_re = A
A = 0
B = 0
Return
Sub_seitenwechsel_entscheid_3:
'Flag_seitenwechsel_erfolgt = 1
Var_summe_gs = Var_saetze_li + Var_saetze_re
Var_seite_im_spiel_vor_sw_ent = Var_summe_gs + Flag_gh_start
Var_seite_im_spiel_nach_sw_ent = Var_seite_im_spiel_vor_sw_ent - Flag_seitenwechsel_erfolgt
Flag_gh = Var_seite_im_spiel_nach_sw_ent.0
Flag_hg = Not Flag_gh
A = Var_baelle_li 'Bälle Tauschen
B = Var_baelle_re
Var_baelle_li = B
Var_baelle_re = A
A = 0
B = 0
Return
Timer1_isr:
'nop
Timer1 = Timer1startwert
Toggle Leds_reset
Return
Lesezeichen