BASCOM-Quellcode: Intertechno
- 'Programm zum Ansteuern von Funksteckdosen Intertechno IT 1500 ohne Timer
- 'Bit 0: 275µs high + 275µs low + 275µs high + 1225µs low
- 'Bit 1: 275µs high + 1225µs low + 275µs high + 275µs low
- 'Bit sync: 275µs high + 2675µs low
- 'By Mathias Tenge
- 'Protokoll: Die ersten 26 Bits sind die ID bzw Adresse
- 'dann folgt das Bit für die auswahl aller Steckdosen
- 'dann folgt das Bit für den Zustand der Steckdosen
- 'dann folgen 4 Bits zur Bestimmung, welche angesprochen werden soll
- 'alles aus 00110101001010001010011010100000
- 'alles an 00110101001010001010011010110000
- 'taster1 aus 00110101001010001010011010000000
- 'taster1 an 00110101001010001010011010010000
- 'taster2 aus 00110101001010001010011010000001
- 'taster2 an 00110101001010001010011010010001
- 'taster3 aus 00110101001010001010011010000010
- 'taster3 an 00110101001010001010011010010010
- $regfile = "m328Pdef.dat" 'Controller
- $crystal = 16000000 'Quarztaktung
- $hwstack = 32
- $swstack = 10
- $framesize = 40
- Baud 9600
- Ddrc = &B11111111 'port c 1 Ausgänge / 0 Eingänge
- Ddrd = &B00000000
- Portc = &B00000000
- Portd = &B11111111
- Dim Adressbyte(33) As String * 2 'Byte
- Dim Id As String * 32
- Dim Code As String * 6
- Dim I As Byte
- Dim W As Byte
- Dim W1 As Byte
- Dim Z As Byte
- Dim Taster As Byte
- Dim Taster_alt As Byte
- Ausgang Alias Portc.0
- Declare Sub Schalten1()
- Declare Sub Schalten2()
- Declare Sub Taster1()
- Declare Sub Taster2()
- Declare Sub Taster3()
- Declare Sub Taster_aus()
- Ausgang = 0
- For I = 1 To 26
- Id = "00110101001010001010011010" '"00110101001010001010011010110000"
- Adressbyte(i) = Mid(id , I , 1) '1 Stelle
- Next
- Do
- Debounce Pind.0 , 1 , Taster1 , Sub
- Debounce Pind.1 , 1 , Taster2 , Sub
- Debounce Pind.2 , 1 , Taster3 , Sub
- Debounce Pind.3 , 1 , Taster_aus , Sub
- For W = 1 To 4 '4 taster
- If Taster.w <> Taster_alt.w Then 'hat sich was geändert
- Taster_alt.w= Taster.w
- If Taster_alt.w = 0 Then 'aus
- Select Case W
- Case 1 : Code = "000000"
- Case 2 : Code = "000001"
- Case 3 : Code = "000010"
- Case 4 : Code = "100000"
- End Select
- Else 'ein
- Select Case W
- Case 1 : Code = "010000"
- Case 2 : Code = "010001"
- Case 3 : Code = "010010"
- Case 4 : Code = "110000"
- End Select
- End If
- For I = 1 To 6
- Z = 26 + I
- Adressbyte(z) = Mid(code , I , 1)
- Next
- For W1 = 0 To 30 'den Befehl 30x mal wiederholen
- Toggle Ausgang 'SyncBit
- Waitus 275
- Toggle Ausgang
- Waitus 2675
- For I = 1 To 32
- If Adressbyte(i) = "0" Then 'Senden fuer "0"
- Call Schalten1()
- Call Schalten2()
- End If
- If Adressbyte(i) = "1" Then 'Senden fuer "1"
- Call Schalten2()
- Call Schalten1()
- End If
- Next I
- Next W1
- End If
- Next W
- For I = 1 To 32
- Print Adressbyte(i);
- Next I
- Loop
- End
- Sub Schalten1() 'senden des Protokolls an Portc.0 > 433Mhz-Mudul (AM)
- Toggle Ausgang
- Waitus 257
- Toggle Ausgang
- Waitus 257
- End Sub
- Sub Schalten2() 'senden des Protokolls an Portc.0 > 433Mhz-Mudul (AM)
- Toggle Ausgang
- Waitus 257
- Toggle Ausgang
- Waitus 1225
- End Sub
- Sub Taster1
- Toggle Taster.1
- End Sub
- Sub Taster2
- Toggle Taster.2
- End Sub
- Sub Taster3
- Toggle Taster.3
- End Sub
- Sub Taster_aus
- Toggle Taster.4
- End Sub