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

[M644][WinAVR]Asembler i rejestry

28 Maj 2009 20:43 1573 4
  • #1 6587266
    Konto nie istnieje
    Konto nie istnieje  
  • #2 6588353
    psooya
    Poziom 38  
    Wg tego co przeczytałem w PDFie instrukcja SBI CBI działa na adresach od 0x00 do 0x1F. Twój rejestr SPCR jest już pod adresem 0x2C (0x4C). Spróbuj tak:
    ldi temp, (1<<SPE)
    out SPCR, temp ; gdzie temp to jakiś tam rejestr który masz wolny.

    Poczytaj strony 356 i 357 PDFa.
    Pozdrawiam
  • #3 6590802
    Konto nie istnieje
    Konto nie istnieje  
  • #4 6590940
    zumek
    Poziom 39  
    Żabek napisał:
    ... Czym i jak dokładnie zastąpić te sbi i sbis?

    W tym przypadku, możesz to zrobić tak:
    
    SPI_SEND:      ;<--
    ;    sbi SPCR,SPE        ;enable SPI
    ;-----------------------
         in   r16,SPCR
         ori  r16,(1<<SPE)
         out SPCR,r16
    ;-----------------------------------
        out SPDR,r24        ;load byte in SPI data register
    SPI_SEND_0:
    ;    sbis    SPSR,SPIF          ;<--
    ;------------------------------
         in r16,SPSR
         sbrs r16,SPIF
    ;------------------------------
        rjmp    SPI_SEND_0      ;transmitt byte to LCD
        in  r0,SPDR
        sbi PORTB,LCD_CS        ;deselect Display
        ret
    
  • #5 6591630
    Konto nie istnieje
    Konto nie istnieje  
REKLAMA