o: ActiveSupport::Cache::Entry :@compressedF: @value"Rå"Kå
Designs/HF_TRAMP/FW/V1_6/VFO.HEX
1
:1000000010308A0000280000FF00030E8301A100C9
2
:100010000A08A0008A010408A2007708A300780853
3
:10002000A4007908A5007A08A6007B08A70083131E
4
:1000300083128B1D1D280B1844280B1E21288B189A
5
:1000400047288C308400001C27280C184A288C3044
6
:100050008400801C2D288C184D288B1E31280B19EC
7
:100060005028220884002308F7002408F8002508F7
8
:10007000F9002608FA002708FB0020088A00210E54
9
:100080008300FF0E7F0E09008A110A12CC2A8A1102
10
:100090000A12D5298A110A12FB2A8A110A12A72AE2
11
:1000A0008A110A12EB290A108A100A118207E03419
12
:1000B000673435340034A0343C3437340034C03431
13
:1000C000CF346A34003488347F346B3400342034C5
14
:1000D0001D349A3400347034E0349A34003480345F
15
:1000E0009F34D534003440347434D73400340A108B
16
:1000F0008A100A1182074034523436340034F03406
17
:1001000044346B340034A0345B349A340034E0342B
18
:100110008934D63400340A108A100A118207143444
19
:100120000034E83403340A108A100A11820720349C
20
:100130004034603480340A108A100A118207003477
21
:1001400010340034283400340034003401340034D6
22
:10015000013405342834003403340A108A100A119B
23
:100160008207003404340534063407340834093473
24
:100170000A108A100A11820728340C34013406341C
25
:100180000A108A100A118207503441345234413423
26
:100190004D343A3400340A108A100A11820741346F
27
:1001A000543454344E343A3400340A108A100A114C
28
:1001B000820750344F345734453452343A34203463
29
:1001C000203400340A108A100A1182074B34453457
30
:1001D0005934453452343A342034203400340A102F
31
:1001E0008A100A118207443445344C34413459345E
32
:1001F0003A342034203400340A148A100A11820759
33
:1002000042344134543454344534523459343A34F9
34
:1002100000340A148A100A1182074D344F344434D2
35
:1002200045343A3400340A148A100A1182075234D1
36
:100230004534563445345234533445343A3400341A
37
:100240000A148A100A1182075234493454343A3459
38
:1002500000340A148A100A11820750344F3457347C
39
:100260004534523400340A148A100A118207443487
40
:1002700045344C344134593400340A148A100A117C
41
:10028000820742344134543454344534523459345E
42
:10029000203400340A148A100A1182074D344F3476
43
:1002A0004434453400340A148A100A118207523447
44
:1002B00045345634453452345334453420340034B4
45
:1002C0000A148A100A1182072D3425343234553429
46
:1002D0002034643442342034203400340A148A1028
47
:1002E0000A118207253430343234553457342034DF
48
:1002F00050345434543400340A148A100A118207DA
49
:10030000253434344C34553420346D347334203433
50
:10031000203400340A148A100A1182070D34433441
51
:100320004F344E344E344534433454340A3400345C
52
:100330000A148A100A1182072034463449344C3496
53
:1003400054344534523400340A148A100A11820796
54
:10035000803480340E3401340F341F340F34803431
55
:1003600000340A148A100A1182070E341F341F3415
56
:100370000F34013402340C34803400340A148A10EF
57
:100380000A118207563445345234533449344F34B9
58
:100390004E34203400340A148A100A1182072034A3
59
:1003A000563431342E343634003483163F108312E1
60
:1003B000861CDD2983163F148312441483163F1CC8
61
:1003C000E5298312B40AE72983168312B4038B103C
62
:1003D0008A110A123128D9308100481CF2291F15D0
63
:1003E0004810272A1F19F2291E08D200C41F012A0B
64
:1003F000510BFC295208D600D108031D012A5208CE
65
:10040000D7005108023C031D082A5208D900152ABA
66
:100410005108033C031D0F2A5208D300152A510826
67
:10042000043C031D152A5208D8005108033C031848
68
:100430001B2AD1011C2AD10A510DF700F70DF70D27
69
:10044000F830F7051F08C73977049F004814C41C0B
70
:10045000612A45182F2A0608FF3A8039BF00BF08D5
71
:100460000319342A451C382A451D4E2A451C4E2A9C
72
:100470008615601160088316870083120711C41265
73
:10048000C417D101510DF700F70DF70DF830F7053E
74
:100490001F08C73977049F004814602A86113A085C
75
:1004A000B8003908B700C4166015600883168700C5
76
:1004B000C0018312071D5F2A8316C00A8312C4136A
77
:1004C000C410350F662A0A30B500672AB503C41E6A
78
:1004D000782AB708031D6F2AB8080319742A370849
79
:1004E0000319B803B703782AC4120611431343143F
80
:1004F000B608031DB6030708FF3AF039BD003E08F1
81
:100500003D020319862A3D08BE00A32ABD0803192F
82
:10051000992ABC08031D912A3D08BC006430B6002E
83
:10052000982AB608031D982A4719982A4714C71411
84
:10053000A32AB60803199F2AC714B601A32A471D88
85
:10054000A32AC701BC010B118A110A123128BB0A68
86
:10055000431FB12AC31FAE2A8616AF2A861206127F
87
:10056000C32A441FB82ABB1FB82A86120612C32A00
88
:10057000C31FBD2A06168612C32A0612441DC22AAC
89
:100580008616C32A8612C31FC72AC313C82AC317D5
90
:100590008C108A110A1231280608FF3AC000451C47
91
:1005A000D42AC030C005D62A8030C005C418F72A26
92
:1005B0004518DF2AD93081000B11C414EF2AC51F5A
93
:1005C000E62A401B4516C01BC516EA2AC01B451665
94
:1005D000401BC516C518EF2AB53090000C14431BFC
95
:1005E000F72AC0080319F72A4317061543140B10FE
96
:1005F0008A110A123128C51D082BC51145115D0845
97
:100600008F005C088E00D93081000B11C414582B68
98
:10061000C51C252B451F0E2BC5120F2B4512060896
99
:10062000FF3AC039BF00C51F1A2B3F1B4516BF1B21
100
:10063000C5161E2BBF1B45163F1BC516461C252B7A
101
:10064000BF08031D252B4512C512431B2E2B451A2F
102
:100650002B2BC51E2E2B431706154314451E462B68
103
:10066000C51E402B451F3A2B45135D088F005C08C3
104
:100670008E003F2B45175F088F005E088E00452BCC
105
:1006800045135D088F005C088E00512BC51E4E2B54
106
:1006900045175F088F005E088E00512BC510900132
107
:1006A000582BC514C5154515D93081000B11C4143C
108
:1006B0000C108A110A1231287E30840000080319B8
109
:1006C000722B0130F800BF30F7006400F70B652B88
110
:1006D000F80B632B4A30F700F70B6C2B000064001B
111
:1006E000800B612B003408080F398316A600250EF5
112
:1006F000F700F030F7057708F039260483128800F8
113
:100700008815831688116400831288118316881156
114
:10071000831200348316A308031D922B8312081141
115
:10072000942B83168312081583160811A40E24082F
116
:10073000A500831273238316A40E2408A500831238
117
:10074000732364000C30F700F70BA42B00000000AB
118
:1007500000341430FE005C230F30831688058312AA
119
:1007600008118316081183128811831688118312C9
120
:10077000E6016608023C031CC72B0230FE005C2326
121
:1007800003308316A50083127323E60AB92B640095
122
:100790000C30F700F70BCA2B000000000230831664
123
:1007A000A5008312732364000C30F700F70BD62BDF
124
:1007B00000000000E6016608023C031CEF2B6608FF
125
:1007C000B820E7008316A301831267088316A400EC
126
:1007D00083128A230230FE005C23E60ADB2B8A1197
127
:1007E0000A160E2801308316A300831267088316A9
128
:1007F000A40083128A230034081010308316B0003E
129
:10080000AF1F062C83120816082C831683120812B9
130
:100810008812881603108316AE0DAF0DB00B002C96
131
:1008200083120814003401307E028316A1002008D0
132
:10083000023C031D1D2C4030A10721088038A20076
133
:10084000A3012208A40083128A2300347D080C3AF5
134
:100850000319342C063A03193E2C073A0319462C87
135
:10086000053A03194D2C542C8316A3010130A40022
136
:1008700083128A230230FE005C23622C0130FE00CA
137
:1008800002308316A00083121324622C0130FE0074
138
:100890008316A00083121324622C8316A301103048
139
:1008A000A40083128A23622C7D081F3C031C5A2C4F
140
:1008B0000730FD0501308316A3007D08A4008312D4
141
:1008C0008A23622C00342030F8001F08C7397804CE
142
:1008D0009F001430FE005C231F151F196D2C1E088D
143
:1008E000E039D8000430C2004208C203003A0319BC
144
:1008F000802C42089320F800580203199E2C742C77
145
:10090000E60166088A21E60AF700FD002624093080
146
:100910006602031D812CE60166089821E60AF700AD
147
:10092000FD00262407306602031D8C2C0230E600F1
148
:10093000FA30FE005C23E60B982C6C2C8A110A1608
149
:100940004929E901E8016808093C031CB32C68083F
150
:1009500003178D0083168C130C1483120C080313D9
151
:10096000E907E80AA32CE909E90A0A3003178D0010
152
:100970000313690803178C0083168C130C1583125C
153
:1009800003130B08F7008B138316031755308D00E4
154
:10099000AA308D008C148C18CB2C0C117708831284
155
:1009A00003138B040034E701E60166080A3C031CCC
156
:1009B000E52C660803178D0083168C130C14831224
157
:1009C0000C080313E707E60AD52CE7080319A92D3D
158
:1009D000E6016608033C031C0A2D6608E60AE800E7
159
:1009E00003178D008C0183168C130C1583120313CF
160
:1009F0000B08F7008B138316031755308D00AA30B0
161
:100A00008D008C148C18022D0C117708831203139F
162
:100A10008B04E92C083003178D0014308C008316EA
163
:100A20008C130C15831203130B08F7008B1383161A
164
:100A3000031755308D00AA308D008C148C181E2D94
165
:100A40000C117708831203138B04043003178D00F5
166
:100A500006308C0083168C130C15831203130B08BD
167
:100A6000F7008B138316031755308D00AA308D00C5
168
:100A70008C148C18392D0C117708831203138B04F6
169
:100A8000053003178D008C0183168C130C1583120F
170
:100A900003130B08F7008B138316031755308D00D3
171
:100AA000AA308D008C148C18532D0C1177088312EA
172
:100AB00003138B04063003178D008C0183168C13EF
173
:100AC0000C15831203130B08F7008B1383160317FF
174
:100AD00055308D00AA308D008C148C186D2D0C11A2
175
:100AE0007708831203138B04073003178D008C01E2
176
:100AF00083168C130C15831203130B08F7008B134A
177
:100B00008316031755308D00AA308D008C148C1875
178
:100B1000872D0C117708831203138B0409300317F8
179
:100B20008D008C0183168C130C15831203130B0894
180
:100B3000F7008B138316031755308D00AA308D00F4
181
:100B40008C148C18A12D0C117708831203138B04BD
182
:100B5000A1248A110A164C29F701F8017008031024
183
:100B60007118F707F70CF80CF118F707F70CF80CE9
184
:100B70007119F707F70CF80CF119F707F70CF80CD7
185
:100B8000711AF707F70CF80CF11AF707F70CF80CC5
186
:100B9000711BF707F70CF80CF11BF707F70CF80CB3
187
:100BA0000034F701F801F901FA018316A801A9013F
188
:100BB000AA01AB0127082604250424040319102EDA
189
:100BC0002030AC000310A00DA10DA20DA30DA80DA7
190
:100BD000A90DAA0DAB0D27082B02031DF92D260820
191
:100BE0002A02031DF92D25082902031DF92D2408C9
192
:100BF0002802031C0A2E2408A8022508031C250F1E
193
:100C0000A9022608031C260FAA022708031C270F87
194
:100C1000AB020314F70DF80DF90DFA0DAC0BE22D34
195
:100C20000000A8308400831200341030F700FA016D
196
:100C3000F601FD0CFC0C031C252E83162008FA0778
197
:100C40000318F60A2108F6078312F60CFA0CF90CC1
198
:100C5000F80CF70B192E00348316091083120910B3
199
:100C600060106008831687008312071083168910AE
200
:100C7000831289140A30FE005C23831689140A301B
201
:100C8000FE0083125C23831609148312601460082B
202
:100C90008316870083120034B630F700FA01F90199
203
:100CA000F80183162008210422042304031D5A2E70
204
:100CB000F701672E0310F81B662EA00DA10DA20DE3
205
:100CC000A30DFA0DF90DF80DF70B5A2EF813831238
206
:100CD0008A110A166B2B831624080319DC2EAC002C
207
:100CE00028080319DC2EAC0703187D2E7F30AC02D8
208
:100CF000031CDC2E0319DC2E812E8130AC07031877
209
:100D0000DC2E2C08F700F801F901FA012508B000E3
210
:100D1000B0172608AF002708AE001830AC00AD01B0
211
:100D20002E1CAA2E2B08FA07031C9C2EF90A031D61
212
:100D30009C2EF80A0319AD172A08F907031CA32EE5
213
:100D4000F80A0319AD172908A600A6172608F80700
214
:100D50000318AD17AD0DF80CF90CFA0CB00CAF0C74
215
:100D6000AE0C0310AC0B8F2E0130F7070318DC2EEE
216
:100D7000F81BC12EB00DFA0DF90DF80DF70303198C
217
:100D8000DC2EB01FD22EFA0A031DD22EF90A031D43
218
:100D9000D22EF80A031DD22EF80CF90CFA0CF70A21
219
:100DA0000319DC2E2508AD002908AD06AD1FDA2E8B
220
:100DB000F817E02EF813E02EF701F801F901FA0117
221
:100DC000000083128A110A16882B83162408B63C69
222
:100DD000A400FA012508A800A5170310A50CA60C6D
223
:100DE000A70CFA0CF90CF80CF70CA40BED2EA81FAD
224
:100DF000042FF709F809F909FA09F70A0319F80A9B
225
:100E00000319F90A0319FA0A83128A110A16952B93
226
:100E1000A90A2908023C031D102F2E30FD002624AC
227
:100E20007008FD00262400340408EF00690EF03835
228
:100E3000EB00EB07E23EEC00323EEE0069080F39B2
229
:100E4000EC07EC07EE07E93EED00ED07ED07680E55
230
:100E50000F39ED07EE07ED0DEE0DEE09EE0D68080A
231
:100E60000F39EE07EB0D0730EA000A30EE07ED030D
232
:100E7000031C362FED07EC03031C3A2FEC07EB03A2
233
:100E8000031C3E2FEB07EA03031C422F6A30840049
234
:100E900007306F0584076E30040203196B2F0008BA
235
:100EA000F700031D592F6F1A692FEF195B2F2030A0
236
:100EB0005C2F0830EF003030F707E9010408E80044
237
:100EC0007708EA007708F0000827680884006A08B5
238
:100ED000F700840A4B2F0008F7003030F707770837
239
:100EE000F00008278A150A126829A90A2908033C74
240
:100EF000031D8F2FC11C862FC31E822F1130FD00B2
241
:100F00002624852F6230FD0026248F2FC31E8C2FB0
242
:100F10001230FD0026248F2F6130FD002624290881
243
:100F2000063C031D9C2F411C992F3A30FD002624BE
244
:100F30009C2F2E30FD0026247C08FD002624003442
245
:100F40006F08F8016E020318A82F6E08F700B42F7F
246
:100F5000F7010830F000EE0DF70D6F087702031867
247
:100F6000F700F80DF00BAB2F0034A90A2908023C5A
248
:100F7000031DBD2F2E30FD0026246D08FD00262404
249
:100F800000345408633C0318CF2F3E30FD00262464
250
:100F90003130FD0026243030FD002624D72FA90152
251
:100FA0005408EB000130EC008A15F5218A11573006
252
:100FB000FD0026242030FD0026245508633C03183C
253
:100FC000EB2F3E30FD0026243130FD00262430304A
254
:100FD000FD002624F32FA9015508EB000130EC0099
255
:080FE0008A15F5218A11003485
256
:101000000408F100F01F14282D30FC008A11752708
257
:101010008A15ED09EE09EF09F009ED0A0319EE0A48
258
:101020000319EF0A0319F00A3B30F6009A30F50075
259
:10103000CA30F400F3010A30F20070088316A300EE
260
:1010400083126F088316A20083126E088316A10014
261
:1010500083126D088316A0007608A7007508A60005
262
:101060007408A5007308A4008A118312D1258A157B
263
:101070000008ED00840A0008EE00840A0008EF0072
264
:10108000840A0008F000FD308407F708031D5A2881
265
:101090007208013A03195A28710803195B280F399D
266
:1010A00072020319552803186228F030711B0030B2
267
:1010B000F7005B28F1013030F7077708FC008A1150
268
:1010C00075278A1576088316A3007508A200740890
269
:1010D000A1007308A000A701A601A5010A30A40081
270
:1010E0008A118312D1258A157A08F6007908F5004D
271
:1010F0007808F4007708F300F20B1D288A150A120D
272
:101100008C290130FE008316A0008A11831213245B
273
:101110008A15C310441EA528E80168088A11C0205A
274
:101120008A15E80AF700FD008A1126248A15063080
275
:101130006802031D8D280330E9002030FD008A116C
276
:1011400026248A15E90B9D288C29C41D30295008B6
277
:10115000F93E03182F29073E8F29E80168088A11F4
278
:10116000CB208A15E80AF700FD008A1126248A158B
279
:1011700005306802031DAE280330E9002030FD0071
280
:101180008A1126248A15E90BBE282F29E801680850
281
:101190008A11D5208A15E80AF700FD008A11262455
282
:1011A0008A1508306802031DC7282F29E80168083E
283
:1011B0008A11E2208A15E80AF700FD008A11262428
284
:1011C0008A1508306802031DD7282F29E80168080E
285
:1011D0008A11EF208A15E80AF700FD008A112624FB
286
:1011E0008A1508306802031DE7282F29E8016808DE
287
:1011F0008A11FC208A15E80AF700FD008A112624CE
288
:101200008A1508306802031DF7282F29E8016808AD
289
:101210008A1109218A15E80AF700FD008A1126249F
290
:101220008A1505306802031D07290330E9002030C4
291
:10123000FD008A1126248A15E90B17292F29E801B8
292
:1012400068088A1113218A15E80AF700FD008A113F
293
:1012500026248A1508306802031D20292F298C298D
294
:10126000431E6A29E80168088A1120218A15E80AC4
295
:10127000F700FD008A1126248A1504306802031D38
296
:101280003329B31F49292B30FD008A1126248A15E2
297
:101290004E292D30FD008A1126248A153308FA00C4
298
:1012A0003208B31F5C293208003CF700FA0133080A
299
:1012B000031C330FFA027708E6007A08E700A90159
300
:1012C000093084006708E9006608E8008A11142FD5
301
:1012D0008A158C29A9010030C1180130F700F70DDB
302
:1012E000F70DFC30F70577082A3E84000008E90076
303
:1012F000840A0008EA00840A0008EB00840A000857
304
:10130000EC00083084006C08F0006B08EF006A08FD
305
:10131000EE006908ED0000288A110A169B2E0A14B7
306
:101320008A100A118207C628E628F6281F290629EE
307
:10133000D628AD286D13ED126C08EE006430EF0076
308
:101340008A11A0278A157708EC007808031DC829A0
309
:10135000ED1AC829ED19DA296D1BB4296D18B429C5
310
:101360006D19B429ED1BDA296D1CC029ED1BDA2992
311
:101370006D1BC0296D18DA296D19C029ED1BDA29FA
312
:1013800020306D1E3030FD008A1126248A15DA299E
313
:10139000ED16ED1FD42978088000F8002D30FD00EF
314
:1013A0008A1126248A15ED1330307807FD008A1142
315
:1013B00026248A156D1BE7296C08EE000A30EF0021
316
:1013C0008A11A0278A157708EC006D17A529ED1F53
317
:1013D000EE292D30FD008A1126248A1530306C0745
318
:1013E000FD008A1126248A1500346C13EC126B0858
319
:1013F000EE006430EF008A11A0278A157708EB0011
320
:101400007808031D232AEC1A232AEC19352A6C1BB1
321
:101410000F2A6C180F2A6C190F2AEC1B352A6C1C2A
322
:101420001B2AEC1B352A6C1B1B2A6C18352A6C19DD
323
:101430001B2AEC1B352A20306C1E3030ED008A113F
324
:10144000B5278A15352AEC16EC1F2F2A780880005C
325
:10145000F8002D30ED008A11B5278A15EC133030D5
326
:101460007807ED008A11B5278A156C1B422A6B0894
327
:10147000EE000A30EF008A11A0278A157708EB00EA
328
:101480006C17002AEC1F492A2D30ED008A11B52770
329
:101490008A1530306B07ED008A11B5278A150034A4
330
:1014A0000408F2006C0EF038EE00EE07E23EEF00AA
331
:1014B000323EF1006C080F39EF07EF07F107E93E04
332
:1014C000F000F007F0076B0E0F39F007F107F00D91
333
:1014D000F10DF109F10D6B080F39F107EE0D073031
334
:1014E000ED000A30F107F003031C722AF007EF0346
335
:1014F000031C762AEF07EE03031C7A2AEE07ED039E
336
:10150000031C7E2A6D308400073072058407713019
337
:1015100004020319A92A0008F700031D952A721A6C
338
:10152000A72AF219972A2030982A0830F200303082
339
:10153000F707EC010408EB007708ED007708FD00E1
340
:101540008A1126248A156B0884006D08F700840A26
341
:10155000872A0008F7003030F7077708FD008A1166
342
:1015600026248A158A150A12252CA90A2908033C63
343
:10157000031DBF2A2E30FD008A1126248A156D080E
344
:10158000FD008A1126248A1500346C13EC126B08B6
345
:10159000EE006430EF008A11A0278A157708EB006F
346
:1015A0007808031DF12AEC1AF12AEC19FF2A6C1BAA
347
:1015B000DF2A6C18DF2A6C19DF2AEC1BFF2A6C1C4F
348
:1015C000EB2AEC1BFF2A6C1BEB2A6C18FF2A6C1908
349
:1015D000EB2AEC1BFF2A20306C1E3030ED00B522C8
350
:1015E000FF2AEC16EC1FFB2A78088000F8002D304B
351
:1015F000ED00B522EC1330307807ED00B5226C1BFE
352
:101600000C2B6B08EE000A30EF008A11A0278A1518
353
:101610007708EB006C17D02AEC1F112B2D30ED0052
354
:10162000B52230306B07ED00B5228A150A12562C10
355
:1016300043110130FE0002308316A0008A1183128C
356
:1016400013248A15441E962B5008FB3E0318952B35
357
:10165000053E402DEB016B088A1129218A15EB0A02
358
:10166000F700FD008A1126248A1505306B02031D40
359
:101670002B2B0330EC002030FD008A1126248A1524
360
:10168000EC0B3B2B952BEB016B088A1133218A1550
361
:10169000EB0AF700FD008A1126248A1505306B023B
362
:1016A000031D442B0330EC002030FD008A1126245A
363
:1016B0008A15EC0B542B952BEB016B088A113D21FD
364
:1016C0008A15EB0AF700FD008A1126248A150830D6
365
:1016D0006B02031D5D2B952BEB016B088A114A21D0
366
:1016E0008A15EB0AF700FD008A1126248A150430BA
367
:1016F0006B02031D6D2B0430EC002030FD008A11BD
368
:1017000026248A15EC0B7D2B952BEB016B088A1197
369
:1017100053218A15EB0AF700FD008A1126248A1549
370
:1017200008306B02031D862B952B3D2DC41DB32C59
371
:101730005008F93E0318B22C073E492D4F08F0001F
372
:101740000630F1008A11AC258A157808EB002D309F
373
:10175000FD008A1126248A156B08EC001130ED007B
374
:101760009A210430EC006C088A1160218A15EC0A79
375
:10177000F700FD008A1126248A1509306C02031D2A
376
:10178000B32BB22C431BDB2BA9015B08EB00013010
377
:10179000EC00F5210430EB006B088A116E218A15EC
378
:1017A000EB0AF700ED008A11B5278A1509306B02A4
379
:1017B000031DCC2BDE2B8A11C1278A15B22C4E08B3
380
:1017C000053C031CFC2B4F30FD008A1126248A1592
381
:1017D0004630FD008A1126248A154630FD008A1104
382
:1017E00026248A150530EB002030FD008A112624BE
383
:1017F0008A15EB0BF42B0A2C4E08EC001130ED008F
384
:101800009A210630EB002030FD008A1126248A152B
385
:10181000EB0B032CB22CE8014A08E7006808FD0036
386
:101820006708FC008316A1013230A0008A118312E0
387
:1018300015268A157908E8007808E7000130840049
388
:101840006808EC006708EB00502A0430EB006B08D6
389
:101850008A117C218A15EB0AF700FD008A112624E3
390
:101860008A1509306B02031D272CB22CEA01590896
391
:10187000E9006A08FD006908FC008316A1010A302E
392
:10188000A0008A11831215268A15790CEA00780CBB
393
:10189000E900EA0CE90CEA0CE90CEA0CE90C0F305F
394
:1018A000EA05A9016908EB00EC01C52A5630ED00F4
395
:1018B000B5220430EB002030ED00B522EB0B5B2CA1
396
:1018C000B22CCD080319732C4230FD008A11262456
397
:1018D0008A150730EB002030FD008A1126248A1576
398
:1018E000EB0B6B2C812C4130FD008A1126248A15CC
399
:1018F0000730EB002030FD008A1126248A15EB0BFF
400
:101900007A2CB22CCC0803199E2C5930FD008A1178
401
:1019100026248A154530FD008A1126248A15533065
402
:10192000FD008A1126248A150530EB002030FD00C9
403
:101930008A1126248A15EB0B962CB12C4E30FD0013
404
:101940008A1126248A154F30FD008A1126248A1513
405
:101950000630EB002030FD008A1126248A15EB0B9F
406
:10196000AA2CB22C3D2D431FB92C8A11C1278A15F0
407
:101970003D2DC5183D2D5308C73C031CC52C3230E6
408
:10198000FD008A1126248A15CA2C2030FD008A11F8
409
:1019900026248A155308BA3C031CD42C3330FD008E
410
:1019A0008A1126248A15D92C2030FD008A1126247C
411
:1019B0008A155308A83C031CE32C3430FD008A111F
412
:1019C00026248A15E82C2030FD008A1126248A1549
413
:1019D0005308913C031CF22C3530FD008A1126245B
414
:1019E0008A15F72C2030FD008A1126248A15530809
415
:1019F000823C031C012D3630FD008A1126248A15F5
416
:101A0000062D2030FD008A1126248A155308793CC2
417
:101A1000031C102D3730FD008A1126248A15152D40
418
:101A20002030FD008A1126248A155308733C031CBC
419
:101A30001F2D3830FD008A1126248A15242D2030D0
420
:101A4000FD008A1126248A155308603C031C2E2DA4
421
:101A50001330FD008A1126248A153D2D53086C3C55
422
:101A6000031C382D3930FD008A1126248A153D2D9E
423
:101A70002030FD008A1126248A158A110A16A52E07
424
:101A80000A148A100A1582072A2B432B5C2B852BFC
425
:101A90006C2B0A148A100A158207C22B0B2C362CC9
426
:101AA000822C612CDF2B9E2B20308316AC00A801EA
427
:101AB000A901AA01AB012308FA002208F9002108B4
428
:101AC000F8002008F7000310771C742D2408A807DD
429
:101AD00025080318250FA90726080318260FAA07AB
430
:101AE00027080318270FAB07AB0CAA0CA90CA80CEE
431
:101AF000FA0CF90CF80CF70CAC0B632D83128A1559
432
:101B00000A12E42DF801F901F701FA018316210800
433
:101B1000031D8D2D20080319A72D1030FE00031082
434
:101B2000FC0DFD0DF70DFA0D21087A02031D9A2D0B
435
:101B300020087702031CA32D2008F702031CFA03D8
436
:101B40002108FA020314F80DF90DFE0B8F2D000089
437
:101B5000831200345808E039F50042088A119320B6
438
:101B60008A15F80075020319B72D8A01002805307F
439
:101B70005907AD3C03184417431F072FEB01EA0137
440
:101B8000E9015608E8006B088316A30083126A086F
441
:101B90008316A200831269088316A10083126808C5
442
:101BA0008316A00083126B088316A70083126A08AD
443
:101BB0008316A600831269088316A500831268089D
444
:101BC0008316A4008312542D7A08EB007908EA00EA
445
:101BD0007808E9007708E800680DEC00690DED0071
446
:101BE0006A0DEE006B0DEF00EC0DED0DEE0DEF0D3F
447
:101BF000EC0DED0DEE0DEF0DF830EC056808EC077F
448
:101C000069080318690FED076A0803186A0FEE07E1
449
:101C10006B0803186B0FEF076808EC0769080318D7
450
:101C2000690FED076A0803186A0FEE076B080318BF
451
:101C30006B0FEF076F088316A30083126E088316DD
452
:101C4000A20083126D088316A10083126C0883160C
453
:101C5000A000A701A6011530A500E030A4008A115C
454
:101C60008312D1258A157708D400D708031D3B2E8F
455
:101C70000A30D500A72EF1015608F000F00DF10D45
456
:101C8000F00DF10DF00DF10DF00DF10DF030F0054E
457
:101C90007108FD007008FC008316A101831257082B
458
:101CA0008316A000831282257908E7007808E600F1
459
:101CB000E708031D622E6608103C031C622EFA30F2
460
:101CC000D500A72E6708003C0318702EFF3A031DAD
461
:101CD0006D2E6608513C0318702E0A30D500A72ED1
462
:101CE00010306607F0006708F1000318F10A700D64
463
:101CF000F200710DF300F20DF30DF20DF30DF8305B
464
:101D0000F2057008F2070318F30A7108F307700868
465
:101D1000F2070318F30A7108F30710306602F700A0
466
:101D20006708FA000030031C0130FA027708F5005A
467
:101D30007A08F6007308FD007208FC007A08831622
468
:101D4000A1007708A000831282257808D5005508E5
469
:101D5000123C0318AF2E54080A3CF400B22E54086B
470
:101D60005B02F4007408803A7E3C031CDC2E5A08A7
471
:101D70001B3C0318DC2E7408803A753C031CC32EF0
472
:101D80000430DA02C42EDA03F1015A08F00003101D
473
:101D9000700DF500710DF600F60CF50CF60CF50C57
474
:101DA000F60C75089B00F60C760C3039F7001D0810
475
:101DB000CF3977049D00072FF41B072F7408023CCE
476
:101DC0000318072F5A089C3C031C072FF41BEF2E07
477
:101DD00074080A3C0318EF2E0430DA07F02EDA0AF2
478
:101DE000F1015A08F0000310700DF500710DF600B6
479
:101DF000F60CF50CF60CF50CF60C75089B00F60CC1
480
:101E0000760C3039F7001D08CF3977049D00610842
481
:101E1000043C03180E2F4315E1010F2FE10A8A112C
482
:041E20000A16AF2EC1
483
:1020000084011F30830583161F149F141F159F1111
484
:10201000FF308312E000E1010A12A92B0A16831691
485
:10202000A3015030A4000A1283128A230A16023038
486
:10203000FE000A125C230A16E60166080A12A421B1
487
:102040000A16E60AF700E7000A12F2230A16083019
488
:102050006602031D1D288316A3010330A4000A1283
489
:1020600083128A230A160230FE000A125C230A1623
490
:102070008316A3014830A4000A1283128A230A1689
491
:102080000230FE000A125C230A161030E7000A1222
492
:10209000F2230A161030E7000A12F2230A1616304D
493
:1020A000E7000A12F2230A160330E6001F30E700A9
494
:1020B0000A12F2230A16E60B56281E30E7000A120F
495
:1020C000F2230A168030E7000A12F2230A1683165A
496
:1020D000A3010330A4000A1283128A230A160230D5
497
:1020E000FE000A125C230A168316A3015830A400CE
498
:1020F0000A1283128A230A160230FE000A125C2397
499
:102100000A16E60166080A12B1210A16E60AF70065
500
:10211000E7000A12F2230A1608306602031D82281D
501
:102120008316A3010330A4000A1283128A230A161D
502
:102130000230FE000A125C230A168316811308106F
503
:102140008312081483160812831208128316881249
504
:1021500083128816831606118312061183168611C0
505
:1021600083128611831606128312061283168612B4
506
:102170008312861260156008831687008312E010B0
507
:102180006008831687008312871083160910831254
508
:1021900009106010600883168700831207108316E9
509
:1021A00089108312891021308316AF00AE010A1204
510
:1021B0008312FC230A16C0308316AF00AE010A1248
511
:1021C0008312FC230A16E0308316AF00AE010A1218
512
:1021D0008312FC230A160A30B500C401C301C601EC
513
:1021E000C501C701C801D1011B30DA00B401BC012F
514
:1021F000B301B2010130FE008316A0000A1283125F
515
:1022000013240A16E60166080A12BE210A16E60A17
516
:10221000F700FD000A1226240A1608306602031D84
517
:1022200003290130FE0002308316A0000A12831237
518
:1022300013240A16E60166080A12CB210A16E60ADA
519
:10224000F700FD000A1226240A1605306602031D57
520
:102250001B290330E7002030FD000A1226240A164D
521
:10226000E70B2B290430E600FA30FE000A125C234B
522
:102270000A16E60B34291F179F1383169F13831228
523
:102280001F1483161F109F141F119F110A1283120F
524
:10229000632C0A160A12D32C0A16420803178D0063
525
:1022A00083168C130C1483120C080313C9004908FD
526
:1022B000F0000530F1000A12AC250A167808DB00A0
527
:1022C000083003178D0083168C130C1483120C082E
528
:1022D0000313CE004E08053C031C7129C601C5013D
529
:1022E0009C2945148316A3010230A2004930A100A5
530
:1022F000F030A000A701A601A50183124E088316A5
531
:10230000A4000A128312D1250A167708DC00DC0922
532
:102310007808DD00DD09DC0A0319DD0A03105C0D15
533
:10232000E6005D0DE7005C086607DE006708DF0079
534
:102330000318DF0A5D08DF07043003178D008316DA
535
:102340008C130C1483120C080313CA00BA014A0838
536
:10235000B900B908031DAF29BA080319C0293A0802
537
:10236000FD003908FC008316A1011430A0000A12F8
538
:10237000831215260A167908BA007808B900C3290D
539
:10238000BA010230B900063003178D0083168C1392
540
:102390000C1483120C080313CC00CC080319D229A7
541
:1023A000C517D329C513063003178D0083168C1368
542
:1023B0000C1483120C080313CC004610CF010A1230
543
:1023C0002C260A16420DF700F70DFC30F7057708AA
544
:1023D000E6000330E60766080A1277200A16FA00BC
545
:1023E000E60366080A1277200A16F900E603660873
546
:1023F0000A1277200A16F80066030A1277200A16D6
547
:10240000F7007A08AD007908AC007808AB007708CF
548
:10241000AA00420DF700F70DFC30F7057708E6003B
549
:102420000330E60766080A1277200A16FA00E60368
550
:1024300066080A1277200A16F900E60366080A12EF
551
:1024400077200A16F80066030A1277200A16F700AA
552
:102450007A08B1007908B0007808AF007708AE00BC
553
:1024600043144110C11083160108C0390638810099
554
:10247000D930831281001830F800063892004D30B0
555
:1024800083169200831260116008831687008312FE
556
:1024900007110C30970027309500601560088316EF
557
:1024A0008700C0018312071D582A8316C00A8312B1
558
:1024B000E010600883168700831287100C309D009F
559
:1024C00006309B001D08CF3930389D00900106086A
560
:1024D000FF3AC039BF003F1B45100B168B16831601
561
:1024E0008C140C1483128B15C0308B04431CDD2B11
562
:1024F000431B1C2B4208023C0318B42A0030C118AD
563
:102500000130F700F70DF70DFC30F70577082A3E8C
564
:10251000840000088316A100840A0008A200840A2F
565
:102520000008A300840A0008A400FD308407B0302E
566
:1025300021028312E600831622088312E700493045
567
:10254000031C4A30E702831623088312E8004C304C
568
:10255000031C4D30E802831624088312E900003082
569
:10256000031C0130E902E92A0030C1180130F700EC
570
:10257000F70DF70DFC30F70577082A3E84000008B8
571
:102580008316A100840A0008A200840A0008A300A0
572
:10259000840A0008A400FD308407B03021078312AC
573
:1025A000E600831622088312E700493003184A30F8
574
:1025B000E707831623088312E8004C3003184D30D8
575
:1025C000E807831624088312E9000030031801305D
576
:1025D000E907431E1A2B3208F7003308F800F90107
577
:1025E000FA01B31FF52AF903FA037A08F100790812
578
:1025F000F0007808EF007708EE006E086607F70035
579
:102600006708F8006F0803186F0FF8076808F900EB
580
:1026100070080318700FF9076908FA0071080318A9
581
:10262000710FFA077A08E9007908E8007808E700EE
582
:102630007708E600C314592BC31E3C2B0030C11C85
583
:102640000130F700F70DF70DFC30F70577082A3E4B
584
:1026500084000008F700840A0008F800840A0008D3
585
:10266000F900840A0008FA00E9007908E80078080F
586
:10267000E7007708E600592B0030C1180130F70059
587
:10268000F70DF70DFC30F70577082A3E84000008A7
588
:10269000F700840A0008F800840A0008F900840A98
589
:1026A0000008FA00E9007908E8007808E7007708F0
590
:1026B000E60069088316A300831268088316A20047
591
:1026C000831267088316A100831266088316A00090
592
:1026D0000A1283124C2E0A1677088316A000780877
593
:1026E000A1007908A2007A08A3002308A700220805
594
:1026F000A6002108A5002008A4007730AB00CC304C
595
:10270000AA002B30A9008130A8000A1283126B2E78
596
:102710000A167A088316A7007908A6007808A5008B
597
:102720007708A4000A128312E52E0A167A08831687
598
:10273000A7007908A6007808A5007708A400270854
599
:10274000AB002608AA002508A9002408A80020300C
600
:10275000AF00AE010A128312FC230A168316290861
601
:10276000AD002808AC002D17AD132D08AF002C08C4
602
:10277000AE000A128312FC230A168316280DAF003E
603
:10278000290DB0002A0DB1002B0DB200AF0DB00D18
604
:10279000B10DB20DFC30AF05F901FA013208AD0000
605
:1027A0003108AC002D17AD132D08AF002C08AE007A
606
:1027B0000A128312FC230A164310441C812DC419EB
607
:1027C000E32B441E302CB41BE92B3408093C031CBA
608
:1027D000EE2B3408803A763C031C812DB41B122C5E
609
:1027E0003408003C0318122C441EFD2B5008033CF7
610
:1027F000031CFC2BD00A4315112C493050078400D0
611
:102800000008F0000310500D013E0A129B200A162A
612
:10281000F80070020318112C493050078400800A18
613
:10282000C3152E2C441E1A2CD0080319192CD003C2
614
:1028300043152E2C4930500784000008F000031087
615
:10284000500D0A129B200A16F8007008780203182F
616
:102850002E2C4930500784008003C315B401802D0D
617
:10286000431E742C3408F0000A30F1000A12AC2523
618
:102870000A167808FA01F700F71BFA03EE007A0847
619
:10288000EF00B4016E083207F0003308F1000318BE
620
:10289000F10A6F08F107F11B572C7108073C031C64
621
:1028A000732C031D572C7008D03C031C732C6E082E
622
:1028B0003207F2003308F3000318F30A6F08F30736
623
:1028C000F31F6D2C7308F73C0318732CFF3A031D9C
624
:1028D0006D2C72082F3C0318732C6E08B207031876
625
:1028E000B30A6F08B3077F2DF3013408F200B41B5D
626
:1028F000F303003041180130F7000310F70D77089B
627
:10290000F100770A0A128B200A16FA0071080A12DF
628
:102910008B200A16F4007A08F5007308FD0072088F
629
:10292000FC007A088316A1007408A0000A12831222
630
:1029300015260A167908FA007808F7007908F800D1
631
:10294000F901FA01F81FA62CF903FA037A08ED0041
632
:102950007908EC007808EB007708EA00B401003051
633
:10296000C1180130F700F70DF70DFC30F7057708B7
634
:102970002A3E84000008F100840A0008F200840A5C
635
:102980000008F300840A0008F4006A087107F700E1
636
:102990007208F8006B0803186B0FF8077308F9004A
637
:1029A0006C0803186C0FF9077408FA006D08031817
638
:1029B0006D0FFA077A08E9007908E8007808E7005F
639
:1029C0007708E600420DF700F70DF70DF830F70530
640
:1029D0007708043EF1000330F10771080A12532012
641
:1029E0000A16FA00F10371080A1253200A16F900B8
642
:1029F000F10371080A1253200A16F80071030A1233
643
:102A000053200A16F70069087A02031C7F2D031D64
644
:102A1000192D68087902031C7F2D031D192D6708E5
645
:102A20007802031C7F2D031D192D66087702031CF5
646
:102A30007F2D420DF700F70DF70DF830F7057708F9
647
:102A4000F3000330F30773080A1253200A16FA0042
648
:102A5000F30373080A1253200A16F900F3037308EC
649
:102A60000A1253200A16F80073030A1253200A169A
650
:102A7000F7007A086902031C7F2D031D4F2D79088A
651
:102A80006802031C7F2D031D4F2D78086702031C6D
652
:102A90007F2D031D4F2D77086602031C7F2D00300C
653
:102AA000C1180130F700F70DF70DFC30F705770876
654
:102AB0002A3E84006A080007F700840A0008F8002C
655
:102AC0006B0803186B0FF807840A0008F9006C08FC
656
:102AD00003186C0FF907840A0008FA006D08031840
657
:102AE0006D0FFA07FD30840777088000840A7808A4
658
:102AF0008000840A79088000840A7A0880004314E0
659
:102B00004410C31D912EC3115008063A0319982D85
660
:102B1000063A03192E2E053A0319382E043A0319E2
661
:102B20006A2E023A0319882E073A03198F2E902E27
662
:102B300044154F08013A0319A42D033A0319D32D64
663
:102B4000013A0319022E262E831609108312091446
664
:102B500083168910831289100A30FE000A125C2342
665
:102B60000A16831689148312601060088316870082
666
:102B70008312071083168910831289140A30FE000D
667
:102B80000A125C230A16831689140A30FE000A1200
668
:102B900083125C230A1683160914831260146008DA
669
:102BA000831687002C2E83160910831209108316B2
670
:102BB0008910831289140A30FE000A125C230A1657
671
:102BC00083168914831260106008831687008312AD
672
:102BD000071483168910831289100A30FE000A1226
673
:102BE0005C230A16831689140A30FE000A12831227
674
:102BF0005C230A1683160914831260146008831676
675
:102C000087002C2E831609108312091460106008A7
676
:102C10008316870083120714831689108312891084
677
:102C20000A30FE000A125C230A16831689140A3041
678
:102C3000FE000A1283125C230A16831609148312FB
679
:102C400060146008831687002C2E83120A122C262B
680
:102C50000A16441183162C2E8312902E4908F00078
681
:102C60000530F1000A12AC250A167808DB00902E18
682
:102C70004E08053C031C3E2E4510692E4514831654
683
:102C8000A3010230A2004930A100F030A000A7014A
684
:102C9000A601A50183124E088316A4000A1283120E
685
:102CA000D1250A167708DC00DC097808DD00DD098B
686
:102CB000DC0A0319DD0A03105C0DE6005D0DE70078
687
:102CC0005C086607DE006708DF000318DF0A5D089E
688
:102CD000DF07902EBA014A08B900B908031D732E08
689
:102CE000BA080319842E3A08FD003908FC0083163F
690
:102CF000A1010A30A0000A12831215260A167908CB
691
:102D0000BA007808B900872EBA010130B900902EB8
692
:102D1000CC0803198D2EC5178E2EC513902E902E1C
693
:102D20004315C31C9D2EB508031D9D2EC5189D2E51
694
:102D30000A128A1581280A168A11431DA92EB50880
695
:102D4000031DA92E0A128A15182B0A168A11FF30A4
696
:102D5000B500B508031DB32E0A128A15AA2D0A164E
697
:102D60008A11FF30B500C71C6E2FC41D052F4718F0
698
:102D7000052FC411B401C61845145008063C0319A8
699
:102D8000022F50080A12AD200A16F800E200D008FF
700
:102D9000031DCC2E4208E207620803178D0083163C
701
:102DA0008C130C1483120C080313E60049305007EF
702
:102DB0008400000866020319022F4930500784007E
703
:102DC0000008E600620803178D0003136608031766
704
:102DD0008C0083168C130C15831203130B08F70059
705
:102DE0008B138316031755308D00AA308D008C1479
706
:102DF0008C18F82E0C117708831203138B040A1217
707
:102E0000A1240A16C31443156C2F3C08103C031D63
708
:102E1000242F471C102F4416D001C3144315242F10
709
:102E2000441E1E2FD008031D1B2F451C192FC6142E
710
:102E30001A2FC61045104412C415232FC31E222F6B
711
:102E4000C312232FC316C314441A6C2F3C08403CF2
712
:102E5000031D3B2F471C332F411C302F4110312FB6
713
:102E60004114C3143B2F431E392F4312B301B20147
714
:102E70003A2F431643143C08203C031D5B2F471C8C
715
:102E8000552FC11C4C2F3108AD003008AC002F0865
716
:102E9000AB002E08AA00542F2D08B1002C08B0005A
717
:102EA0002B08AF002A08AE005B2FC11C592FC110A0
718
:102EB0005A2FC11443143C08803C031D6C2F471C3F
719
:102EC000672F0530D000C415C31443156C2F06308E
720
:102ED000D000C415C3144315C7104715762A6300E4
721
:02400E00793FF8
722
:00000001FF
723
;PIC16F877
Designs/HF_TRAMP/FW/V1_6/VFO.H
1
//**********************************************************************
2
//            program pro rizeni TRXu - HLAVICKOVY SOUBOR
3
//**********************************************************************
4
// (c) OK1XGL 2005
5

  
6

  
7
#include <16F877.h>
8
#device ADC=8;
9
#fuses XT,NOWDT,NOPROTECT,BROWNOUT,NOLVP,NOCPD
10
#use delay (clock=4000000,restart_wdt)
11

  
12

  
13
// LCD display
14
#define LCD_RS          PIN_D2        /* rizeni registru LCD displeje */
15
#define LCD_E           PIN_D3        /* enable LCD displeje */
16
#define LCD_DATA_LSB    PIN_D4        /* pripojeni LSB bitu datoveho portu LCD displeje (celkem 4 bity vzestupne za sebou) */
17
#define LCD_LED1        PIN_B5
18
#define LCD_LED2        PIN_B4
19

  
20
#define LCD_CHAR_a_FILL  "\x80\x80\x0E\x01\x0F\x1F\x0F\x80"      /* male a s s vyplnenym briskem */
21
#define LCD_CHAR_b_FILL  "\x10\x10\x16\x1F\x1F\x1F\x1E\x80"      /* male b s vyplnenym briskem */
22
#define LCD_CHAR_9_FILL  "\x0E\x1F\x1F\x0F\x01\x02\x0C\x80"      /* 9 s vyplnenym briskem */
23

  
24
// smimac polohy - ladeni
25
#define ENCODER_CLK     PIN_B0        /* musi zde byt ,je od nej preruseni */
26
#define ENCODER_DIR     PIN_B1
27

  
28
// tlacitka
29
#define KEY_ATN_KEY     PIN_C7
30
#define KEY_SPLIT_MNU   PIN_C4
31
#define KEY_A_B         PIN_C5
32
#define KEY_RIT_STEP    PIN_C6
33
#define KEYPORT         PORTC
34
// masky pro jednotlive funkce na tlacitkach
35
#define KEY_MASK        0b11110000    /* maska pouzitych tlacitek */
36
#define KEY_LONG        100           /* doba, po, ktere je povazuje stisk tlacitka za dlouhy v jednotkach zakladniho tiku  */
37

  
38
#define KEY_RIT         0b01000000    /* funkce RIT/STEP */
39
#define KEY_SPLIT       0b00010000    /* funkce SPLIT/MNU */
40
#define KEY_CHNGVFO     0b00100000    /* prepni VFO/srovnej VFO */
41
#define KEY_ATTN        0b10000000    /* nastav utlum/rychlost elbugu */
42

  
43

  
44
// tlg. klic
45
#define KEY_DASH        PIN_B6
46
#define KEY_DOT         PIN_B7
47

  
48
// ridici signaly TRXu
49
#define RXTX            PIN_B2      /* prepinac prijem vysilani 1= vysilani*/
50
#define KEYING          PIN_B3      /* klicovaci signal */
51
#define MUTE            PIN_C3      /* uzavira NF cestu pri vysilani */
52
#define TONE            PIN_C2      /* generovani tonu odposlechu NEMENIT!!! PWM1 je jen zde */
53
#define PWR_CTRL        PIN_C1      /* vystup PWM2 pro rizeni vystupniho vykonu PA NEMENIT !!!*/
54

  
55

  
56
// DDS signaly
57
#define  DDS_FSYNC      PIN_D0      /* enable prenosu dat aktivni v log0 */
58
#define  DDS_SCK        PIN_D5      /* musi zde byt, hodiny sestupna hrana */
59
#define  DDS_SDATA      PIN_D4      /* musi zde byt, seriova data */
60
#define  DDS_FSEL       PIN_D1      /* prepnuti frekvencnich registru */
61

  
62
// rizeni attenuatoru
63
#define  ATN1           PIN_E0
64
#define  ATN2           PIN_C0
65
#define  ATNC           PIN_E1
66
#define RELE_PULSE      10          /* delka prepinaciho pulzu pro rele v ms jednotkach */
67

  
68

  
69
// analogove vsupni signaly
70
#define  REF            PIN_A1
71
#define  FWD            PIN_A0
72
#define  MTR12V         PIN_A2
73
#define  SMTR           PIN_A3
74
#define  BAND           PIN_A5
75
// cisla pouzitych kanalu
76
#define  REF_CH         0
77
#define  FWD_CH         1
78
#define  MTR12V_CH      2
79
#define  SMTR_CH        3
80
#define  BND_CH         4
81

  
82

  
83
// konstanty verze programu
84
#define  NAME           "VERSION "
85
#define  VERSION        " V1.6   "
86

  
87
// konstanty timeru0
88
#define  TICK_TIME       0xFFFF-(5000/128)+1       /* zakladni tik TMR0 bude 5ms */
89
#define  UPDATE_TIME     10                        /* doba, po ktere se muze updatovat kde co v jedntkach tick_time */
90

  
91
// konstanty timeru2
92
#define  TONE_SET        0x4d                      /* konstanta urcujici kmitocet priposlechu, zde 800Hz */
93

  
94
// konstanty kmitoctu pro VFO
95
#define  CONVERT_CONST      5.36870912             /* 2^28/50000000 , tedy 2^28/kmitocet hodin DDS*/
96
#define  FREQ_IF            4999600L               /* kmitocet mezifrekvence v Hz */
97
#define  SUB_IF_INDEX            3                 /* index pasma, od ktereho se mezifrekvencni kmitocet odecita */
98
// zakladni nastaveni ridiciho registru DDS
99
#define  CTRL_FREQ0    0b0010000000000000          /* prepni se do freq0 */
100
#define  CTRL_FREQ1    0b0010100000000000          /* prepni se do freq1 */
101
#define  CTRL_RESET    0b0010000100000000          /* pozaduj reset */
102
#define  CLR_PHASE0    0b1100000000000000          /* nuluj fazovy registr 0 */
103
#define  CLR_PHASE1    0b1110000000000000          /* nuluj fazovy registr 1 */
104

  
105
#define  ENC_HISTEREZE     10                      /* necitlivost kroutitka pri nastavovani parametru v impulzech */
106

  
107
#define  BAND_NUM          4                       /* pocet pasem */
108
// tabulka meznich kmitoctu v Hz pro jednotliva pasma
109
int32 const BAND_LIMIT[BAND_NUM][2] = {
110
                                       //{1800000,2000000},
111
                                       {3500000,3620000},
112
                                       {7000000,7045000},
113
                                       {10100000,10150000},
114
                                       {14000000,14120000}
115
                                       //{18068000,18168000}
116
                                       //{21000000,21450000}
117
                                      };
