Вот код который работает на асме:
Инициализация
Код
USART_init:
;***************** USART PortC0 (PC) ****************
ldi temp, 3<<USART_RXCINTLVL_gp
sts USARTC0_CTRLA, temp
ldi temp, 1<<USART_RXEN_bp | 1<<USART_TXEN_bp
sts USARTC0_CTRLB, temp
ldi temp, 3<<USART_CHSIZE_gp
sts USARTC0_CTRLC, temp
ldi temp, 51
;207 ; 9600
;51 ; 38400 BSEL = (OSC/16)/BAUD - 1
sts USARTC0_BAUDCTRLA, temp
ldi temp, 1<<PMIC_LOLVLEN_bp | 1<<PMIC_MEDLVLEN_bp | 1<<PMIC_HILVLEN_bp
sts PMIC_CTRL, temp
ret
Вывод
Код
TransmitPC:
push temp
sts USARTC0_DATA, temp
Wait_TransmitPC:
lds temp, USARTC0_STATUS
sbrs temp, 5 ; SPIF
rjmp Wait_TransmitPC
pop temp
ret
Хмега тактируется 32 МГц
Код
ldi temp,OSC_RC32MEN_bm ; switch to 32 MHZ
sts OSC_CTRL,temp
lds temp,OSC_STATUS
sbrs temp,1
rjmp PC-3
ldi temp,CCP_IOREG_gc
out CPU_CCP,temp
ldi temp,CLK_SCLKSEL_RC32M_gc
sts CLK_CTRL,temp
Настраиваем порт
Код
ldi temp, 0b00001000 ; - - - - TXD RXD - -
sts PORTC_DIR, temp ; I I I I O I I I