witam
jestem nowym w programowaniu bascomem
otóż robię zegarek z kalendarzem na atmega8
i z kwarcem zegarkowym. I jak ustawiam fusebity cksel 1001 bo takie są na małą częstotliwość i jak zmienię te fusebity to atmega8 mi się blokuje.
proszę o nie usuwanie tego tematu jak moje wszystkie inne
oto kod do procesora
jestem nowym w programowaniu bascomem
otóż robię zegarek z kalendarzem na atmega8
i z kwarcem zegarkowym. I jak ustawiam fusebity cksel 1001 bo takie są na małą częstotliwość i jak zmienię te fusebity to atmega8 mi się blokuje.
proszę o nie usuwanie tego tematu jak moje wszystkie inne
oto kod do procesora
$regfile = "m8def.DAT"
$crystal = 3276800
Config Lcd = 20 * 2
Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.4 , Rs = Portb.5
Dim S As Byte 'sekunda
Dim M As Byte 'minuta
Dim K As Byte 'pomocnicza
Dim G As Byte 'godzina
Dim P As Bit 'chyba pomocnicza :D
Dim R As Integer ' rok
Dim Mi As Byte 'miesiac
Dim D As Byte 'dzien
Dim Y As Byte 'yogi i bubu :D nie mam zielonego pojecia po co tego uzylem
Dim Dd As String * 3 , Md As String * 3 'dzien slownie
Dim Dmax As Byte 'dlugosc miesiaca
Dim Dl As Integer ' chyba pomocnicza
Dim A As Byte , B As Byte , C As Byte ' pomocnicze zmienne
Dim Z As Integer
Dim Dz As Integer
Dim Dy As Single
Dim Ddd As Byte
Config Pind.7 = Input
Config Pind.6 = Input
Portd.7 = 1
Portd.6 = 1
Zmien Alias Pind.7
Nastepny Alias Pind.6
Config Timer1 = Timer , Prescale = 256
Enable Interrupts
Enable Timer1
On Timer1 Mierzymy
Cursor Off
Start:
K = 0
G = 0
M = 0
S = 0
R = 2009
D = 26
Mi = 2
Cls
'-------------------------------
Lcd " Ustawienia "
Lowerline
Lcd " zegara "
Wait 2
'---------------------wpisywanie roku
Petla:
Cls
Lcd "Rok "
Lcd R
Waitms 500
Debounce Nastepny , 0 , Petla1
If Zmien = 0 Then
R = R + 1
End If
Goto Petla
'-----------------------------wpisywanie miesiaca
Petla1:
Cls
Lcd "Miesiac "
Lcd Mi
Waitms 500
Debounce Nastepny , 0 , Petla2
If Zmien = 0 Then
Mi = Mi + 1
If Mi > 12 Then
Mi = 1
End If
End If
Goto Petla1
'-------------------------- wpisywanie dni
Petla2:
Gosub Iledni
Cls
Lcd "Dzien "
Lcd D
Waitms 500
Debounce Nastepny , 0 , Petla3
If Zmien = 0 Then
D = D + 1
If D > Dmax Then
D = 1
End If
End If
Goto Petla2
'-------------------godzina
Petla3:
Cls
Lcd "Godzina "
Lcd G
Waitms 500
Debounce Nastepny , 0 , Petla4
If Zmien = 0 Then
G = G + 1
If G > 23 Then
G = 0
End If
End If
Goto Petla3
'-------------------minuty
Petla4:
Cls
Lcd "Minuty "
Lcd M
Waitms 500
Debounce Nastepny , 0 , Dalej
If Zmien = 0 Then
M = M + 1
If M > 59 Then
G = 0
End If
End If
Goto Petla4
Dalej:
Cls
Lcd " Koniec "
Lowerline
Lcd " ustawien "
Wait 3
Cls
Start Timer1
'------------------koniec ustawiania
Do
Upperline
Lcd " "
Gosub Jakidzien
If G < 10 Then
Lcd "0"
End If
Lcd G
Lcd ":"
If M < 10 Then
Lcd "0"
End If
Lcd M
Lcd ":"
If S < 10 Then
Lcd "0"
End If
Lcd S
Lcd " "
'+--------------------dolna linijka
Lowerline
Gosub Jakimiesiac
Lcd Dd
Lcd " "
If D < 10 Then
Lcd " "
End If
Lcd D
Lcd " "
Lcd Md
Lcd " "
Lcd R
Lcd " "
Gosub Jakirok
Waitms 400
Loop
'-------------------------------
Mierzymy:
Timer1 = 36735
Incr S
If S = 60 Then
S = 0
Incr M
If M = 60 Then
M = 0
Incr G
If G = 24 Then
S = 00
M = 00
G = 00
Incr D
Incr Ddd
If D > Dmax Then
D = 1
Incr Mi
Ddd = 0
If Mi > 12 Then
Mi = 1
Incr R
End If
End If
End If
End If
End If
Return
'---------------------------------
Iledni:
Gosub Jakirok
Select Case Mi
Case 1 : Dmax = 31
Case 3 : Dmax = 31
Case 5 : Dmax = 31
Case 7 : Dmax = 31
Case 8 : Dmax = 31
Case 10 : Dmax = 31
Case 12 : Dmax = 31
Case 2 : Dmax = 28 + Dl
Case Else : Dmax = 30
End Select
Return
'--------------------------------------nazwa miesiaca
Jakimiesiac:
Select Case Mi
Case 1 : Md = "Sty"
Case 2 : Md = "Lut"
Case 3 : Md = "Mar"
Case 4 : Md = "Kwi"
Case 5 : Md = "Maj"
Case 6 : Md = "Cze"
Case 7 : Md = "Lip"
Case 8 : Md = "Sie"
Case 9 : Md = "Wrz"
Case 10 : Md = "Paz"
Case 11 : Md = "Lis"
Case 12 : Md = "Gru"
End Select
Return
Jakirok:
A = R Mod 4
B = R Mod 100
C = R Mod 400
If A = 0 And B <> 0 Or C = 0 Then
Dl = 1
Else
Dl = 0
End If
Return
Jakidzien:
Dz = 0
Dy = 0
Z = 0
If Mi < 3 Then
Z = R - 1
Else
Z = R
End If
If Mi >= 3 Then
C = 2
Else
C = 0
End If
Dz = 23 * Mi
Dy = Dz / 9
Dz = Int(dy)
Dz = Dz + D
Dz = Dz + 4
Dz = Dz + R
Dy = Z / 4
Dz = Dz + Int(dy)
Dy = Z / 100
Dz = Dz - Int(dy)
Dy = Z / 400
Dz = Dz + Int(dy)
Dz = Dz - C
Z = Dz
Ddd = Z Mod 7
Select Case Ddd
Case 0 : Dd = "PON"
Case 1 : Dd = "WTO"
Case 2 : Dd = "SRO"
Case 3 : Dd = "CZW"
Case 4 : Dd = "Pia"
Case 5 : Dd = "SOB"
Case 6 : Dd = "NIE"
End Select
Return
End