OVLADAC RADIOAMATERSKEHO PREVADECE OK 0 BT
' V 1.0 OK2IZS 1999 17.02.1998
' definice vstupu/vystupu
DTMF VAR INA
DTIN VAR IN4
PLAY CON 8
REC CON 5
SQ2 VAR IN15
VENT CON 12
TOUT CON 9
TX CON 13
SQ VAR IN6
TERM1 CON 11
TERM2 CON 14
N CON 10
K CON 7
' nastaveni vstupu/vystupu
HIGH REC
HIGH PLAY
LOW TX
LOW VENT
PTT = 0
LOW N
LOW K
' inicializace promennych
X1 VAR BYTE
X2 VAR BYTE
X3 VAR BYTE
X4 VAR WORD
X5 VAR BYTE
X6 VAR BYTE
C1 VAR BYTE
C2 VAR BYTE
AKTIVACE VAR BIT
FON VAR NIB
FON1 VAR BIT
DOBA VAR BYTE
BUT VAR BYTE
PBLOK VAR BIT
PTT VAR BYTE
POT VAR WORD
IDENT VAR WORD
ERROR VAR BYTE
READ 4,PBLOK
' READ 1,AKTIVACE
' promenne pro podprogram MORSE
TONE CON 1500
QUIET CON 0
DIT_LENGHT CON 33
DAH_LENGHT CON 100
WRD_LENGHT CON 240
CHARACTER VAR BYTE
INDEX1 VAR BYTE
INDEX2 VAR BYTE
ELEMENTS VAR BYTE
'0 oznameni zapnuti napajeni
X1= 0
PAUSE 5000:READ 19,X1
IF X1= 0 THEN KLID
HIGH TX:PAUSE 1000
FREQOUT TOUT,70,1530:FREQOUT TOUT,70,2200:FREQOUT TOUT,70,1400
FREQOUT TOUT,70,2200:FREQOUT TOUT,70,1060
FREQOUT TOUT,70,2000:FREQOUT TOUT,70,1060
PAUSE 500
GOSUB MHLASKA:PAUSE 500
X1 = 2
GOTO ENDSEK
'1 Vyckavaci sekce + prodleva 100 ms
KLID:
X1 = 0
LOW TX
PTT = 0
IDENT = 0
LOW N
KLID1:
IDENT = IDENT + 1
IF SQ = 0 THEN K1
IF IDENT < 1000 THEN KLID1
GOSUB ZAB
GOTO KLID
K1:
IDENT = 0
X1 = X1 + 1
PAUSE 10
IF X1 > 10 THEN START1
IF SQ = 0 THEN K1
GOTO KLID
START1:
IF SQ = 0 THEN START1
'2 Start prevadece
START:
HIGH TX
PTT = 1
HIGH VENT
PAUSE 500
GOSUB MHLASKA
GOTO CSIGNAL
'3 Pritomnost signalu
SIGNAL:
IF SQ = 1 THEN NSIGNAL
IDENT = IDENT + 1
IF IDENT > 1500 THEN SIG111
PAUSE 50
IF DTIN = 0 THEN SIGNAL
GOTO DTMFIN
NSIGNAL:
X1 = 0
NSIG1:
IF SQ = 0 THEN SIGNAL
X1 = X1 + 1
PAUSE 10
IF X1 < 30 THEN NSIG1
GOSUB ZAB
FREQOUT TOUT,80,1500
X1 = 0
CSIGNAL:
IF SQ = 0 THEN SIGNAL
X1 = X1 + 1
IDENT = IDENT + 1
IF IDENT > 1500 THEN SIG111
PAUSE 50
IF X1 < 200 THEN CSIGNAL
X1 = 0
'4 Vypadnuti prevadece + pipani
IF SQ = 0 THEN SIGNAL
PAUSE 400
X1 = 0
ENDSEK:
IF SQ = 0 THEN SIGNAL
PAUSE 400
FREQOUT TOUT,50,1500
X1 = X1 + 1
IF X1 < 6 THEN ENDSEK
' opetovne zapnuti
OZ:
LOW TX:PAUSE 500
GOSUB ZAB
WRITE 3,1
X1 = 0
OZ1:
IF SQ = 0 THEN SIGNAL1
X1 = X1 + 1
PAUSE 100
IF X1 < 100 THEN OZ1
IF X5 = 0 THEN KLID
HIGH TX
PAUSE 500
GOSUB MHHH
PAUSE 100
' GOTO POMA0
SIGNAL1:
HIGH TX
GOTO SIGNAL
'5 Prvni uroven nacteni DTMF
DTMFIN:
X1 = 0
DT1:
IF DTIN = 0 THEN DT2
PAUSE 10
X1 = X1 + 1
GOTO DT1
DT2:
IF X1 > 20 THEN DT3
GOTO SIGNAL
DT3:
X1 = 0
DT33:
X1 = X1 + 1
PAUSE 10
IF X1 > 150 THEN SIGNAL
IF SQ = 0 THEN DT33
'DEBUG "DTMF= ",DEC DTMF
IF DTMF <> 11 THEN DT4
PAUSE 1000
FREQOUT TOUT,500,1500
GOTO SYSOP
DT4:
'DEBUG "PBLOK= ",DEC PBLOK
IF PBLOK = 1 THEN OBSAZ
BRANCH DTMF,[SIGNAL,OPAKOVAC,OPMOD,TEPLOTA11,TEPLOTA12,PROPOJA,PROPOJB]
GOTO OBSAZ
'6 KVT
OBSAZ:
IF SQ = 0 THEN OBSAZ
PAUSE 1000
FOR X1 = 0 TO 3
FREQOUT TOUT,300,425
PAUSE 200
NEXT
PAUSE 2
GOTO SIGNAL
' mereni teploty
TEPLOTA11:
C1 = 0
C2 = 0
ERROR = 0
TPERR:
IF ERROR = 20 THEN CSIGNAL
IF SQ = 1 THEN TEPLOTA1A
PAUSE 100
ERROR = ERROR + 1
GOTO TPERR
TEPLOTA1A:
PAUSE 1000
FREQOUT TOUT,300,1400
PAUSE 1000
HIGH TERM1
PAUSE 1
RCTIME TERM1,1,POT
LOW TERM1
IF POT < 160 THEN MINUSTEPLOTA
POT = POT - 160
C1 = POT / 10
C2 = POT - (C1 * 10)
PAUSE 700
DTMFOUT TOUT,100,50,[0,0,0,10,1,0,C1,C2]
'DEBUG " TEPLOTA 1= ",DEC C1
'DEBUG DEC C2
'DEBUG " "
GOTO SIGNAL
MINUSTEPLOTA:
POT = POT + 100
POT = POT - 160
POT = 100 - POT