118

  
119

  
120
int32 const START_FREQ[BAND_NUM] = {
121
                                       //1810000,
122
                                       3560000,
123
                                       7030000,
124
                                       10116000,
125
                                       14060000,
126
                                       //18096000,
127
                                       //21060000
128
                                   };
129

  
130
#define  RIT_STEP    10                            /* krok RITu v Hz */
131
signed int16 const RIT_LIMIT[2] = {-2000,2000};    /* rozsah RITu v Hz */
132

  
133
int16 const FREQ_STEP[2]={20,1000};                /* tabulka ladicich kroku v Hz */
134

  
135
// tabulka dekodovani pasma
136
#define  BAND_ADC_MASK           0b11100000
137
int8 const BAND_ADC[BAND_NUM]= {
138
                                 //0x00,            /* 160m */
139
                                 0x20,            /* 80m  */
140
                                 0x40,            /* 40m  */
141
                                 0x60,            /* 30m  */
142
                                 0x80             /* 20m  */
143
                                 //0x82,            /* 17m  */
144
                                 //0x84            /* 15m  */
145
                               };
146

  
147

  
148
// hodnoty napeti z prevodniku odpovidajici prislusnym S stupnum
149
int8 const S_METER[9]= {
150
                         0xC7,      /* S2 */
151
                         0xBA,      /* S3 */
152
                         0xA8,      /* S4 */
153
                         0x91,      /* S5 */
154
                         0x82,      /* S6 */
155
                         0x79,      /* S7 */
156
                         0x73,      /* S8 */
157
                         0x6C,      /* S9 */
158
                         0x60       /* S9 + cca 10dB */
159
                       };
