z tego kodu nic nie rozumie
O wiele prościej by było gdyby były opisu przy poszczególnych liniach.
$crystal = 11059000
$baud = 9600
'
'******************************************************************************
'
Dim X As Byte
Dim C As Byte
Dim V As Byte
Dim H As Byte
Dim Eror As Byte
Dim Znak As Byte
'
Dim M1 As Byte
Dim M2 As Byte
Dim H1 As Byte
Dim H2 As Byte
Dim D1 As Byte
Dim D2 As Byte
Dim Me1 As Byte
Dim Me2 As Byte
Dim R1 As Byte
Dim R2 As Byte
'
Dim Dm1 As Byte
Dim Dm2 As Byte
Dim Dh1 As Byte
Dim Dh2 As Byte
Dim Dd1 As Byte
Dim Dd2 As Byte
Dim Dme1 As Byte
Dim Dme2 As Byte
Dim Dr1 As Byte
Dim Dr2 As Byte
'
'******************************************************************************
'
' display 2x16
Config Lcdpin = Pin , Db4 = P1.3 , Db5 = P1.2 , Db6 = P1.1 , Db7 = P1.0 , E = P3.4 , Rs = P3.5
Config Lcd = 16 * 2
' input
Dcf77 Alias P1.7 'input module DCF-77
'
'******************************************************************************
'
Inic:
Eror = 0
Cls
Locate 1 , 1
Lcd "Time Date"
Cursor Off
'm1 = 0 : M2 = 0 : H1 = 0 : H2 = 0 : D1 = 0 : D2 = 0
'Me1 = 0 : Me2 = 0 : R1 = 0 : R2 = 0
Dm1 = 0 : Dm2 = 0 : Dh1 = 0 : Dh2 = 0 : Dd1 = 0 : Dd2 = 0
Dme1 = 0 : Dme2 = 0 : Dr1 = 0 : Dr2 = 0
C = 100
'
Zacatek:
D99:
X = 0
If Dcf77 = 1 Then Goto D0
Goto D99
'
D0:
X = 0
If Dcf77 = 0 Then Goto D1
Goto D0
'
D1:
Waitms 10
X = X + 1
If Dcf77 = 1 Then Goto D2
Goto D1
'
D2:
If X < 12 Then Goto S0
If X > 12 Then Goto S1
Eror = 1
S0:
H = 0
X = 0
Goto Vypocet
S1:
H = 1
X = 0
Goto Vypocet
'
D3:
Waitms 10
X = X + 1
If Dcf77 = 0 Then Goto D4
Goto D3
'
D4:
If X > 150 Then Goto M9
X = 0
Goto D1
'
M9:
'
If H1 > 2 Then Eror = 1
If H2 > 9 Then Eror = 1
If M1 > 6 Then Eror = 1
If M2 > 9 Then Eror = 1
If Me1 > 1 Then Eror = 1
If Me2 > 9 Then Eror = 1
If R1 > 1 Then Eror = 1
If R2 > 9 Then Eror = 1
'
If Eror = 1 Then Goto Nodispl
'
Locate 2 , 1
X = H1 + 48
Dh1 = X
Lcd Chr(x);
X = H2 + 48
Dh2 = X
Lcd Chr(x);
Lcd ":";
X = M1 + 48
Dm1 = X
Lcd Chr(x);
X = M2 + 48
Dm2 = X
Lcd Chr(x);
Lcd " ";
X = D1 + 48
Dd1 = X
Lcd Chr(x);
X = D2 + 48
Dd2 = X
Lcd Chr(x);
Lcd ".";
X = Me1 + 48
Dme1 = X
Lcd Chr(x);
X = Me2 + 48
Dme2 = X
Lcd Chr(x);
Lcd ".20";
X = R1 + 48
Dr1 = X
Lcd Chr(x);
X = R2 + 48
Dr2 = X
Lcd Chr(x)
'
Nd1:
Eror = 1
'
Nodispl:
M1 = 0 : M2 = 0 : H1 = 0 : H2 = 0 : D1 = 0 : D2 = 0
Me1 = 0 : Me2 = 0 : R1 = 0 : R2 = 0
X = 0 : C = 1 : Eror = 0
Goto D1
'
Vypocet:
If C = 21 Then
If H = 0 Then Eror = 1
End If
If C = 22 Then M2 = M2 + H
If C = 23 Then
V = H * 2
M2 = M2 + V
End If
If C = 24 Then
V = H * 4
M2 = M2 + V
End If
If C = 25 Then
V = H * 8
M2 = M2 + V
End If
If C = 26 Then M1 = H
If C = 27 Then
V = H * 2
M1 = M1 + V
End If
If C = 28 Then
V = H * 4
M1 = M1 + V
End If
If C = 30 Then H2 = H
If C = 31 Then
V = H * 2
H2 = H2 + V
End If
If C = 32 Then
V = H * 4
H2 = H2 + V
End If
If C = 33 Then
V = H * 8
H2 = H2 + V
End If
If C = 34 Then H1 = H
If C = 35 Then
V = H * 2
H1 = H1 + V
End If
If C = 37 Then D2 = H
If C = 38 Then
V = H * 2
D2 = D2 + V
End If
If C = 39 Then
V = H * 4
D2 = D2 + V
End If
If C = 40 Then
V = H * 8
D2 = D2 + V
End If
If C = 41 Then D1 = H
If C = 42 Then
V = H * 2
D1 = D1 + V
End If
If C = 46 Then Me2 = H
If C = 47 Then
V = H * 2
Me2 = Me2 + V
End If
If C = 48 Then
V = H * 4
Me2 = Me2 + V
End If
If C = 49 Then
V = H * 8
Me2 = Me2 + V
End If
If C = 50 Then Me1 = H
If C = 51 Then R2 = H
If C = 52 Then
V = H * 2
R2 = R2 + V
End If
If C = 53 Then
V = H * 4
R2 = R2 + V
End If
If C = 54 Then
V = H * 8
R2 = R2 + V
End If
If C = 55 Then R1 = H
If C = 56 Then
V = H * 2
R1 = R1 + V
End If
If C = 57 Then
V = H * 4
R1 = R1 + V
End If
If C = 58 Then
V = H * 8
R1 = R1 + V
End If
C = C + 1
Goto D3
'
End
tabela wygląda tak wiec cos tam mi świta
ale np:
...
If C = 58 Then
V = H * 8....
nie wiem o co chodzi
rozumie ze to: If C = 58 Then.. to odwołanie do nr.impulsu ale mnożenie dodawanie?? nie wiem.
Tab. 1. Sposób kodowania
informacji DCF
Numer
impulsu
(numer Znaczenie impulsu
sekundy)
0 Początek transmisji. Zawsze = 0.
1−14 Przerwa, bez znaczenia − wszystkie
zera.
15 0− antena normalna;
1− antena pomocnicza.
16 0−normalnie;
1− zapowiedz zmiany czasu
(przez godzinę przed zmianą).
17−18 (w kolejności bity 18,17)
10−czas zimowy; 01−czas letni.
19 0−normalnie; 1−zapowiedz
dodatkowej sekundy.
20 Start informacji czasowej.
Zawsze = 1.
21−24 (w kolejności bity 24,23,22,21)
jednostki minut w BCD.
25−27 (w kolejności bity 27,26,25)
dziesiątki minut w BCD.
28 bit parzystości dla bitów 21−27.
29−32 (w kolejności bity 32,31,30,29)
jednostki godzin w BCD.
33−34 (w kolejności bity 34,33)
dziesiątki godzin w BCD.
35 bit parzystości dla bitów 29−34.
36−39 (w kolejności bity 39,38,37,36)
jednostki dni miesiąca w BCD.
40−41 (w kolejności bity 41,40) dziesiątki
dni miesiąca w BCD.
42−44 (w kolejności bity 44,43,42)
dni tygodnia w BCD − 1=Pn; 7=Nd.
45−48 (w kolejności bity 48,47,46,45)
jednostki miesiąca w BCD.
49 dziesiątki miesiąca w BCD.
50−53 (w kolejności bity 53,52,51,50)
jednostki lat w BCD.
54−57 (w kolejności bity 57,56,55,54)
dziesiątki lat w BCD.
58 bit parzystości dla bitów 36−57.
59 brak impulsu.