$regfile = "m8def.dat" $crystal = 8000000 $baud = 9600 Open "comd.0:9600,8,n,1" For Output As #1 Open "comd.1:9600,8,n,1" For Input As #2 Config Pinc.5 = Input Portc.5 = 1 Config Pinc.4 = Input Portc.4 = 1 Config Pinc.3 = Input Portc.3 = 1 Config Portb.1 = Output Portb.1 = 1 Config Pind.4 = Input 'TIMER Config Timer2 = Timer , Prescale = 1024 On Timer2 Timerroutine Config Timer1 = Timer , Prescale = 256 On Timer1 Timerroutine1 Enable Interrupts Timer1 = 63000 'COUNTER Config Timer0 = Counter , Edge = Falling On Timer0 On_timer0 'Load Timer0 , Prescale = 1 , Edge = Falling Const Presetvalue = 1 'Eingang Config Pind.4 = Input '=T0 Disable Timer0 Disable Timer2 Stop Timer0 Stop Timer2 Config Adc = Single , Prescaler = Auto , Reference = Avcc Start Adc Config Servos = 1 , Servo1 = Portb.7 , Reload = 10 Enable Timer1 Start Timer1 Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portb.5 , Rs = Portb.4 Config Lcd = 16 * 2 ' replace ? with number (0-7) Cursor Off Waitms 500 'inkl. "Zurück" 'elemente(menu) '" " ; Chr(126) ; "Hauptmen" ; Chr(245) ; Chr(127) ; " " '"" ; Chr(126) ; "Motor" Dim Gedruckt(5) As Byte Dim C_wert As Integer Dim C_stat As Bit Dim T_stat As Bit Dim H_wert As Integer Dim Adc_stat As Bit Dim Anzeige As Byte Dim Servo_wert As Byte Dim Com_stat As Bit Dim Alt_c As Integer Dim Bizahler As Integer Dim Adc3_wert As Integer Dim Alt_adc As Integer Cls Anzeige = 1 Servo(1) = 50 RJMP Start_bild Haupt: Do 'If Timer0 <> Alt_c Then 'Counter ' Alt_c = Timer0 ' Dim Tmp As Integer ' Tmp = 255 * Bizahler ' C_wert = Alt_c + Tmp ' RJMP Darstellen 'End If If Pinc.5 = 0 And Gedruckt(1) = 0 And Pinc.4 = 1 Then Gedruckt(1) = 1 RJMP Hoch End If If Pinc.5 = 1 Then 'Gedrückt lassen vermeiden! Gedruckt(1) = 0 End If If Pinc.4 = 0 And Gedruckt(2) = 0 Then Gedruckt(2) = 1 RJMP Runter End If If Pinc.4 = 1 Then 'Gedrückt lassen vermeiden! Gedruckt(2) = 0 End If If Pinc.3 = 0 And Gedruckt(3) = 0 And Pinc.4 = 1 Then Gedruckt(3) = 1 rjmp ok End If If Pinc.3 = 1 Then Gedruckt(3) = 0 End If If Alt_adc <> Adc3_wert Then Alt_adc = Adc3_wert RJMP darstellen End If Alt_adc = Adc3_wert If Com_stat = 1 Then Dim Re As String * 10 Get #2 , Re End If Waitms 50 Loop End Start_bild: Cls Locate 1 , 1 Lcd Chr(255) ; "Timer-Control" ; Chr(255) Locate 2 , 1 Lcd Chr(255) ; Chr(255) ; Chr(255) ; Chr(255) ; Chr(255) ; "Panel" ; Chr(255) ; Chr(255) ; Chr(255) ; Chr(255) ; Chr(255) ; Waitms 500 RJMP Darstellen Ok: 'OK Select Case Anzeige Case 1 Toggle C_stat If C_stat = 1 Then Enable Timer0 Start Timer0 Else Disable Timer0 Stop Timer0 End If RJMP Darstellen Case 2 Toggle T_stat If T_stat = 1 Then Enable Timer2 Start Timer2 Else Disable Timer2 Stop Timer2 End If RJMP Darstellen Case 3 Toggle Adc_stat RJMP Darstellen Case 4 If Servo(1) <> 50 Then Servo(1) = Servo(1) - 10 End If RJMP Darstellen Case 5 Toggle Com_stat RJMP Darstellen Case 6 Anzeige = 2 End Select rjmp Haupt Hoch: 'HOCH Select Case Anzeige Case 1 Anzeige = Anzeige + 1 RJMP Darstellen Case 2 Anzeige = Anzeige + 1 RJMP Darstellen Case 3 Anzeige = Anzeige + 1 RJMP Darstellen Case 4 Anzeige = Anzeige + 1 RJMP Darstellen Case 5 Anzeige = 1 RJMP Darstellen Case 6 H_wert = H_wert + 1 RJMP Darstellen End Select Runter: 'RUNTER Select Case Anzeige Case 1 Bizahler = 0 Alt_c = 0 C_wert = 0 Timer0 = 0 Case 2 RJMP Einstell Case 4 If Servo(1) <> 150 Then Servo(1) = Servo(1) + 10 End If Rjmp Darstellen Case 6 H_wert = H_wert - 1 RJMP Darstellen End Select Darstellen: 'DARSTELLEN Cls Select Case Anzeige Case 1 Locate 1 , 1 Lcd "Status:" Locate 1 , 10 Lcd "Wert:" Locate 2 , 1 If C_stat = 1 Then Lcd "An" Else Lcd "Aus" End If Locate 2 , 11 Lcd C_wert Case 2 Locate 1 , 1 Lcd "Status:" Locate 1 , 10 Lcd "Hz:" Locate 2 , 1 If T_stat = 1 Then Lcd "An" Else Lcd "Aus" End If Locate 2 , 11 Lcd H_wert Case 3 Locate 1 , 1 Lcd "ADC 3:" Locate 2 , 1 Lcd Adc3_wert Locate 1 , 10 Lcd "Status:" Locate 2 , 11 If Adc_stat = 1 Then Lcd "An" Else Lcd "Aus" End If Case 4 Locate 1 , 1 Lcd "Servo-Steuerung" Locate 2 , 1 Lcd "Wert:" Locate 2 , 8 Lcd Servo(1) Case 5 Locate 1 , 1 Lcd "UART mit Tiny13" Locate 2 , 1 If Com_stat = 1 Then Lcd "An" Else Lcd "Aus" End If Locate 2 , 4 Lcd ":" Locate 2 , 5 Lcd Re Case 6 Locate 1 , 1 Lcd "Hz:" Locate 2 , 1 Lcd H_wert Locate 1 , 8 Dim S As String * 20 Lcd "Zur" ; Chr(245) ; "ck" Locate 2 , 10 Lcd "C" End Select RJMP Haupt Einstell: 'EINSTELL Anzeige = 4 RJMP Darstellen Timerroutine: Timer2 = 1 Toggle Portb.1 'diese Routine wird knapp 4 mal pro Sekunde aufgerufen Return On_timer0: 'Bizahler = Bizahler + 1 Counter wegen Servosteurung deaktiviert! Return Timerroutine1: If Adc_stat = 1 Then Adc3_wert = Getadc(2) Timer1 = 63000 End If If Com_stat = 1 Then RJMP Darstellen End If Return End