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

[Mega16] [Assembler] [AVR Studio] błąd kompilacji

16 Paź 2010 20:03 1428 2
  • #1 8627728
    Konto nie istnieje
    Konto nie istnieje  
  • Pomocny post
    #2 8627950
    Andrzej__S
    Poziom 28  
    kazaaski napisał:

    
       sbi _SFR_IO_ADDR(TIFR), OCF1A
    



    Instrukcji sbi nie można używać w odniesieniu do rejestrów o adresie większym niż 32, zamiast tego należałoby w tym przypadku użyć:
    
       push r18                     ; opcjonalnie
       ldi r18, (1<<OCF1A)
       sts _SFR_MEM_ADDR(TIFR), r18
       pop r18                      ; opcjonalnie
    


    Odkładanie na stos nie powinno być konieczne, gdyż rejestr r18 zgodnie z avr-libc-user-manual może być dowolnie używany w podprocedurach assemblerowych, ale dla pewności można to zrobić.

    Dodano po 15 [minuty]:

    Można oczywiście użyć innego dowolnego rejestru (powyżej r15), na przykład użytego wcześniej w kodzie rejestru ZL.
  • #3 8628329
    Konto nie istnieje
    Konto nie istnieje  
REKLAMA