Zitat Zitat von sechsrad
Habe meine Glaskugel nicht dabei.
Schon klar 8-
Zitat Zitat von sechsrad
Das Diagramm nimm am besten raus.
Warum?

Zitat Zitat von sechsrad
Wo ist der Code?
Der Code ist sehr, sehr Lang (um die 1000 Zeilen) und sehr unübersichtlich--> war mein erstes großes Projekt--> Deswegen möchte ich das jetzt auch komplett NEU machen

Ich mache mal einen Beispielcode, wie das im moment läuft

Code:
Initalisierung abgeschlossen

Hauptmenue:

Menü anzeigen

Do
Touchscreen auswerten 
If Einstellungstaste gedrückt then
    Goto Einstellungen
End if
Loop

Einstellungen:

Einstellungen anzeigen
Do
Touchscreen auswerten
If Zurueck-Taste gedrückt then
    Goto hauptmenue
End if
If Code aendern-Taste gedrückt then
    Goto Code_aendern
End if
Loop

Code_aendern:

Code ändern anzeigen

Do
Touchscreen auswerten

If Zurück-Taste gedrückt then
    Goto Einstellungen
End if
If Tastenschloss-Taste gedrückt then
   Goto Tastenschloss
End if

Loop

Tastenschloss:

Tastenschloss anzeigen

Do
Touchscreen auswerten

If Zurück-Taste gedrückt then
    Goto Hauptmenue
End if

Loop
Ich glaube, man merkt, wie unübersichtlich das wird.

Deswegen Suche ich nach einer eleganteren Lösung

MfG Bauteiltöter

EDIT: Ich habe gestern schon angefangen, neu zu Programmieren, bis mir die Idee gekommen ist, zu fragen, wie es besser geht. Hier das Progg von gestern abend:

Code:
Declare Sub Readtouch
Declare Function Key(byval Temp As Byte)as Byte

$regfile = "m644def.dat"
$crystal = 8000000
$hwstack = 300
$swstack = 300
$framesize = 300
$baud = 4800


Power_ Alias Portd.2
Config Power_ = Output
Power_ = 0

Taster Alias Pind.7
Config Taster = Input

Standbyled Alias Portd.4
Config Standbyled = Output

Licht Alias Porta.4
Config Licht = Output

Speaker Alias Portd.5
Config Speaker = Output

Buzzer Alias Portd.6
Config Buzzer = Output

Alarmtaster Alias Portd.3
Config Alarmtaster = Input

Config Adc = Single , Prescaler = Auto , Reference = Avcc   'Setting up the a/d convertor

Dim X As Word , Y As Word
Dim Keynum As Byte
Dim Temp As Byte
Dim Ton As Word , Laenge As Word
Dim Uart_input As Byte
Dim Klingelflag As Bit
Dim Werklingel As Byte
Dim Alarman As Bit


Ton = 150
Laenge = 700

On Urxc Uart_interrupt
Enable Urxc


Bitwait Taster , Reset

Wakeup:

Power_ = 0

Config Graphlcd = 240 * 128 , Dataport = Portb , Controlport = Portc , Ce = 2 , Cd = 3 , Wr = 0 , Rd = 1 , Reset = 4 , Fs = 5 , Mode = 6
Cls
Cursor Off








'###############################################################################
Hauptmenue:
'###############################################################################

'(
#   # ###### #   # #####  ##### #     # ##### #    # #   # #####
#   # #    # #   # #    #   #   ##   ## #     ##   # #   # #
#   # #    # #   # #    #   #   # # # # #     # #  # #   # #
##### ###### #   # #####    #   #  #  # ####  # #  # #   # ####
#   # #    # #   # #        #   #     # #     #  # # #   # #
#   # #    # #   # #        #   #     # #     #   ## #   # #
#   # #    # ##### #        #   #     # ##### #    # ##### #####

')





Cls

Showpic 49 , 0 , Hauptmenue_bgf                             'Keine Taste
Showpic 0 , 52 , On_bgf                                     'Taste 13
Showpic 196 , 52 , Off_i_bgf                                'Taste 53
Showpic 71 , 52 , Alarm_bgf                                 'Taste 33
Showpic 49 , 104 , Stby_bgf                                 'Taste 25
Showpic 147 , 104 , Einstell_bgf                            'Taste 45
Showpic 196 , 0 , Schloss_o_bgf                             'Taste 51


Do
Keynum = Key(0)

Select Case Keynum
   Case 13 : Sound Buzzer , Ton , Laenge                    'ON-Taste
               Alarman = 1
               Showpic 0 , 52 , On_i_bgf
               Showpic 196 , 52 , Off_bgf
               Print "5"
   Case 53 : Sound Buzzer , Ton , Laenge                    'OFF-Taste
               Alarman = 0
               Showpic 0 , 52 , On_bgf
               Showpic 196 , 52 , Off_i_bgf
               Print "4"
   Case 33 : Sound Buzzer , Ton , Laenge                    'Alarm-Taste
   Case 25 : Sound Buzzer , Ton , Laenge                    'Standby-Taste
               Goto Standby
   Case 45 : Sound Buzzer , Ton , Laenge                    'Einstellung-Taste
               Goto Einstellungen
   Case 51 : Sound Buzzer , Ton , Laenge                    'Tastenschloss-Taste
End Select

Loop
End

'###############################################################################
Einstellungen:
'###############################################################################

'(
 ######## #  #     #  ###### #####  ####### #     #     #    # #     # ###### ##### #     #
 #        #  ##    #  #        #    #       #     #     #    # ##    # #      #     ##    #
 #        #  # #   #  #        #    #       #     #     #    # # #   # #      #     # #   #
 ####     #  #  #  #  ######   #    ####    #     #     #    # #  #  # ###### ###   #  #  #
 #        #  #   # #       #   #    #       #     #     #    # #   # # #    # #     #   # #
 #        #  #    ##       #   #    #       #     #     #    # #    ## #    # #     #    ##
 #######  #  #     #  ######   #    ####### ##### ##### ###### #     # ###### ##### #     #