160

  
161

  
162

  
163
// priznaky v promenne flags
164
#define  _DDS_UPDATE   flags,0                     /* pozadavek zmeny kmitoctu DDS */
165
#define  _LCD1_UPDATE  flags,1                     /* pozadavek aktualizace udaje v 1.radku LCD */
166
#define  _LCD2_UPDATE  flags,2                     /* pozadavek aktualizace udaje ve 2. radku LCD */
167
#define  _PAR_UPDATE   flags,3                     /* pozadavek aktualizace vybraneho parametru */
168
#define  _RIT          flags,4                     /* misto kmitoctu zobrazuj RIT */
169
#define  _SPLIT        flags,5                     /* zapnut rezim SPRIT */
170
#define  _TRANSMIT     flags,6                     /* je prepnuto na vysilani */
171
#define  _LED_UPDATE   flags,7                     /* zrcadlo stavu LED */
172
#define  _ENC_CHNG     flags,8                     /* doslo ke zmene polohy korutitka */
173
#define  _TXDELAY      flags,9                     /* bezi spozdeni mezi stiskem klice a zaklicovanim vysilace */
174
#define  _ATTN         flags,10                    /* je zapnuty utlum */
175
#define  _MNU          flags,11                    /* rezim nastavovani hodnoty parametru */
176
#define  _MNU2         flags,12                    /* rezim vyberu parametru */
177
#define  _RUN_VOX      flags,13                    /* bezi  vox timer */
178
#define  _BATT_LOW     flags,14                    /* baterie je vybita */
179
#define  _KEYING       flags,15                    /* je zaklicovan vysilac */
180

  
181
// priznaky promenne keys_flags
182
#define  _KEYS_LONG    keys_flags,0                /* tlacitko stisknuto po dlouhou dobu */
183
#define  _KEYS_VALID   keys_flags,1                /* tlacitka jsou platna */
184
#define  _KEYS_RELEASE keys_flags,2                /* cekej na uvolneni tlacitka = ukonceni reakce na tlacitko */
185

  
186
// priznaky promenne adc_flags
187
#define   _ADC_START   adc_flags,0                 /* spust_prevod */
188

  
189
// priznaky promenne elbug_flags
190
#define  _ELBUG_ON     elbug_flags,0               /* klicovani bude rizeno elbugem */
191
#define  _ELBUG_BSY    elbug_flags,1               /* probiha generovani signalu _ELBUG */
192
#define  _ELBUG_OUT    elbug_flags,2               /* vystup z elbugu */
193
#define  _ELBUG_SP     elbug_flags,3               /* priste vysilej mezeru */
194
#define  _ELBUG_DOT    elbug_flags,4               /* byla stisknuta paka tecek */
195
#define  _ELBUG_DASH   elbug_flags,5               /* byla stisknuta paka carek */
196
#define  _ELBUG_LAST   elbug_flags,6               /* minula stisknuta paka 0=dot 1=dash */
197
#define  _ELBUG_REV    elbug_flags,7               /* reverzni chapani pak */
198
#define  _ELBUG_REAL   elbug_flags,8               /* zapnuto realne klicovani */
199
#define  _ELBUG_ON_TMP elbug_flags,9               /* pro zapamatovani stavu _ELBUG_ON pri nastavovani vykonu */
200

  
201
// konstanta pro odmereni nejmensiho elementu elbugu (tecka nebo tez mezera)
202
#define  ELBUG_CONST    ((60*1000)/(5*5*2))*125    /* 60 - prevod na vteriny */
203
                                                   /* 1000 - prevod na ms    */
