1 | ' ------------------------------------------------------------------------------------
|
2 | ' lese RC5 ein und sende in RC-MM
|
3 | ' ------------------------------------------------------------------------------------
|
4 |
|
5 |
|
6 |
|
7 | $regfile = "m8def.dat" ' specify the used micro
|
8 | $crystal = 12000000 ' used crystal frequency
|
9 | $lib "mcsbyte.lbx" 'use byte library for smaller code
|
10 | $sim
|
11 |
|
12 | Config Portd.4 = Output ' für IR-Sendediode
|
13 | Config Timer2 = Timer , Prescale = 1
|
14 |
|
15 | Rcmm Alias Portd.4
|
16 |
|
17 |
|
18 | ' -- Subroutinen
|
19 | Declare Sub Taktgenerierung(byval Pulsmenge As Byte , Byval Bitform As Byte)
|
20 | Declare Sub Sequenzumsetzung(byval daten As String)
|
21 |
|
22 |
|
23 |
|
24 | Const P_plus = "0202210000000132"
|
25 | Const P_minus = "0202210020000133"
|
26 | Const Mute1 = "0202210020000031"
|
27 | Const Mute2 = "0202210000000031"
|
28 | Const Power1 = "0202210000000030"
|
29 | Const Power2 = "0202210020000030"
|
30 |
|
31 | Const Taste0 = "0202210020000000"
|
32 | Const Taste1 = "0202210000000001"
|
33 | Const Taste2 = "0202210020000002"
|
34 | Const Taste3 = "0202210000000003"
|
35 | Const Taste4 = "0202210000000010"
|
36 | Const Taste5 = "0202210020000011"
|
37 | Const Taste6 = "0202210020000012"
|
38 | Const Taste7 = "0202210000000013"
|
39 | Const Taste8 = "0202210000000020"
|
40 | Const Taste9 = "0202210000000021"
|
41 |
|
42 |
|
43 |
|
44 |
|
45 |
|
46 |
|
47 | Enable Timer2 ' Timer2 für Ereugung 36kHz einschalten
|
48 |
|
49 | Rcmm = 1 ' IR_Diode abschalten
|
50 |
|
51 | ' *************************************************************************************************************
|
52 | Funktionsmodus:
|
53 |
|
54 |
|
55 | Call Sequenzumsetzung( "0202210000000001")
|
56 | Wait 1
|
57 |
|
58 | Goto Funktionsmodus
|
59 |
|
60 |
|
61 |
|
62 |
|
63 |
|
64 |
|
65 |
|
66 | ' *************************************************************************************************************
|
67 |
|
68 | Sub Sequenzumsetzung(byval Daten As String)
|
69 | Dim J As Byte
|
70 | Dim Teil As String * 2
|
71 |
|
72 | 'Header
|
73 | Call Taktgenerierung(15 , 1)
|
74 | Call Taktgenerierung(10 , 0)
|
75 |
|
76 |
|
77 | For J = 1 To Len(daten)
|
78 | Teil = Mid(daten , J , 1)
|
79 | Select Case Teil
|
80 | Case "0" '"00"
|
81 | Call Taktgenerierung(6 , 1)
|
82 | Call Taktgenerierung(10 , 0)
|
83 | Case "1" ' "01"
|
84 | Call Taktgenerierung(6 , 1)
|
85 | Call Taktgenerierung(16 , 0)
|
86 |
|
87 | Case "2" '"10"
|
88 | Call Taktgenerierung(6 , 1)
|
89 | Call Taktgenerierung(22 , 0)
|
90 |
|
91 | Case "3" '"11"
|
92 | Call Taktgenerierung(6 , 1)
|
93 | Call Taktgenerierung(28 , 0)
|
94 |
|
95 | End Select
|
96 |
|
97 | Next
|
98 |
|
99 |
|
100 | Call Taktgenerierung(6 , 1)
|
101 |
|
102 |
|
103 | End Sub
|
104 |
|
105 | ' *************************************************************************************************************
|
106 |
|
107 |
|
108 | Sub Taktgenerierung(byval Pulsmenge As Byte , Byval Bitform As Byte)
|
109 | Dim I As Byte
|
110 | Start Timer2
|
111 |
|
112 | Pulsmenge = Pulsmenge * 2 ' Faktor 2 da auf Flanken getoggelt wird
|
113 | For I = 1 To Pulsmenge
|
114 | ' so lange verharren, bis der Counter den Zielwert hat
|
115 | Tcnt2 = 0
|
116 | While Tcnt2 < 121 '= 36kHz
|
117 | Wend
|
118 |
|
119 | ' Ausgang toggeln
|
120 | If Bitform = 1 Then
|
121 | Toggle Rcmm
|
122 | End If
|
123 | Tcnt2 = 0
|
124 | Next
|
125 |
|
126 | Stop Timer2
|
127 |
|
128 | End Sub
|