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

Zamiana kodu [bascom] na kod [asm]

darkonel 21 Wrz 2010 15:46 2543 4
  • #1 8534515
    darkonel
    Poziom 19  
    Witam serdecznie, pomóżcie bo nie znam bascoma. Potrzebuję zrealizować odbiór sygnału z pilota RC5 w asemblerze AVR a znalazłem jedynie kod w bascomie.
    
    Język Bascom AVR
    
    Do poprawnej pracy mikrokontrolera AVR, konieczna jest jego konfiguracja (przykład dla ATTiny2313). ustawiony zostanie typ mikrokontrolera, rezonator kwarcowy i funkcje wyprowadzeń. Skonfigurowane zostanie przerwanie zewnętrzne i obsługa Rc5:
    
    
    $regfile = "attiny2313.dat"
    $crystal = 12000000
     
    Config Portb = &B11111111 : Portb = &B11111111
    Config Portd = &B11111011 : Portd = &B11111111
     
    On Int0 Przzew0 Nosave
    Config Int0 = Low Level
    Enable Int0
     
    Config Rc5 = Pind.2
     
    Enable Interrupts
    Odbieranie kodów z pilota odbywa się w przerwaniu zewnętrznym:
    
    
    Przzew0:
      Disable Int0
      Enable Interrupts
      Getrc5(adres , Komenda)
      Komenda = Komenda And &B01111111
      Odebrano = 1
    Return
    a interpretacja wciśniętego klawisza i adresu pilota następuje w pętli głównej programu:
    
    
    Do
     
      If Odebrano = 1 Then
        If Adres = 0 Then                                       'pilot o adresie 0
     
          'co się ma dziać w zależności od komendy
     
        End If
        Odebrano = 0
        Enable Int0
      End If
     
     
      'inne instrukcje ....
     
    Loop
    End
    Poniżej znajduje się przykład programu odbierającego transmisję Rc5:
    
    
    '************* Konfiguracja uC *****************
    '***********************************************
    $regfile = "attiny2313.dat"
    $crystal = 12000000
     
    Config Portb = &B11111111 : Portb = &B11111111
    Config Portd = &B11111011 : Portd = &B11111111
     
    On Int0 Przzew0 Nosave
    Config Int0 = Low Level                                     'Falling
    Enable Int0
     
    Config Rc5 = Pind.2
    Dioda Alias Portd.6
     
    Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.1 , Rs = Portb.0       'mirley test board 2
    Config Lcd = 16 * 2
    Cls
    Cursor Off Noblink
     
    Enable Interrupts
    '********** Konfiguracja uC Koniec  ************
     
    '******************  Zmienne *******************
    '***********************************************
    Dim Komenda As Byte , Adres As Byte
    Dim Odebrano As Bit
    '*************  Zmienne Koniec  ****************
     
    '**************  Petla glowna ******************
    '***********************************************
    Do
     
      If Odebrano = 1 Then
        If Adres = 0 Then                                       'pilot o adresie 0
          Reset Dioda
     
          Cls
          Lcd Komenda
     
          Waitms 10
          Set Dioda
          Waitms 10
        End If
        Odebrano = 0
        Enable Int0
      End If
     
    Loop
    End
    '************ Petla glowna Koniec **************
     
    Przzew0:
      Disable Int0
      Enable Interrupts
      Getrc5(adres , Komenda)
      Komenda = Komenda And &B01111111
      Odebrano = 1
    Return
    
  • #2 8534898
    szelus
    Poziom 34  
    No i co z tym ma być? Do przetłumaczenia kodu Bascoma na asembler to chyba najlepiej użyć Bascoma właśnie...

    Bascoma nie używam, ale funkcję do odbioru RC5 to on ma wbudowaną niestety - ten kod powyżej nie przybliża Cię do rozwiązania problemu - cała magia schowana jest pod poleceniem Getrc5.

    Jak chcesz coś tłumaczyć, to lepiej poszukaj jakichś przykładów w C. W asemblerze to nie wiem, czy komuś chciałoby się pisać.
  • #3 8534949
    Pituś Bajtuś
    Poziom 28  
    Zbiór programów w asemblerze do odbioru RC5 : Link
  • #5 12341395
    darkonel
    Poziom 19  
    Dziękuję za pomoc, temat zamykam
REKLAMA