204
                                                   /* 5 - prevod WPM na LPM  */
205
                                                   /* 5 - pocet tecek v 1sec pro 200WPM */
206
                                                   /* 2 - zajima nas sirka tecky */
207
                                                   /* 125 - prevodni konstanta pro timer */
208

  
209
#define  PAR_NUM       7                           /* pocet parametru TRXu */
210
// cisla (indexy) parametru TRXu
211
// poradi urcuje poradi ve vyberovem menu
212
// parametry za volnym radkem v menu nejsou, vybiraji se na funkcnich tlacitkach
213
#define  PAR_POWER           0                     /* vykon vysilace */
214
#define  PAR_VOX             1                     /* doba prepnuti zpet na prijem */
215
#define  INF_BATT            2                     /* napeti baterie */
216
#define  PAR_KEYER_REV       3                     /* zap/vyp reverzni chapani pak */
217
#define  PAR_KEYER_MODE      4                     /* doplnkove nebo realne klicovani */
218

  
219
#define  PAR_KEYER           5                     /* rychlost elbugu */
220
#define  PAR_ATTN            6                     /* attenuator */
221

  
222

  
223

  
224
// tabulka mezi pro jednotlive parametry
225
int8 const  PAR_LIMIT[PAR_NUM][2] = {
226
                                      {0,16},      /* vykon ve  0.5w jednotkach */
227
                                      {0,40},      /* meze pro vox  v 50ms jednotkach */
228
                                      {0,0},       /* hodnota napeti baterie */
229
                                      {0,1},       /* meze pro zap/vyp reverzi pak */
230
                                      {0,1},       /* mod klicovani */
231
                                      {5,40},      /* meze pro elbug  ve WPM */
232
                                      {0,3}        /* meze pro attenuator  0,-6,-12 a -18dB */
233
                                    };
