OVLADAC RADIOAMATERSKEHO PREVADECE OK 0 BT
' V 0.9 OK2IZS 1998 05.01.1998
' definice vstupu/vystupu
DTMF VAR INA
DTIN VAR IN4
PLAY CON 8
REC CON 5
REC1 CON 7
PLAY1 CON 13
TOUT CON 9
TX CON 13
SQ VAR IN6
TERM CON 12
' nastaveni vstupu/vystupu
HIGH REC
HIGH PLAY
LOW TX
HIGH PLAY1
HIGH REC1
HIGHPLAY2
HIGH REC1
HIGH PLAY1
' inicializace promennych
X1 VAR BYTE
X2 VAR NIB
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
UVO 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
'1 Vyckavaci sekce + prodleva 100 ms
KLID:
X1 = 0
IDENT = 0
LOW TX
GOSUB ZAB
IF SQ = 1 THEN KLID
K1:
X1 = X1 + 1
PAUSE 10
IF X1 > 10 THEN START1
IF X1 > 500 THEN START
IF SQ = 0 THEN K1
GOTO KLID
START1:
IF SQ = 0 THEN START1
X1 = 0
'2 Start prevadece
START:
HIGH TX
PAUSE 500
GOSUB MHLASKA
GOTO CSIGNAL
'3 Pritomnost signalu
SIGNAL:
IF SQ = 1 THEN NSIGNAL
IDENT = IDENT + 1
IF IDENT > 1500 THEN MHLASKA
GOSUB ZAB
PAUSE 50
IF DTIN = 0 THEN SIGNAL
'DEBUG DEC DTMF
GOTO DTMFIN
NSIGNAL:
X1 = 0
NSIG1:
IF SQ = 0 THEN SIGNAL
X1 = X1 + 1
PAUSE 10
IF X1 < 30 THEN NSIG1
FREQOUT TOUT,80,1500
X1 = 0
CSIGNAL:
IF SQ = 0 THEN SIGNAL
X1 = X1 + 1
IDENT = IDENT + 1
IF IDENT > 1500 THEN MHLASKA
PAUSE 50
GOSUB ZAB
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
GOSUB ZAB
PAUSE 400
FREQOUT TOUT,50,1500
X1 = X1 + 1
IF X1 < 6 THEN ENDSEK
LOW TX
' opetovne zapnuti
X1 = 0
OZ1:
IF SQ = 0 THEN SIGNAL1
X1 = X1 + 1
PAUSE 100
IF X1 < 100 THEN OZ1
GOTO KLID
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 1
IF X1 > 1500 THEN SIGNAL
IF SQ = 0 THEN DT33
IF DTMF <> 12 THEN DT4
GOTO SYSA9
DT4:
IF PBLOK = 1 THEN OBSAZ
BRANCH DTMF,[SIGNAL,OPAKOVAC,SIGNAL,TEPLOTA,TEPLOTA]
' GOSUB HALALI
GOTO OBSAZ
GOTO SIGNAL
'6 KVT
OBSAZ:
X1 = 0
IF SQ = 0 THEN OBSAZ
PAUSE 1000
FOR X1 = 0 TO 4
FREQOUT TOUT,300,425
PAUSE 200
NEXT
PAUSE 500
GOTO SIGNAL
HALALI:
X1 = 0
IF SQ = 0 THEN HALALI
PAUSE 1000
' FOR X1 = 0 TO 2
FREQOUT TOUT,300,1200
FREQOUT TOUT,300,1500
FREQOUT TOUT,500,1800
PAUSE 500
' NEXT
PAUSE 100
RETURN
' mereni teploty
TEPLOTA:
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 2000
HIGH TERM
PAUSE 1
RCTIME TERM,1,POT
LOW TERM
IF POT < 62 THEN MINUSTEPLOTA
POT = POT - 62
C1 = POT / 10
C2 = POT - (C1 * 10)
PAUSE 700
DTMFOUT TOUT,100,50,[0,0,0,10,0,C1,C2]
GOTO SIGNAL
MINUSTEPLOTA:
POT = POT + 100
POT = POT - 63
POT = 100 - POT
C1 = POT / 10
C2 = POT - (C1 * 10)
PAUSE 700
DTMFOUT TOUT,100,50,[0,0,0,10,8,C1,C2]
GOTO SIGNAL
' zkouska modulace - opakovac
OPAKOVAC:
ERROR = 0
OPAKERROR:
IF ERROR = 20 THEN CSIGNAL
IF SQ = 1 THEN OPAKOVAC1A
PAUSE 100
ERROR = ERROR + 1
GOTO OPAKERROR
OPAKOVAC1A:
X1 = 0
X3 = 0
IF SQ = 0 THEN OPAKOVAC1A
PAUSE 1000
FREQOUT TOUT,300,1400
PAUSE 100