;----- USART0 vars ---------------
.equ CLOCK = 16000000
.equ BAUD1 = 9600
.equ UBRRVAL = CLOCK/(BAUD1*16)-1
RESET:
ldi r16, high(RAMEND); Main program start
out SPH,r16 ; Set stack pointer to top of RAM
ldi r16, low(RAMEND)
out SPL,r16 ; Set stack pointer to top of RAM
; USART_Init ********************************************
; Set baud rate
ldi temp_a,high(UBRRVAL) ; @ 16 MHz
ldi temp_b,low(UBRRVAL) ;19200 bps
sts UBRR0H, temp_a
sts UBRR0L, temp_b
; Set frame format: 8data, 1stop bit
ldi temp_a,0b00000110
; Bit 3 – USBSn: Stop Bit Select
; Bit 2 – UCSZn1: Character Size
; Bit 1 – UCSZn0: Character Size
sts UCSR0C,temp_a
; Enable receiver and transmitter
ldi temp_a,0b10011000
; Bit 7 – RXCIEn: RX Complete Interrupt Enable
; Bit 6 – TXCIE: TX Complete Interrupt Enable
; Bit 4 – RXENn: Receiver Enable
; Bit 3 – TXENn: Transmitter Enable
out UCSR0B,temp_a
; Port E *************************************************************
;RXD0 = 0 ;
;TXD0 = 1 ;
ldi temp_a,0b11000010 ; "1" = OUTPUT
out DDRE,temp_a
ldi temp_a,0b11000011 ; "1" = Pull-up
out PORTE,temp_a ;
бла-бла-бла
ldi temp_a,0xAA
rcall USART0_TX
бла-бла-бла
USART0_TX:
; Wait for empty transmit buffer
sbis UCSR0A,UDRE0
rjmp USART0_TX
; Put data (r16) into buffer, sends the data
out UDR0,temp_a
ret
и чёт ничего внятного не приходит :(