234

  
235
// adresy jednotlivych parametru ulozenych v eeprom
236
#define  EE_ADR_POWER         0                    /* BAND_NUM bajtu - pro kazde pasmo jeden bajt */
237
#define  EE_ADR_VOX           BAND_NUM
238
#define  EE_ADR_BATT          EE_ADR_VOX+1
239
#define  EE_ADR_KEYER_REV     EE_ADR_BATT+1
240
#define  EE_ADR_KEYER_MODE    EE_ADR_KEYER_REV+1
241
#define  EE_ADR_KEYER         EE_ADR_KEYER_MODE+1
242
#define  EE_ADR_ATTN          EE_ADR_KEYER+1
243
#define  EE_ADR_CRC           EE_ADR_ATTN+1        /* kontrolni soucet eeprom */
244

  
245
// pole adres parametru ulozenych v eeprom
246
int8  const EE_ADDR[PAR_NUM] = {
247
                           EE_ADR_POWER,
248
                           EE_ADR_VOX,
249
                           EE_ADR_BATT,           // napeti baterie se neuklada, zde je zapsana konstantni hodnota
250
                           EE_ADR_KEYER_REV,
251
                           EE_ADR_KEYER_MODE,
252
                           EE_ADR_KEYER,
253
                           EE_ADR_ATTN
254
                        };
