Witam!
Pisze właśnie program do swojej wytrawiarki i podczas pierwszych testów kodu natrafiłem na bardzo dziwny problem. Pierwszy raz się z czymś takim spotykam. Mianowicie, kiedy dodam 12 lub 13 razy "1" do zmiennej S wyskakują na LCD jakieś "pierdoły" i procesor sam się resetuje. Nie mam pojęcia co się dzieje, może ktoś jest w stanie pomóc i powiedzieć co z tym fantem zrobić? Poniżej kod, którego nie mogę rozwinąć bo mam w/w problem.
PS. Proszę się nie czepiać że do odliczania czasu używam wait, ale tutaj w wytrawiarce nie potrzebuję dokładności co do sekundy.
Pozdrawiam i z góry dziękuję za pomoc
Maciek
Pisze właśnie program do swojej wytrawiarki i podczas pierwszych testów kodu natrafiłem na bardzo dziwny problem. Pierwszy raz się z czymś takim spotykam. Mianowicie, kiedy dodam 12 lub 13 razy "1" do zmiennej S wyskakują na LCD jakieś "pierdoły" i procesor sam się resetuje. Nie mam pojęcia co się dzieje, może ktoś jest w stanie pomóc i powiedzieć co z tym fantem zrobić? Poniżej kod, którego nie mogę rozwinąć bo mam w/w problem.
Code:
$crystal = 1000000
Declare Sub Glowny
Declare Sub Czas
Config Portc = Output
Dim Temperatura As Byte , Czas_min As Byte , T As Byte
Dim S As Byte
Dim Grzanie As Bit
Dim Bombelki As Bit
Deflcdchar 0 , 4 , 10 , 10 , 10 , 10 , 17 , 31 , 14 ' TERMOMETR
Deflcdchar 1 , 25 , 26 , 28 , 31 , 28 , 26 , 25 , 32 ' GRZANIE
Deflcdchar 2 , 32 , 24 , 24 , 3 , 3 , 24 , 27 , 3 ' BOMBELKI
Deflcdchar 3 , 14 , 10 , 14 , 32 , 32 , 32 , 32 , 32 'STOPIEN
Deflcdchar 4 , 32 , 4 , 4 , 4 , 32 , 32 , 32 , 32 'ZEGAR 1
Deflcdchar 5 , 32 , 32 , 32 , 7 , 32 , 32 , 32 , 32 'ZEGAR 2
Deflcdchar 6 , 32 , 32 , 32 , 4 , 4 , 4 , 32 , 32 'ZEGAR 3
Deflcdchar 7 , 32 , 32 , 32 , 28 , 32 , 32 , 32 , 32 'ZEGAR 4
Czas_min = 10 'DLA TESTÓW
Cursor Off
Do
Cls
Call Glowny
Loop
End
Sub Glowny:
Cls
Lcd Chr(0) ; " " ; Temperatura ; Chr(3) ; "C"
Locate 1 , 10
Lcd Chr(1)
If Grzanie = 0 Then
Lcd " COLD"
Else
Lcd " HEAT"
End If
Locate 2 , 1
Lcd Chr(2)
If Bombelki = 0 Then
Lcd " OFF"
Else
Lcd " ON"
End If
Locate 2 , 10
Select Case T:
Case 1 : Lcd Chr(4)
Case 2 : Lcd Chr(5)
Case 3 : Lcd Chr(6)
Case 4 : Lcd Chr(7)
End Select
Lcd " " ; Czas_min
Locate 2 , 14
Lcd "min"
Call Czas
Do
Loop
End
End Sub
Sub Czas:
Wait 1
Incr S
Incr T
If T = 5 Then
T = 1
End If
If S = 60 Then
Decr Czas_min
S = 0
End If
Call Glowny
End Sub
PS. Proszę się nie czepiać że do odliczania czasu używam wait, ale tutaj w wytrawiarce nie potrzebuję dokładności co do sekundy.
Pozdrawiam i z góry dziękuję za pomoc
Maciek