;Universal Serial Interface initialization
;Mode: Three Wire (SPI)
;Clock source: Reg. & Cnt.=Timer/Counter 0 Ovf.
;USI Counter Overflow Interrupt: Off
ldi temp1,low((1‹‹USIWM0)|(0‹‹USIWM1)|(1‹‹USICS0)|(0‹‹USICS1))
out USICR,temp1
;*** Основной цикл
main:
ldi temp1,low(0b10101010) ;загрузить байт
st -Y,temp0 ;пхнуть в стек
rcall send_SPI ;вызвать отправку байта по SPI
ld temp0,Y+ ;получить принятый по SPI байт
wdr ;"пнуть собаку"
rjmp main ;возврат в начало
;*** Конец основного цикла ***
send_SPI:
ld r31,Y+ ;получить байт из стека
out USIDR,r31 ;пихнуть полученный байт в USIDR
ldi r31,low(1‹‹USIOIF) ;
out USISR,r31 ;
ldi r31,low((1‹‹USIWM0)|(1‹‹USICS1)|(1‹‹USICLK)|(1‹‹USITC))
send_SPI_loop:
out USICR,r31 ;
sbis USISR,USIOIF ;
rjmp send_SPI_loop ;
in r31,USIDR ;
st -Y,r31 ;
ret ;выйти |