255

  
256

  
257
#define  BATT_MIN       173               // napeti baterie, od ktere se povazuje za vybitou (hodnota z prevodniku pro 10.8V)
258
#define  BAD_PSV        18                // od PSV > 1.8 se omezi vykon
259
#define  PWR_LIM        10                // vykon pri spatnem psv je omezen na 1W
260
#define  PWM_MIN        27                // minimalni hodnota pro PWM2
261
#define  PWM_MAX        157               // maximalni hodnota pro PWM2
262
#define  PWR_HIST_LO    2                 // spodni povolena odchylka od pozadovaneho vykonu v nasobcich 100mW
263
#define  PWR_HIST_HI    1                 // horni povolena odchylka od pozadovaneho vykonu v nasobcich 100mW
264
#define  PWR_FWD_CONST  5600              // prevodni konstatna pro prevod napeti z ADC na vykon
265

  
266

  
267
int8              lcd_pos;                // poloha znaku na LCD pro specialni fce s nazvy xxx_lcd_putc
268
int32             freq_vfo[2];            // pozadovany kmitocet vfoA a vfoB
269
signed int16      freq_rit;               // rozladeni +- pri prijmu
270
signed int8       enc_delta;              // +-pocet impulzu zmeny kroutitka
271

  
272
int8              update_timer;           // periodicky casovac pro aktualizaci kde ceho
273
int8              key_timer;              // casovac pro rozpoznani dlouheho stisku tlacitka
274
int16             vox_timer;              // casovac pro automaticke prepnuti na prijem po urcite dobe bez vysilani
275
int16             vox_time;               // hodnota vox timeru, 0 = plny BK
276
int8              flash_timer;            // pro blikani ledkou pri vybite baterii
277

  
278
int8              keys;                   // obsahuje tlacitka, ktera byla stisknuta (0=klidovy stav)
279
int8              keys_work;              // pro precteni stavu tlacitek v preruseni
280
int8              keys_old;               // predchozi stav tlacitek, pro osetreni zakmitu
281
int8              keyer;                  // obsahuje stav stisknutych pak elbugu
282
int8              keyerb;                 // obsahuje aktualni stav pak elbugu
283

  
284
int1              step_index;             // index do tabulky moznych kroku ladeni
285
int1              vfo_index;              // index do tabulky VFO
286
int8              band_index;             // index do tabulky rozsahu kmitoctu
287

  
288
int16             flags;                  // stavove priznaky pro rizeni programu
289
int16             elbug_flags;            // stavove priznaky pro rizeni elbugu
290
int8              keys_flags;             // stavove priznaky tlacitek
291
int8              adc_flags;              // stavove priznaky pro rizeni ADC
292
int8              par[PAR_NUM];           // parametry TRXu
293
int8              par_index;              // cislo nastavovaneho parametru
294

  
295
int8              adc_ch;                 // citac kanalu ADC
296
int8              adc_val;                // napeti z ADC aktualniho kanalu
297
int8              smtr_val;               // hodnota napeti z ADC odpovidajici S-metru
298
int8              pwr_val;                // hodnota aktualniho vykonu v 100mW jednotkach
299
int8              psv_val;                // hodnota psv v desetinovych jednotkach
300
int8              fwd_val;                // napeti z ADC odpovidajici doprednemu vykonu
301
int8              rev_val;                // napeti z ADC odpovidajici odrazenemu vykonu
302
int8              bnd_val;                // napeti z ADC odpovidajici pasmu
303
int8              batt_val;               // napeti z ADC odpovidajici napeti baterie
304
int8              pwm_val;                // hodnota pro PWM2  - rizeni vykony PA
305
int8              power;                  // pozadovany vykon PA
306
int16             elbug_dot_sp;           // hotnota timeru 1 pro generovani tecky a mezery
307
int16             elbug_dash;             // hordnota timeru1 pro generovani carky
308

  
309

  
310
#bit _T0IF        = 0x0B.2                // priznak preteceni timeru0 - vyuziva se pri spousteni TXDELAY
311
                                          // (vyuziva se pro nej prave timer0) aby byla jistota, ze se TXDELAY
