logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Attiny2313 Bascom 2xDs18b20 LCD 2x8 optymalizacja kodu

siwekyhy 24 Kwi 2012 11:31 2109 2
REKLAMA
  • #1 10827562
    siwekyhy
    Poziom 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


    
    
    
    $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
    
    
    
    
    
  • REKLAMA
  • #2 10827585
    mirekk36
    Poziom 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
  • #3 10828027
    Konto nie istnieje
    Konto nie istnieje  
REKLAMA