Back to posts Edit this post
Copy content

24 Nov 16:38

pawel slave
.nolist .include "m16def.inc" .list .listmac .device atmega16 .cseg .org 0x0000 jmp START ; .org 0x0014 jmp SPI_Complete .org 0x0016 jmp RX_Complete .org 0x0030 START: ; ustawienie stosu ldi r16, high(RAMEND) out SPH, r16 ldi r16, low(RAMEND) out SPL, r16 ldi r16, 0xFF out DDRA, r16 ldi r16, 3 out UBRRL, r16 ldi r16, 0 out UBRRH, r16 ldi r16, (1 << RXCIE) | (1 << TXEN) | (1 << RXEN) out UCSRB, r16 ldi r16, (1<<URSEL) | (0 << USBS) | (1<<UCSZ1) | (1<<UCSZ0) out UCSRC, r16 ldi r16, 1<<DDB6 ; out DDRB, r16 ldi r16, (1<<SPE) | (0<<MSTR) | (1<<SPIE) out SPCR, r16 sei MAIN: nop nop nop jmp MAIN .org 0x0100 DELAY_1s: ldi r16, 21 ldi r17, 75 ldi r18, 191 L1: dec r18 brne L1 dec r17 brne L1 dec r16 brne L1 nop ret USART_Transmit: sbis UCSRA,UDRE rjmp USART_Transmit ;ldi r16,0b00100001 out UDR,r16 ret USART_Receive: sbis UCSRA, RXC rjmp USART_Receive in r16, UDR ret ; przerwanie USART RX Complete – echo na UART RX_Complete: in r16, UDR rcall USART_Transmit reti SPI_SlaveReceive: ; Wait for reception complete sbis SPSR,SPIF rjmp SPI_SlaveReceive ; Read received data and return in r16,SPDR ret

No files