312
                                          // skutecne odmeri
313

  
314
#bit _TMR1IF      = 0x0C.0                // priznak preruseni od timeru 1 - pro vyprovokovani preteceni (start elbugu)
315
// End of File
Designs/HF_TRAMP/FW/V1_6/VFO.C
1
//**********************************************************************
2
//            program pro rizeni TRXu
3
//**********************************************************************
4
// (c) OK1XGL 2005
5
// verze 1.0.0 - uvodni verze
6
// verze 1.0.1 - prechod 16F877 a usazeni sibnalu na porty
7
// verze 1.0.2 = odladeni zakladnich funkci - muzeme delat tistak
8
// verze 1.0.3 - definitivni usazeni signalu - hotovy DPS
9
// verze 1.0.4 - prvni pouzitelna verze
10
// verze 1.1.0 - SIGNAL ATN1 PRESUNUT NA RE0 A SIGNAL ATN2 PRESUNUT NA RC0 !!!!!
11
// verze 1.2.0 - doprobramovan jednopakovy klic
12
// verze 1.3.0 - elbug zmenen na dvoupakovy a cely presunut do preruseni
13
// verze 1.4.0 - po zapnuti se RX naladi na QRP kmitocet na danem pasmu
14
//             - PSV se povazuje za platne jen kdyz je skutecne zaklicovano
15
// verze 1.5.0 - upraven zpusob cteni dat z AD prevodniku
16
//             - pwm rozsirena na 157 kroku
17
//             - doplneno ALC pro vykon a nastaveni vykonu v 0.5W jednotkach
18
// verze 1.6.0 - provedena kalibrace S-metru
19

  
20

  
21
// Poznamky:
22
// zobrazeni kmitoctu na LCD trva 30ms !!!
23
// pri rychlosti klicovani 200zn/s je sirka impulzu (tecka) cca 30ms
24
// timer2 vyhrazen na generovani tonu a ma nastaven kmitocet 800Hz, ton se generuje PWM, rizeni vykonu tez PWM 800Hz je baze
25
// timer 1 vyhrazen pro elbug
26

  
27

  
28
//DODELAT: - pri BK provozu je treba, aby se pri prepnuti na prjem mezi elementy znacky nezobrazoval S-metr, protoze
29
//           se to tak rychle nestiha zobrazovat a je lepsi,aby se zobrazovalo stale psv a vykon. Nyni je toho dosazeno tak,
30
//           ze pokud je aktivni elbug, tak se zobrazeni nedela ovsem toto reseni nebude fungovat pri externim elbugu
31
//           spravne reseni je timerem, ktery bude vykryvat cas mezi znackami
32
//         - projit kod a nektere veci ucesat
33

  
34

  
35

  
36
#include "vfo.h"
37
#include <lcd.c>
38

  
39

  
40
//#define  ADC_LCD             // misto obvyklych udaju zobrazuje hodnoty AD prevodniku
41
//#define  NO_FILTER_CONTROL     // vyrazuje prubeznou kontrolu pritomnosti filtru pro prislusne pasmo
42

  
43

  
44
/////////// FUNKCE PRO ZOBRAZOVANI NA LCD /////////
45

  
46
// podpora zobrazeni RIT
47
// POZOR: pred pouzitim je nutno vynulovat promennou lcd_pos !!!
48
void rit_lcd_putc(int8 c)
49
{
50
 lcd_pos++;
51
 if(lcd_pos==2) lcd_putc('.');  // prida tecku za KHZ
52
 lcd_putc(c);
53
} // rit_lcd_putc
54

  
55

  
56

  
57
// podpora zobrazeni kmitoctu VFO
58
// POZOR: pred pouzitim je nutno vynulovat promennou lcd_pos !!!
59
void vfo_lcd_putc(int8 c)
60
{
61
  lcd_pos++;
62
  // za MHz dopln pismenko VFO
63
  if(lcd_pos==3)
64
   if(vfo_index)
65
     if(bit_test(_SPLIT)) lcd_putc('\21');   // vyplnene  b
66
     else lcd_putc('b');
67
   else if(bit_test(_SPLIT)) lcd_putc('\22'); // vyplnene a
68
        else lcd_putc('a');
69
   // za KHz dopln tecku
70
   if(lcd_pos==6)
71
      if(step_index) lcd_putc(':');            // hrube ladeni
72
      else lcd_putc('.');                      // jemne ladeni
73
  lcd_putc(c);
74
} //vfo_lcd_putc
75

  
76

  
77
// podpora zobrazeni vykonu a psv
78
// POZOR: pred pouzitim je nutno vynulovat promennou lcd_pos !!!
79
void pwr_lcd_putc(int8 c)
80
{
81
  lcd_pos++;
82
  if(lcd_pos==2) lcd_putc('.');
83
  lcd_putc(c);
84
} // pwr_lcd_putc
85

  
86

  
87

  
88
// podpora zobrazeni napeti baterie
89
// POZOR: pred pouzitim je nutno vynulovat promennou lcd_pos !!!
90
void batt_lcd_putc(int8 c)
91
{
92
  lcd_pos++;
93
  if(lcd_pos==3) lcd_putc('.');
94
  lcd_putc(c);
95
} // batt_lcd_putc
96

  
97

  
98

  
99

  
100
/////////// FUNKCE PRO PRACI S DDS /////////
101

  
102
// odesle 16 bitovy zaznam do DDS
103
//
104
void dds_send(int16 record)
105
{
106
 int8 i;
107
#use fast_io(A)
108
#use fast_io(B)
109
#use fast_io(C)
110
#use fast_io(D)
111

  
112
  output_low(DDS_FSYNC);               // zacatek komunikace s DDS
113
  i=16;
114
  do
115
  {
116
   if(bit_test(record,15)) output_high(DDS_SDATA); // vystav datovy bit, zaciname MSB
117
    else output_low(DDS_SDATA);
118
   output_low(DDS_SCK);                // hodinovy impulz
119
   output_high(DDS_SCK);
120
   record=record<<1;                   // na dalsi bit
121
  } while(--i);
122

  
123
  output_high(DDS_FSYNC);              // konec komunikace s DDS
124
#use standard_io(A)
125
#use standard_io(B)
126
#use standard_io(C)
127
#use standard_io(D)
128
} // dds_send
129

  
130

  
131

  
132

  
133
// naplni registr0  pro kmitocet v DDS (28 bitu)
134
//
135
void dds_freq0(int32 freq)
136
{
137
  int16 record;
138

  
139
  // posli ridici slovo
140
  dds_send(CTRL_FREQ0);
141

  
142
  // zapis pozadovane frekvence
143
  // zapis LSB
144
  record=(int16)freq;
145
  bit_set(record,14);             // zapis do frekvencniho registru 0
146
  bit_clear(record,15);
147
  dds_send(record);
148
  // zapis MSB
149
  record=(int16)((freq<<2)>>16);  // divny zapis, ale >> 14 dava hrozny vysledek
150
  bit_set(record,14);             // zapis do frekvencniho registru 0
151
  bit_clear(record,15);
152
  dds_send(record);
153
} // dds_freq0
154

  
155

  
156

  
157
/////////// FUNKCE PRO RIZENI PRIPOSLECHU /////////
158

  
159
// vypne generovani tonu priposlechu
160
//
161
#inline
162
void tone_off()
163
{
164
 int8 a;
165
  a=input(TONE);
166
} // tone_off()
167

  
168

  
169

  
170
// zapne generovani tonu priposlechu
171
//
172
#inline
173
void tone_on()
174
{
175
  output_low(TONE);
176
} // tone_on
177

  
178

  
179

  
180

  
181
/////////////////////////////////
182
//   Prerusovaci rutiny
183
/////////////////////////////////
184
// rezie preruseni je cca 30+30 cyklu
185

  
186
// preruseni od zmeny polohy kroutitka
187
#int_EXT
188
void Encoder_handler()
189
{
190
#use fast_io(a)
191
#use fast_io(b)
192
#use fast_io(c)
193
#use fast_io(d)
194

  
195

  
196
 int1 dir;
197

  
198
 dir=input(ENCODER_DIR);             // zapamatuj si smer krouceni
199
 bit_set(_ENC_CHNG);                 // oznam zmenu polohy kroutitka
200
 if(dir) enc_delta++;                // pridej
201
 else enc_delta--;                   // uber
202

  
203
#use standard_io(a)
204
#use standard_io(b)
205
#use standard_io(c)
206
#use standard_io(d)
207
} // Encoder_handler
208

  
209

  
210

  
211
// periodicke tiky, granularita TICK_TIME
212
// citace/ casovace se granularitou TICK_TIME
213
#INT_TIMER0
214
void Tick_handler()
215
{
216
#use fast_io(a)
217
#use fast_io(b)
218
#use fast_io(c)
219
#use fast_io(d)
220

  
221
  set_timer0(TICK_TIME);          // znovu natahni timer
222

  
223
  // mereni napeti z prevodniku
224
  if(bit_test(_ADC_START))
225
  {
226
    read_adc(ADC_START_ONLY);     // spust prevod
227
    bit_clear(_ADC_START);        // priste budeme cist vysledek
228
  } else
229
    {
230
      adc_val=read_adc(ADC_READ_ONLY);       // vyzvedni vysledek
231

  
232
      if(bit_test(_KEYING))       // hodnoty vykonu aktualizuj jen pokud je zaklicovano
233
      {
234
        if(adc_ch==1) fwd_val=adc_val;
235
        if(adc_ch==0) rev_val=adc_val;
236
      }
237
      if(adc_ch==2) batt_val=adc_val;
238
      else if(adc_ch==3) smtr_val=adc_val;
239
      else if(adc_ch==4) bnd_val=adc_val;
240
      if(adc_ch>=4) adc_ch=0;     // mame 5 kanalu
241
       else adc_ch++;
242
      set_adc_channel(adc_ch);    // priste nasledujici kanal
243
      bit_set(_ADC_START);        // priste budeme spoustet prevod
244
    }
245

  
246
  // klicovani
247
  if(bit_test(_TXDELAY))          // jen pokud tx_delay vyprsel
248
  {
249
    if(!bit_test(_ELBUG_ON))
250
      keyer=(~input_b()) & 0b10000000;  // pokud neni zapnut elbug, zavzorkuj stav klice
251

  
252
    if((keyer!=0 && !bit_test(_ELBUG_ON)) ||            // pri vypnutem elbugu rizeno stavem pak
253
       (bit_test(_ELBUG_OUT) && bit_test(_ELBUG_ON)))   // pri zapnutem elbugu rizeno stavem _ELBUG_ON
254
     {
255
       // zaklicuj
256
       output_high(KEYING);
257
       tone_on();
258
       bit_clear(_RUN_VOX);
259
       bit_set(_KEYING);
260
       adc_ch=0;                   // zacneme merit dopredny vykon
261
       set_adc_channel(adc_ch);
262
       bit_set(_ADC_START);        // priste spustime prevod ADC
263
     } else
264
       {
265
         // prestan klicovat
266
         output_low(KEYING);
267
         vox_timer=vox_time;        // natahni vox_timer
268
         bit_set(_RUN_VOX);
269
         tone_off();
270
         bit_clear(_KEYING);
271
       }
272
    bit_clear(_TXDELAY);
273
  }
274

  
275

  
276
  // periodicky timer na aktualizaci kde ceho
277
  if(update_timer==0xFF) update_timer=UPDATE_TIME;
278
  else update_timer--;
279

  
280
  // vox timer
281
  if(bit_test(_RUN_VOX))
282
   if(vox_timer!=0) vox_timer--;
283
   else
284
   {
285
     // vox vyprsel
286
     bit_clear(_RUN_VOX);
287
     output_low(RXTX);          // prepni zpet na prijem
288
     bit_clear(_TRANSMIT);
289
     bit_set(_DDS_UPDATE);
290
   }
291

  
292
  // timer pro zjisteni dlouheho stisku tlacitek
293
  if(key_timer!=0) key_timer--;
294

  
295

  
296
  // periodicke cteni tlacitek
297
  #use fast_io(C)
298
  keys_work=(~input_c()) & KEY_MASK;               // precti stav tlacitek
299
  #use standard_io(C)
300
  if(keys_work!=keys_old) keys_old=keys_work;      // neshoda zapamatuj si novy stav
301
  else
302
  {
303
    // shoda
304
    if(keys_work!=0)
305
    {
306
      // tlacitko je STISKNUTO
307
      if(keys==0)
308
      {
309
        // akceptujeme jen pokud bylo zpracovano vse predchozi
310
        keys=keys_work;                // zapamatuj si nove tlacitko
311
        key_timer=KEY_LONG;            // natahni casovac pro zjisteni dlouheho stisku
312
      } else
313
        {
314
          // neco je jeste ke zpracovani
315
          if(key_timer==0 && !bit_test(_KEYS_RELEASE))
316
          {
317
            // jde o dlouhy stisk tlacitka
318
            bit_set(_KEYS_LONG);
319
            bit_set(_KEYS_VALID);
320
          }
321
        }
322
    } else
323
      {
324
         // tlacitko je UVOLNENO
325
         if(key_timer!=0)
326
         {
327
           // jde o kratky stisk tlacitka
328
           bit_set(_KEYS_VALID);
329
           key_timer=0;
330
         } else if(bit_test(_KEYS_RELEASE))
331
                {
332
                  keys_flags=0;  // jde o klidovy stav - tlacitka zpracovana
333
                  keys=0;
334
                }
335
      }
336
  }
337

  
338
#use standard_io(a)
339
#use standard_io(b)
340
#use standard_io(c)
341
#use standard_io(d)
342
} // Tick_handler
343

  
344

  
345

  
346

  
347
// periodicke tiky kazdych 5ms
348
// vyuzito pro rizeli LCD_LED
349
//
350
#INT_TIMER2
351
void led_handler()
352
{
353
#use fast_io(a)
354
#use fast_io(b)
355
#use fast_io(c)
356
#use fast_io(d)
357

  
358

  
359
 flash_timer++;
360

  
361
   // rizeni LED
362
   // pri prijmu bez attenuatoru sviti zelena
363
   // pri prijmu s attenuatorem sviti zluta
364
   // pri vysilani sviti cervena
365
   // pri vybite baterii pri prijmu led blika
366

  
367

  
368
   if(bit_test(_TRANSMIT))
369
   {
370
     // vysilani - rozsvid cervenou LED
371
     if(bit_test(_LED_UPDATE)) output_high(LCD_LED1);
372
     else output_low(LCD_LED1);
373
     output_low(LCD_LED2);
374
   } else
375
     {
376
       if(bit_test(_BATT_LOW) && bit_test(flash_timer,7))
377
       {
378
         // zhasni led
379
         output_low(LCD_LED1);
380
         output_low(LCD_LED2);
381
       } else
382
         {
383
          // prijem - rozsvid zelenou nebo zlutou led
384
          if(bit_test(_LED_UPDATE))
385
          {
386
            output_high(LCD_LED2);
387
            output_low(LCD_LED1);
388
          } else
389
            {
390
             output_low(LCD_LED2);
391
             if(bit_test(_ATTN)) output_high(LCD_LED1);
392
             else output_low(LCD_LED1);
393
            }
394
         }
395
     }
396

  
397
   if(bit_test(_LED_UPDATE)) bit_clear(_LED_UPDATE);
398
   else bit_set(_LED_UPDATE);
399

  
400
#use standard_io(a)
401
#use standard_io(b)
402
#use standard_io(c)
403
#use standard_io(d)
404
} // led_handler
405

  
406

  
407

  
408

  
409
//  cteni pak, klice
410
#INT_RB
411
void paddle_handler()
412
{
413
#use fast_io(a)
414
#use fast_io(b)
415
#use fast_io(c)
416
#use fast_io(d)
417

  
418
  keyerb=(~input_b());                     // precti stav pak
419
  if(bit_test(_ELBUG_ON)) keyerb=keyerb & 0b11000000;    // platne jsou obe paky
420
  else keyerb=keyerb & 0b10000000;         // platna je paka tecek
421

  
422
  if(!bit_test(_TXDELAY))                  // reagujeme jen kdyz nebezi TXDELAY
423
  {
424
    if(!bit_test(_ELBUG_ON))
425
    {
426
      // RUCNI KLICOVANI
427
      set_timer0(TICK_TIME);               // txdelay je dano jednim zakladnim tikem, natahni tik
428
      _T0IF=0;
429
      bit_set(_TXDELAY);                   // spustime TXDELAY
430
    } else
431
      {
432
        // ELBUG
433
        // nastav priznaky pak
434
        if(bit_test(_ELBUG_REV))
435
        {
436
          if(bit_test(keyerb,6)) bit_set(_ELBUG_DOT);
437
          if(bit_test(keyerb,7)) bit_set(_ELBUG_DASH);
438
        } else
439
          {
440
            if(bit_test(keyerb,7)) bit_set(_ELBUG_DOT);
441
            if(bit_test(keyerb,6)) bit_set(_ELBUG_DASH);
442
          }
443
        if(!bit_test(_ELBUG_BSY))
444
        {
445
          // spusteni elbugu
446
          setup_timer_1(T1_INTERNAL | T1_DIV_BY_8);      // spust casovac
447
          _TMR1IF=1;
448
        }
... This diff was truncated because it exceeds the maximum size that can be displayed. :@created_atf1426004825.3684919•_:@expires_in0