Witam i dla wszystkich zainteresowanych a widziałem że było wielu działający kod wymaga jeszcze paru poprawek. Dzięki za pomoc.
a poniżej kod:
Code:
$regfile = "m128def.dat"
$crystal = 16000000
$baud = 115200
Dim I As Word
Dim A As Byte
Dim B As Byte
Dim C As Byte
Dim D As Byte
Dim S As Long
Dim Rok As Byte
Dim Dzien_tygodnia As Byte
Dim Dzien As Byte
Dim Miesiac As Byte
Dim Godzina As Byte
Dim Minuta As Byte
Dim Sekunda As Byte
'Dim Oc As Word
'Dim Oa As Byte
'Dim Ob As Byte
Dim Oc As Word At &H600 '0-1 zmienna word
Dim Oa As Byte At &H600 Overlay '0 zmienna
Dim Ob As Byte At &H601 Overlay '1 zmienna
Dim Writecommand As Byte
Dim Writebyte As Byte
Dim Readcommand As Byte
Dim Readbyte As Byte
Const Po = "Poniedzialek" ' stałe do zegara
Const Wt = "wtorek" ' stałe do zegara
Const Sr = "Sroda" ' stałe do zegara
Const Cz = "Czwartek" ' stałe do zegara
Const Pi = "Piatek" ' stałe do zegara
Const So = "Sobota" ' stałe do zegara
Const Ni = "Niedziela" ' stałe do zegara
Const Sty = "Styczeń" ' stałe do zegara
Const Lut = "Luty" ' stałe do zegara
Const Mar = "Marzec" ' stałe do zegara
Const Kwi = "Kwiecień" ' stałe do zegara
Const Maj = "Maj" ' stałe do zegara
Const Cze = "Czerwiec" ' stałe do zegara
Const Lip = "Lipiec" ' stałe do zegara
Const Sie = "Sierpień" ' stałe do zegara
Const Wrz = "Wrzesienń" ' stałe do zegara
Const Paz = "Pazdziernik" ' stałe do zegara
Const Lis = "Listopad" ' stałe do zegara
Const Gru = "Grudzien" ' stałe do zegara
Config Portb.4 = Output
Config Portb.6 = Output
Serialclock Alias Portb.4
Serialin_out Alias Pinb.5 '
Ds1302 Alias Portb.6
Declare Sub 1302_czytam
Declare Sub 1302_zapisuj
Declare Sub Zegar_1302
Declare Sub Czytam_zegar
Zegar_1302 'tu jest zapis
Czytam_zegar
Waitms 1000
Czytam_zegar
Waitms 1000
Czytam_zegar
Waitms 1000
Czytam_zegar
Waitms 1000
Czytam_zegar
Waitms 1000
Czytam_zegar
Waitms 1000
Czytam_zegar
Waitms 1000
Czytam_zegar
Waitms 1000
Czytam_zegar
Waitms 1000
Czytam_zegar
Waitms 1000
Czytam_zegar
Waitms 1000
Czytam_zegar
Waitms 1000
Czytam_zegar
Waitms 1000
Czytam_zegar
Waitms 1000
Czytam_zegar
Waitms 1000
Czytam_zegar
Waitms 1000
Czytam_zegar
End 'end program
'*****************************************************************************
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'*****************************************************************************
Sub Zegar_1302
Print "Wpisuje bit odbezpieczający zapis Protect"
Writecommand = &H8E
Writebyte = &B00000000
1302_zapisuj
Waitus 5
Print "Wpisuje rok"
Writecommand = &H8C
Writebyte = &B00010000
1302_zapisuj
Print "Wpisuje dzień nazwa"
Writecommand = &H8A
Writebyte = &B00000100
1302_zapisuj
Print "Wpisuje miesiąc"
Writecommand = &H88
Writebyte = &B00000010
1302_zapisuj
Print "Wpisuje dzień"
Writecommand = &H86
Writebyte = &B00010000
1302_zapisuj
Print "Wpisuje godzina"
Writecommand = &H84
Writebyte = &B00100000
1302_zapisuj
Print "Wpisuje minuty"
Writecommand = &H82
Writebyte = &B00110101
1302_zapisuj
Print "Wpisuje sekundy"
Writecommand = &H80
Writebyte = &B00000000
1302_zapisuj
End Sub
'*****************************************************************************
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'*****************************************************************************
Sub Czytam_zegar
Readcommand = &H81
1302_czytam
Sekunda = Readbyte
'Print "sekunda=" ; Bcd(readbyte)
Readcommand = &H83
1302_czytam
Minuta = Readbyte
'Print "minuta=" ; Bcd(readbyte)
Readcommand = &H85
1302_czytam
Godzina = Readbyte
'Print "godzina=" ; Bcd(readbyte)
Readcommand = &H87
1302_czytam
Dzien = Readbyte
'Print "data=" ; Bcd(readbyte)
Readcommand = &H89
1302_czytam
Miesiac = Readbyte
'Print "miesiąc=" ; Bcd(readbyte)
Readcommand = &H8B
1302_czytam
Dzien_tygodnia = Readbyte
'Print "dzień tygodnia=" ; Bcd(readbyte)
Readcommand = &H8D
1302_czytam
Rok = Readbyte
'Print "rok=" ; Bcd(readbyte)
Print "20" ; Bcd(rok) ; "r.-" ;
If Miesiac = 1 Then
Print Sty;
Elseif Miesiac = 2 Then 'Bcd(miesiac)
Print Lut;
Elseif Miesiac = 3 Then
Print Mar;
Elseif Miesiac = 4 Then
Print Kwi;
Elseif Miesiac = 5 Then
Print Maj;
Elseif Miesiac = 6 Then
Print Cze
Elseif Miesiac = 7 Then
Print Lip;
Elseif Miesiac = 8 Then
Print Sie;
Elseif Miesiac = 9 Then
Print Wrz;
Elseif Miesiac = 10 Then
Print Paz;
Elseif Miesiac = 11 Then
Print Lis;
Elseif Miesiac = 12 Then
Print Gru;
End If
Print ; "-" ; Bcd(dzien) ; " " ; '
If Dzien_tygodnia = 1 Then
Print Po ; '
Elseif Dzien_tygodnia = 2 Then '
Print Wt ; '
Elseif Dzien_tygodnia = 3 Then '
Print Sr ;
Elseif Dzien_tygodnia = 4 Then '
Print Cz ;
Elseif Dzien_tygodnia = 5 Then '
Print Pi ;
Elseif Dzien_tygodnia = 6 Then ' Bcd(dzien_tygodnia)
Print So ;
Elseif Dzien_tygodnia = 7 Then '
Print Ni ; '
End If
Print ; " ";
Print Bcd(godzina) ; ":"; Bcd(minuta) ; ":" ; Bcd(sekunda)
'
End Sub
'*****************************************************************************
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'*****************************************************************************
'*****************************************************************************
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'*****************************************************************************
Sub 1302_czytam
' Przeznaczenie:
'Wsuwa ciąg bitów do zmiennej.
'Składnia:
'SHIFTIN pin_danych , pin_zegarowy , zmienna , opcje [, il_bitów , opóźnienie ]
'0 najpierw bit MSB jest wpisywany przy wystawieniu niskiego poziomu logicznego na końcówce zegarowej
'1 najpierw bit MSB jest wpisywany przy wystawieniu wysokiego poziomu logicznego na końcówce zegarowej
'2 najpierw bit LSB jest wpisywany przy wystawieniu niskiego poziomu logicznego na końcówce zegarowej
'3 najpierw bit LSB jest wpisywany przy wystawieniu wysokiego poziomu logicznego na końcówce zegarowej
'Gdy liczba określająca opcję zostanie powiększona o 4, wtedy sygnał zegarowy nie będzie generowany i lina zegarowa będzie pełnić rolę wejścia zewnętrznego sygnału zegarowego (tryb SLAVE).:
'4 najpierw bit MSB jest wpisywany przy niskim poziomie logicznym na końcówce zegarowej
'5 najpierw bit MSB jest wpisywany przy wysokim poziomie logicznym na końcówce zegarowej
'6 najpierw bit LSB jest wpisywany przy niskim poziomie logicznym na końcówce zegarowej
'7 najpierw bit LSB jest wpisywany przy wysokim poziomie logicznym na końcówce zegarowej
'Oa = &H81 '&H81
'Ob = &H00
'Oc = Oa + Ob
'Portb.6 = 1
'Print Hex(oc)
'Shiftin Pinb.5 , Portb.4 , Oc , 0 , 16 , 1000 'odczytuje 16 bitów
'Portb.6 = 0
'Print Hex(oc)
Config Portb.5 = Output
Serialin_ou Alias Portb.5
Serialclock = 1
Serialin_ou = 1
Ds1302 = 1
Reset Serialclock
Reset Ds1302
Waitus 5
Set Ds1302
Waitus 5 'tcc =4us, CE to clock setup time
Shiftout Serialin_ou , Serialclock , Readcommand , 3
Config Portb.5 = Input
Serialin Alias Pinb.5
Serialclock = 1
Serialin_out = 0
Ds1302 = 1
Shiftin Serialin , Serialclock , Readbyte , 2
Reset Ds1302
Rotate Readbyte , Left , 1
Waitus 5
End Sub
'*****************************************************************************
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'*****************************************************************************
Sub 1302_zapisuj
'Przeznaczenie:
'Wysuwa ciąg bitów pochodzący z określonej zmiennej.
'Składnia:
'SHIFTOUT pin_danych , pin_zegarowy , zmienna , opcje [, il_bitów , opóźnienie ]
'0 najpierw bit MSB jest podawany przy niskim poziomie logicznym na końcówce zegarowej
'1 najpierw bit MSB jest podawany przy wysokim poziomie logicznym na końcówce zegarowej
'2 najpierw bit LSB jest podawany przy niskim poziomie logicznym na końcówce zegarowej
'3 najpierw bit LSB jest podawany przy wysokim poziomie logicznym na końcówce zegarowej
'Oa = &H80 '&H80
'Ob = &H26
'Oc = Oa + Ob
'Portb.6 = 1
'Print Hex(oc)
'Shiftout Pinb.5 , Portb.4 , Oc , 2 , 16 , 1000 'nadanie 16 bitów
'Portb.6 = 0
'Print Hex(oc)
Config Portb.5 = Output
'Serialin_out Alias Portb.5
Serialclock = 1
Serialin_ou = 0
Ds1302 = 1
Reset Serialclock
Reset Ds1302
Waitus 5
Set Ds1302
Waitus 5 'tcc =4us, CE to clock setup time
Shiftout Serialin_ou , Serialclock , Writecommand , 3
Shiftout Serialin_ou , Serialclock , Writebyte , 3
Reset Serialclock
Waitus 5
Reset Ds1302
Waitus 5
End Sub
'*****************************************************************************
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'*****************************************************************************
Dodano po 2 [minuty]:
a tu odczyt
2010r.-Luty-10 Czwartek 21:33:22
2010r.-Luty-10 Czwartek 21:33:23
2010r.-Luty-10 Czwartek 21:33:24
2010r.-Luty-10 Czwartek 21:33:25
2010r.-Luty-10 Czwartek 21:33:26
2010r.-Luty-10 Czwartek 21:33:27
2010r.-Luty-10 Czwartek 21:33:28
2010r.-Luty-10 Czwartek 21:33:29
2010r.-Luty-10 Czwartek 21:33:30
2010r.-Luty-10 Czwartek 21:33:31
2010r.-Luty-10 Czwartek 21:33:32
2010r.-Luty-10 Czwartek 21:33:33
2010r.-Luty-10 Czwartek 21:33:34
2010r.-Luty-10 Czwartek 21:33:35
2010r.-Luty-10 Czwartek 21:33:36
2010r.-Luty-10 Czwartek 21:33:37
2010r.-Luty-10 Czwartek 21:33:38
Dodano po 2 [godziny] 7 [minuty]:
Witam ale dzisiaj jest jeszcze środa więc poprawiłem i ponowny odczyt:
2010r.-Luty-10 Środa 23:37:35
2010r.-Luty-10 Środa 23:37:36
2010r.-Luty-10 Środa 23:37:37
2010r.-Luty-10 Środa 23:37:38
2010r.-Luty-10 Środa 23:37:39
2010r.-Luty-10 Sroda 23:37:40
2010r.-Luty-10 Środa 23:37:41
2010r.-Luty-10 Środa 23:37:42
2010r.-Luty-10 Środa 23:37:43
2010r.-Luty-10 Środa 23:37:44
2010r.-Luty-10 Środa 23:37:45
2010r.-Luty-10 Środa 23:37:46
2010r.-Luty-10 Środa 23:37:47
2010r.-Luty-10 Środa 23:37:49
2010r.-Luty-10 Środa 23:37:50
2010r.-Luty-10 Środa 23:37:51
2010r.-Luty-10 Środa 23:37:52