Pozdravljeni!
Da ne odpiram podobne teme bi vprašal kar tukaj. Rad bi si vprogramiral v Iskrino radijsko postajo PTR-100 en kanal (samo eno frekvenco). Npr. kanal 1 naj bi imel simplex frekvenco 144000MHz - torej sprejemna in oddajna frekvenca je ista . Program za radioamaterske frekvence (duplex in simplex) sem našel na tem forumu na tej povezavi
http://lea.hamradio.si/~andrej/ptr100/ptr100.html , vendar je program napisan za 100 kanalov, ki jih pa ne potrebujem.
Ker nisem ravno kakšen strokovnjak v programiranju bi lepo prosil nekoga, ki se razume na programiranje, da bi mi malce priredil program za izdelavo vsebine EPROMA tako, da bi si vpisal na kanal 1 samo eno simplex ferkvenco 144000MHz.
Zanima me še, od kje so dobljene posamezne vrednosti v programu (obarvano RDEČE)
Prilagam program za izdelavo vsebine EPROMA za PTR 100.
Iskrena hvala že vnaprej!!!
program PTR100_EPROM;
{********************************************************************}
{* *}
{* Program naredi vsebino EPROMa za PTR100 radijsko postajo. *}
{* *}
{* (c) Andrej Souvent, andrej@lea.hamradio.si V1.1 15.02.1998 *}
{* *}
{********************************************************************}
uses Crt;
const ROMTOP=2047; {velikost EPROMa}
TXF=1; {oddajna frekvenca}
RXF=0; {sprejemna frekvenca}
KORAK=25; {frekvencni korak v kHz}
type
image = array[0..ROMTOP] of byte;
var
rx,tx, SHIFT : longint;
kanal,bacd,i : integer;
Atx,Btx,Ctx,Dtx : string;
Arx,Brx,Crx,Drx : string;
rom : image;
data : file of image;
porocilo : text;
{********************************************************************}
function hex(I: byte):string;
const hex_numbers : string[16] = '0123456789ABCDEF';
begin
hex := hex_numbers [(I shr 4) + 1]
+ hex_numbers [(I and $0F) + 1];
end;
{********************************************************************}
function bajt(crka:string):byte;
begin
if crka[1] in ['A','B','C','D','E','F'] then
bajt:=ord(crka[1])-55
else
bajt:=ord(crka[1])-48;
end;
{********************************************************************}
{* Procedura pretvori frekvenco v kHz v ustrezne hex kode A,B,C,D *}
{********************************************************************}
procedure abcd(f : longint;
var a : string;
var b : string;
var c : string;
var d : string);
var
kHz,MHz,fq,kfq : longint;
dc,ba : string;
begin
MHz := f div 1000;
kHz := f mod 1000;
(kHz - 500) >= 0 then
begin
fq := MHz * 1000 + 500;
kfq:= kHz - 500;
end
else
begin
fq := MHz * 1000;
kfq:= kHz;
end;
dc:=hex(((fq-[color=#FF0000]122000) div 500) + 76);
ba:=hex((kfq div 25) * 2);
a:=copy(ba,2,1);
b:=copy(ba,1,1);
c:=copy(dc,2,1);
d:=copy(dc,1,1);
end;
{********************************************************************}
{*** Funkcija izracuna naslov v EPROMU za dolocen kanal. ***}
{********************************************************************}
function naslov(rxtx,kanal,bacd:integer):longint;
var desetice,enice :integer;
begin
desetice := kanal div 10;
enice := kanal mod 10;
naslov := rxtx*1024+desetice*64+bacd*16+enice;
end;
{******************}
{* Glavni program *}
{******************}
begin
clrScr;
{ najprej $FF v cel ROM }
for i:=0 to ROMTOP do rom[i]:=255;
{********************}
{* Zanke po kanalih *}
{********************}
assign(porocilo,'PTRROM.TXT');
rewrite(porocilo);
{**************************************************}
{*** Kanali od 0 do 9: R0 - R9 / SHIFT -600 kHz ***}
{**************************************************}
tx:=145000; { zacetna oddajna frekvenca }
SHIFT:=600; { zamik za dupleks delo }
for kanal:=0 to 9 do
begin
rx:=tx+SHIFT-21400; { sprejemna frekvenca - IF }
writeln(kanal,' - ',tx,' / ',rx+21400);
writeln(porocilo,kanal,' - ',tx,' / ',rx+21400);
abcd(rx,Arx,Brx,Crx,Drx);
abcd(tx,Atx,Btx,Ctx,Dtx);
rom[naslov(RXF,kanal,0)]:= bajt(Brx); {B} {RX}
rom[naslov(RXF,kanal,1)]:= bajt(Arx); {A}
rom[naslov(RXF,kanal,2)]:= bajt(Crx); {C}
rom[naslov(RXF,kanal,3)]:= bajt(Drx); {D}
rom[naslov(TXF,kanal,0)]:= bajt(Btx); {B} {TX}
rom[naslov(TXF,kanal,1)]:= bajt(Atx); {A}
rom[naslov(TXF,kanal,2)]:= bajt(Ctx); {C}
rom[naslov(TXF,kanal,3)]:= bajt(Dtx); {D}
tx:=tx+KORAK; { korak po 25 kHz}
end; {for}
{******************************************************}
{*** Kanali od 10 do 19: VR0 - VR9 / SHIFT +600 kHz ***}
{******************************************************}
tx:=145600; { zacetna oddajna frekvenca }
SHIFT:=-600; { zamik za dupleks delo }
for kanal:=10 to 19 do
begin
rx:=tx+SHIFT-21400; { sprejemna frekvenca - IF }
writeln(kanal,' - ',tx,' / ',rx+21400);
writeln(porocilo,kanal,' - ',tx,' / ',rx+21400);
abcd(rx,Arx,Brx,Crx,Drx);
abcd(tx,Atx,Btx,Ctx,Dtx);
rom[naslov(RXF,kanal,0)]:= bajt(Brx); {B} {RX}
rom[naslov(RXF,kanal,1)]:= bajt(Arx); {A}
rom[naslov(RXF,kanal,2)]:= bajt(Crx); {C}
rom[naslov(RXF,kanal,3)]:= bajt(Drx); {D}
rom[naslov(TXF,kanal,0)]:= bajt(Btx); {B} {TX}
rom[naslov(TXF,kanal,1)]:= bajt(Atx); {A}
rom[naslov(TXF,kanal,2)]:= bajt(Ctx); {C}
rom[naslov(TXF,kanal,3)]:= bajt(Dtx); {D}
tx:=tx+KORAK; { korak po 25 kHz}
end; {for}
{********************************************************}
{*** Kanali od 20 do 99: od 144000kHz po 25kHz naprej ***}
{********************************************************}
tx:=144000; { zacetna oddajna frekvenca }
SHIFT:=0; { zamik za dupleks delo }
for kanal:=20 to 99 do
begin
rx:=tx-21400; {zacetna sprejemna frekvenca } writeln(kanal,' - ',tx,' / ',rx+21400);
writeln(porocilo,kanal,' - ',tx,' / ',rx+21400);
abcd(rx,Arx,Brx,Crx,Drx);
abcd(tx,Atx,Btx,Ctx,Dtx);
rom[naslov(RXF,kanal,0)]:= bajt(Brx); {B} {RX}
rom[naslov(RXF,kanal,1)]:= bajt(Arx); {A}
rom[naslov(RXF,kanal,2)]:= bajt(Crx); {C}
rom[naslov(RXF,kanal,3)]:= bajt(Drx); {D}
rom[naslov(TXF,kanal,0)]:= bajt(Btx); {B} {TX}
rom[naslov(TXF,kanal,1)]:= bajt(Atx); {A}
rom[naslov(TXF,kanal,2)]:= bajt(Ctx); {C}
rom[naslov(TXF,kanal,3)]:= bajt(Dtx); {D}
tx:=tx+KORAK; { korak po 25 kHz}
end; {for}
{ *** zapis vsebine eprom-a v datoteko *** }
assign(data,'PTRROM.BIN');
rewrite(data);
write(data,rom);
close(data);
close(porocilo);
writeln;
writeln('EPROM image -> PTRROM.BIN');
writeln('Vsebina kanalov -> PTRROM.TXT');
writeln;writeln;writeln;
end.[/color]