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

[Bascom] Przeniesienie kodu na inny język programowania

picassek 01 Cze 2010 18:04 1292 3
REKLAMA
  • #1 8142537
    picassek
    Poziom 10  
    Witam,
    jako zadanie dostałem opisanie krok po kroku otrzymanego kodu oraz przeniesienie kodu z języka Bascom na kod Asemblera i C. Jako, że programowanie nie jest moją mocną stroną, prosiłbym o pomoc (rady, sugestie najlepiej w sposób tzw. łopatologiczny jak można osiągnąć postawiony cel i jak wogóle się najlepiej za to zabrać) w przetransformowaniu kodu z języka Bascom na język Asemblera i C oraz opisaniu kodu bascoma. Jeżeli chodzi o bascoma to ten kod został zgrany z jakiegoś mikrokontrolera wykorzystującego czujniki ultradźwiękowe. W miejsce zgranego kodu zostaną wgrane stworzone przeze mnie kody w C i asemblerze. Jeżeli zadziała to wiadomo, projekt zaliczony, jeżeli nie to poprawianie do momentu, aż zadziała.
    
    $crystal = 8000000
    Config Portd = &B1100001
    Config Portb = &B11111111
    Portd.4 = 1
    Portd.3 = 1
    Portd.2 = 1
    Dim Dfd As Byte
    Set Portb.7
    Config Timer1 = Timer , Prescale = 8
    Stop Timer1
    Dim Odleglosc As Long
    Dim Predkosc As Long
    Dim Odl As Word
    Dim A As Byte
    Dim B As Byte
    Dim C As Byte
    Dim D As Byte
    Dim Maksymalna As Byte
    Dim Maxs As Byte
    Dim Liczba As Byte
    Dim Rodzajpomiaru As Bit
    Dim Czas_off As Word
    Dim Odlegla As Byte
    Dim Flaga As Bit
    Dim Dane As Word
    A = 2
    B = 50
    Set Portb.1
    Set Portb.3
    Readeeprom Predkosc , 5
    Cls
    Lcd "EdW"
    Wait 2
    If Predkosc < 1000 Then Predkosc = 3400
    Gosub Predkosci
    Czas_off = 19800
    Ala:
    Do
    Gosub Wylaczenie
    Reset Portb.4
    Reset Portb.5
    If Pind.4 = 0 Then
       Incr Maxs
       If Maxs > 3 Then Maxs = 0
       Waitms 100
    End If
    Waitms 100
    Cls
    If Maxs = 0 Then Lcd "1m?"
    If Maxs = 1 Then Lcd "3m?"
    If Maxs = 2 Then Lcd "10m?"
    If Maxs = 3 Then Lcd "predkosc"
     
    If Pind.2 = 0 Then Exit Do
    Loop
    Liczba = 10
    If Maxs = 2 Then Liczba = 200
    If Maxs = 0 Or Maxs = 3 Then Set Portb.4
    If Maxs = 1 Then Set Portb.3
    Do
    Gosub Wylaczenie
    If Pind.3 = 0 Then
      Goto Ala
    End If
     
    If Pind.2 = 0 Then
       Czas_off = 0
       Cls
          Start Timer1
          For C = 1 To Liczba
             Set Portd.0
             Waitus 12
             nop
             nop
             Reset Portd.0
             Waitus 10
             nop
             nop
          Next C
         Waitms 1
          If Maxs > 0 Then
             Waitms 2
          End If
          If Maxs = 2 Then
              Waitms 5
          End If
          A_1:
          If Pind.1 = 0 Then
             If Timer1 < 65000 Then
                Goto A_1
             End If
             Odlegla = 1
          End If
          Stop Timer1
          Timer1 = Timer1 - 18
          If Maxs < 3 Then
            Odleglosc = Timer1 * Predkosc
             Odleglosc = Odleglosc / 20000
             If Odlegla = 1 Then
                Lcd "blizej !"
                Odlegla = 0
             Else
                Lcd Odleglosc ; "mm" ; "   " ; Odl ; "m/s"
             End If
          Else
             Predkosc = 20000000 / Timer1
             Gosub Predkosci
             Lcd Odl ; "m/s?"
          End If
       Timer1 = 0
       Waitms 250
    End If
    If Maxs = 3 Then
       If Pind.4 = 0 Then
          Goto Ala
       End If
    End If
    Loop
    Predkosci:
    Odl = Predkosc / 10
    Return
    Wylaczenie:
    Waitms 1
    Incr Czas_off
    If Czas_off > 20000 Then
       Czas_off = 0
       Writeeeprom Predkosc , 5
       Set Portd.5
    End If
    Return
    


    Wszystkim zainteresowanym z góry dziękuję za odpowiedź i pozdrawiam
  • REKLAMA
  • #2 8143056
    McMonster
    Poziom 32  
    Na C nie ma zmiłuj, musisz ręcznie przepisać. Chyba, że istnieją dobre konwertery dla tego języka, w co szczerze wątpię. Natomiast z asemblerem powinno być prościej, najprawdopodobniej wystarczy skompilować kod, a następnie użyć deasemblera.
  • REKLAMA
  • #3 8143508
    janbernat
    Poziom 38  
    No, całego na zaliczenie nie zrobisz chyba.
    To Lcd to będzie trudne do przetłumaczenia.
    Na poczatek- w drugiej linijce masz 7bit- a nie wiadomo jaki to procesor.
    A reszta- ustawianie rejestrów.
  • #4 8143923
    ZbeeGin
    Poziom 39  
    janbernat napisał:
    Na poczatek- w drugiej linijce masz 7bit- a nie wiadomo jaki to procesor.

    Widząc to: Lcd "EdW", jestem przekonany, że to ATTiny2313 lub jego starszy brat 2313 classic.
    Biblioteka obsługi standardowego LCD 16x2 dla GCC-AVR też się jakaś znajdzie.
REKLAMA