Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Attiny2313 Bascom 2xDs18b20 LCD 2x8 optymalizacja kodu

24 Apr 2012 11:31 1986 2
  • Level 14  
    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


    Code:



    $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




  • Level 42  
    Jak zoptymalizować kod ? No chyba najlepszym rozwiązaniem będzie jednak optymalny dobór procka niż mega gimnastyka w ATtiny2313. Zdecydowanie m8 będzie tu lepsza - niż walka w atiny2313
  • User removed account