'----------------------------------------------------------------------------------------- 'Titel : TürklingelUhr Softclock 'Name : *.bas 'Autor : Arno Schweißinger 'Datum : 26.03.2007 'MicroContorller : AtMega32 4MHz 'Hardware : Display HD 44780-kompatibel, ' Quarz 32768Hz an Pin TOSC1/2 ' mit RC5-IR Zeitstellen 'Stromversorgung: : 5V für Logik, 'In Planung : '----------------------------------------------------------------------------------------- $regfile = "m16def.dat" '$crystal = 4000000 '$crystal = 3686400 '$baud = 9600 $crystal = 3579545 $lib "mcsbyte.lbx" 'use byte library for smaller code Declare Sub Zeitstellen Declare Sub Getziffer Declare Sub Tuerruf Config Lcd = 40 * 4 Config Lcdpin = Pin , Db4 = Porta.0 , Db5 = Porta.1 , Db6 = Porta.2 , Db7 = Porta.3 , E = Porta.5 , Rs = Porta.4 Config Pinb.1 = Input ' Klingel gedrückt Config Rc5 = Pinb.0 ' IR Fernbedienung Config Date = Dmy , Separator = . ' ANSI-Format Config Clock = Soft ' this is how simple it is Enable Interrupts Const C_tuer = "Tuer " Const C_zeit = "Zeit " Dim Temp As Byte Dim I As Byte Dim Address As Byte , Command As Byte 'reserve space for variables Dim S As String * 1 Dim Datum As String * 8 Dim Zeit As String * 8 Dim Togglebit As Bit Dim Togglealt As Bit Date$ = "28.03.07" 'Time$ = "12:34:56" Togglebit = 1 '------------------------- ' Hauptprogramm '------------------------- 'Begin Cursor Off Cls Lcd "Version " ; Date$ Waitms 200 Gosub Zeitstellen Do Home 'cursor home Lcd C_zeit ; Date$ ; " " ; Time$ 'show the date and time Waitms 200 If Pinb.1 = 1 Then Tuerruf Loop End ' ende Hauptprogramm '------------------------- Sub Tuerruf Locate 2 , 1 Lcd C_tuer ; Date$ ; " " ; Time$ Home Lcd " Türruf " Wait 5 End Sub Sub Zeitstellen Datum = "" Home Lcd "Datum eingeben: TT MM JJ" Locate 2 , 1 For I = 1 To 6 Togglealt = Togglebit While Togglealt = Togglebit Gosub Getziffer Wend Datum = Datum + S If I = 2 Then Datum = Datum + "." If I = 4 Then Datum = Datum + "." Locate 1 , 17 Lcd Datum Next I Date$ = Datum Cls Lcd "Datum: " ; Date$ Waitms 300 Zeit = "" Cls Lcd "Zeit eingeben: SS MM" Locate 2 , 1 For I = 1 To 4 Togglealt = Togglebit While Togglealt = Togglebit Gosub Getziffer Wend Zeit = Zeit + S If I = 2 Then Zeit = Zeit + ":" Locate 1 , 16 Lcd Zeit Next I Zeit = Zeit + ":00" Time$ = Zeit Cls Lcd "Zeit: " ; Time$ Waitms 300 End Sub Sub Getziffer Do Getrc5(address , Command) If Address <> 255 Then If Command > 127 Then ' bx0000000 (Bit 7) Togglebit = 1 ' Togglebit merken Else Togglebit = 0 End If Command = Command And &B00111111 ' clear the toggle bit S = Lookupstr(command , Asciidaten ) End If Temp = Asc(s) If Temp > &H2F Then If Temp < &H3A Then Exit Do End If Loop End Sub Asciidaten: Data "1" , "2" , "9" , "4" , "0" , "p" , "<" , "5" , "8" , "o" Data "v" , "r" , "L" , "b" , "ä" , "k" , "7" , "ü" , "l" , "S" Data "E" , "y" , "#" , "j" , "4" , "i" , "3" , "u" , "m" , "x" Data "O" , "f" , "6" , "2" , "z" , "n" , "L" , "1" , "d" , "g" Data "5" , "t" , "q" , "w" , "e" , "3" , "s" , "a" , "?" , " " Data "?" , "h" , "R" , "c" , "U" , "ö" , "?" , "?" , "?" , "?" Data "?" , "?" , "?" , "R" Data "" , "" , "" , "" , "" , "" , "" , "" , "" , ""