Witam
Chciałem dorobić termometr do samochodu z temp. zew. i wewn. i wyświetlaczem LCD 2x8 . Przerobiłem trochę kod z forum tylko że był on do atmegi8 i niestety nie chce się "zmieścić" do Attiny2313. Jak zoptymalizować kod programu co pozmieniać ? Co zajmuje najwięcej pamięci ?
Flash used 129 % Attiny2313
Chciałem dorobić termometr do samochodu z temp. zew. i wewn. i wyświetlaczem LCD 2x8 . Przerobiłem trochę kod z forum tylko że był on do atmegi8 i niestety nie chce się "zmieścić" do Attiny2313. Jak zoptymalizować kod programu co pozmieniać ? Co zajmuje najwięcej pamięci ?
Flash used 129 % Attiny2313
$regfile = "attiny2313.dat"
$crystal = 1000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.4 , Db6 = Portd.3 , Db7 = Portd.2 , E = Portd.1 , Rs = Portd.0
Config 1wire = Portb.0 'deklaracja portu na którym będą podpięte DS18b20
Dim I1 As Integer , Ss As String * 6
Dim I2 As Integer
Dim Znak As String * 1
Dim Znak2 As String * 1
Dim Dsid1(8) As Byte
Dim Dsid2(8) As Byte
Dim B As Byte
Dim W As Byte
Cursor Off
Cls
Lcd " Witaj" ;
Lowerline
Lcd " Michal"
Wait 2
Cls
Lcd "Hyundai" ;
Lowerline
Lcd " Coupe"
Wait 2
Cls
W = 1wirecount()
Lcd "Czujniki"
Waitms 500
Lowerline
Lcd " " ; W
Wait 1
Cls
Dsid1(1) = 1wsearchfirst()
Dsid2(1) = 1wsearchnext()
'*******************Odczyt numerów ID czujników temperatury*********************
If Dsid1(8) = Crc8(dsid1(1) , 7) Then
Locate 1 , 1
Wait 1
Locate 1 , 1
For B = 1 To 8
Next
End If
Wait 1
If Dsid2(8) = Crc8(dsid2(1) , 7) Then
Locate 2 , 1
Wait 1
Locate 2 , 1
For B = 1 To 8
Next
End If
Wait 1
Cls
'*******************koniec odczytu ID czujników temperatury*********************
Do
1wreset
1wwrite &H55
1wverify Dsid1(1) 'wysyłamy adres pierwszego czujnika
1wwrite &HBE
I1 = 1wread(2)
'---------------------------------
1wreset
1wwrite &H55
1wverify Dsid2(1) 'wysylam adres drugiego czujnika
1wwrite &HBE
I2 = 1wread(2)
'---------------------------------
1wreset
1wwrite &HCC
1wwrite &H44
Wait 1
If I1 < 0 Then
Znak = "-"
I1 = I1 * 10
I1 = I1 / 16
'If I1 > 0 Then Cls
Ss = Str(i1)
Ss = Format(ss , " 0.0")
Locate 1 , 1
Lcd "I: " ; Ss
Elseif I1 >= 0 Then
Znak = "+"
I1 = I1 * 10
I1 = I1 / 16
Ss = Str(i1)
Ss = Format(ss , " 0.0")
Locate 1 , 1
Lcd "I: " ; Znak ; Ss
End If
If I2 < 0 Then
Znak2 = "-"
I2 = I2 * 10
I2 = I2 / 16
Ss = Str(i2)
Ss = Format(ss , " 0.0")
Locate 2 , 1
Lcd "O: " ; Ss
Elseif I2 >= 0 Then
Znak2 = "+"
I2 = I2 * 10
I2 = I2 / 16
Ss = Str(i2)
Ss = Format(ss , " 0.0")
Locate 2 , 1
Lcd "O: " ; Znak2 ; Ss
End If
Loop