Servus
ich bin gerade dabei eine Uhr mit Wecker und Datum zu programmieren. Das
ganze mache ich mit Bascom.

Nun habe ich hier zwei Probleme und zwar

1. Ich will das Licht mittels eines Distanzsensors einschalten welcher
an dem Analog Eingang Pinc.0 angeschlossen ist. Hierfür verwende ich
einen Sharp GP2D12.
Im bereich Analogwertverarbeitung bin ich nicht so fit deshalb wollte
ich fragen ob in meinem Programm jemand einen Fehler findet warum mein
Licht sich nicht einschaltet.
Bereich des Sensors sind 10-80cm. Ich will ungefähr 20-30cm haben muss
also nicht genau sein.


2. Problem ist wenn ich mit der Uhr durchtappe duch mein Menü und ich
will den Wecker stellen bleiben immer die Sekunden der Uhr rechts neben
dem Wecker stehen. Weiß jemand wie ich das hinbekomme damit die Sekunden
weg sind?

Hier mein Code. Ich weiß dass die Datumsverarbeitung fehlt. Seit bitte
nachsichtig.

Code:
$regfile = "m8def.dat"
$crystal = 1000000
$baud = 19200
$hwstack = 32
$swstack = 10
$framesize = 40

Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 ,
Db7 = Portb.4 , E = Portc.4 , Rs = Portc.5
Config Lcd = 16 * 2

Config Lcdbus = 4
Cursor Off

Config Portb.0 = Output
Config Portb.5 = Output
Config Portb.1 = Output

Config Pind.0 = Input
Config Pind.1 = Input
Config Pind.2 = Input
Config Pind.3 = Input
Config Pinc.0 = Input

Const Adc_multi = 0.00244140625
Config Adc = Single , Prescaler = Auto
Start Adc

Portd.0 = 1
Portd.1 = 1
Portd.2 = 1
Portd.3 = 1


Enable Interrupts
Config Clock = Soft
Config Date = Mdy , Separator = /
Declare Sub Stunde
Declare Sub Minute
Declare Sub Stundew
Declare Sub Minutew
Declare Sub Onoff
Declare Sub Licht
Declare Sub Stellenmenue

Dim Stellenstunde As Byte
Dim Stellenminute As Byte
Dim Konfiguration As Byte
Dim Anaus As Byte
Dim Messung As Word
Messung = Getadc(0)

Cls

Time$ = "00:00:00"
Date$ = "01/01/00"

Do
   If Konfiguration = 1 Then
         Locate 1 , 1
         If Stellenstunde < 10 Then Lcd "0"
            Lcd Stellenstunde ; ":"
         If Stellenminute < 10 Then Lcd "0"
            Lcd Stellenminute
         End If

   Locate 2 , 9
   Lcd Date$

   Debounce Pind.0 , 0 , Stellenmenue , Sub


   If Konfiguration = 0 Or Konfiguration = 2 Or Konfiguration = 3 Then
      Locate 1 , 1
      Lcd Time$
   End If


   If Konfiguration = 1 Then                                'Wecker
stellen
      Debounce Pind.1 , 0 , Stundew , Sub
      Debounce Pind.2 , 0 , Minutew , Sub
   End If


   If Konfiguration = 2 Then                                'Uhr stellen
      Debounce Pind.1 , 0 , Stunde , Sub
      Debounce Pind.2 , 0 , Minute , Sub
   End If

   Debounce Pind.3 , 0 , Onoff , Sub

   If Konfiguration = 0 And Anaus = 0 Then                  'Wecker
an/aus
            Locate 2 , 1
            Lcd "aus   "
          End If

   If Konfiguration = 0 And Anaus = 1 Then
            Locate 2 , 1
            Lcd "an    "
         End If


   If Stellenstunde = _hour And Stellenminute = _min And Anaus = 1 Then
               Portb.1 = 1
               Else
               Portb.1 = 0
   End If

   If Messung < 500 Then
   Portb.5 = 0
   Else
   Portb.5 = 1
   End If


Loop



'Stellenmenü                                                'Menü zum
einstellen Wecker/Uhr/Datum
Stellenmenue:
Incr Konfiguration
   If Konfiguration = 4 Then Konfiguration = 0


   If Konfiguration = 1 Then
      Locate 2 , 1
      Lcd "Wecker"
   End If



   If Konfiguration = 2 Then
      Locate 2 , 1
      Lcd "Uhr   "
   End If


   If Konfiguration = 3 Then
      Locate 2 , 1
      Lcd "Datum "
   End If
Return



'Stunde                                                    'Hier wird
die Stunde der Uhr hochgezählt
Stunde:
   Incr _hour
   If _hour > 23 Then
      _hour = 00
   End If
Return



'Minute                                                     'Hier wird
die Minute der Uhr hochgezählt
Minute:
   Incr _min
   If _min > 59 Then
      _min = 00
   End If

Return



'MinuteW                                                    'Hier wird
die Minute des Weckers hochgezählt
Minutew:
Incr Stellenminute
   If Stellenminute > 59 Then
   Stellenminute = 0
   End If
Return



'Stundew                                                    'Hier wird
die Stunde des Weckers hochgezählt
Stundew:
Incr Stellenstunde
   If Stellenstunde > 23 Then
   Stellenstunde = 0
   End If
Return



'onoff                                                      'Hier wird
der Wecker ein- und ausgeschaltet
Onoff:
Incr Anaus
   If Anaus = 2 Then Anaus = 0
Return