')

Cls
Showpic 49 , 0 , Einstellungen_bgf
Showpic 196 , 0 , Schloss_o_bgf                             'Taste 51
Showpic 0 , 0 , Zurueck_bgf                                 'Taste 11
Showpic 0 , 52 , Tastatur_bgf                               'Taste 13
Showpic 98 , 52 , Lautsprecher_bgf                          'Taste 33


Do
Keynum = Key(0)

Select Case Keynum:
   Case 51 : Sound Buzzer , Ton , Laenge                    'Tastenschloss-Taste
   Case 11 : Sound Buzzer , Ton , Laenge                    'Zurück-Taste
               Goto Hauptmenue
   Case 13 : Sound Buzzer , Ton , Laenge                    'Code ändern-Taste
   Case 33 : Sound Buzzer , Ton , Laenge                    'Soundeinstellungs-Taste

End Select
Loop


Cls
Locate 4 , 1

Lcd "Error: SUB ohne Ende"
Locate 8 , 1
Lcd "Program stopp um Schaeden zu vermeiden"
Locate 11 , 1
Lcd "Error in SUB Einstellungen"

End


'###############################################################################
Standby:
'###############################################################################


'(
######### #########  #########  #     #  ######   ######    #       #
#             #      #       #  ##    #  #     #  #     #    #     #
#             #      #       #  # #   #  #      # #      #    #   #
#             #      #       #  # #   #  #      # #      #     # #
#             #      #       #  # #   #  #      # #      #      #
#########     #      #########  #  #  #  #      # #######       #
        #     #      #       #  #  #  #  #      # #      #      #
        #     #      #       #  #  #  #  #      # #      #      #
        #     #      #       #  #   # #  #      # #      #      #
        #     #      #       #  #   # #  #     #  #     #       #
#########     #      #       #  #    ##  ######   ######        #
')

Config Portb = Input
Config Portc = Input
Config Portd.1 = Input
Config Portd.0 = Input

Power_ = 1

Standbyled = 1

Do
If Taster = 0 Then
   Standbyled = 0
   Goto Wakeup
End If
Loop



'###############################################################################
'BGFs
'###############################################################################

Einstellungen_bgf:
$bgf "Einstellungen.bgf"

Tastatur_bgf:
$bgf "Tastatur.bgf"

Lautsprecher_bgf:
$bgf "Lautsprecher.bgf"

Zurueck_bgf:
$bgf "Zurueck.bgf"

Schloss_o_bgf:
$bgf "Schloss_offen.bgf"

Schloss_z_bgf:
$bgf "Schloss_zu.bgf"

Stby_bgf:
$bgf "Stby.bgf"

Einstell_bgf:
$bgf "Einstell.bgf"

Hauptmenue_bgf:
$bgf "Hauptmenue.bgf"

Off_bgf:
$bgf "Off.bgf"

Off_i_bgf:
$bgf "off_i.bgf"

On_bgf:
$bgf "on.bgf"

On_i_bgf:
$bgf "on_i.bgf"


Full_tasten_bgf:
$bgf "Full_tasten_2.bgf"

Einzel_bgf:
$bgf "Einzel_taste.bgf"

Doppel_bgf:
$bgf "Zweier_taste.bgf"

Dreier_bgf:
$bgf "Dreier_taste.bgf"

Alarm_bgf:
$bgf "Alarm.bgf"

'###############################################################################
'Subs
'###############################################################################

'unten--> Oben:
'1: Mama will besuchen
'2: Papa will besuchen
'3: Inga will besuchen
'4: 3x Code Falsch
'5: Alarm ausgelöst
'6: Tür zu
'7: Tür auf
'8: Test_antwort

'Oben--> Unten
'1: Komm
'2: Hau ab
'3: Sirene aus
'4: alarm aus
'5: alarm ein
'7: Sirene an
'8: Test
'9: Code ändern
'A: Klingel gesperrt
'B: Klingel entsperrt
'C: Debugg
Uart_interrupt:
Uart_input = Udr

Select Case Uart_input:
   Case 1 : Werklingel = 1
            Klingelflag = 1
   Case 2 : Werklingel = 2
            Klingelflag = 1
   Case 3 : Werklingel = 3
            Klingelflag = 1
End Select

Return






Function Key(byval Temp As Byte) As Byte
Readtouch
Temp = 0

If X < 1000 And Y < 1000 Then


Select Case X:
   Case 746 To 855 : Temp = 10
   Case 617 To 730 : Temp = 20
   Case 490 To 600 : Temp = 30
   Case 360 To 470 : Temp = 40
   Case 230 To 340 : Temp = 50
End Select

Select Case Y:
   Case 330 To 400 : Temp = Temp + 1
   Case 416 To 480 : Temp = Temp + 2
   Case 500 To 570 : Temp = Temp + 3
   Case 586 To 655 : Temp = Temp + 4
   Case 670 To 740 : Temp = Temp + 5


End Select




Key = Temp
Else

Key = 0

End If



End Function

Sub Readtouch:
Config Pina.0 = Output
Config Pina.2 = Output
Set Porta.0
Reset Porta.2
Ddra.1 = 0                                                  '
Ddra.3 = 0
Waitms 20
X = Getadc(3)

Config Pina.1 = Output
Config Pina.3 = Output
Reset Porta.1
Set Porta.3
Ddra.0 = 0
Ddra.2 = 0
Waitms 20
Y = Getadc(2)


End Sub