p.376
; スタックポインタの初期化マクロ .MACRO INITSTACK LDI R20, HIGH(RAMEND) OUT SPH, R20 LDI R20, LOW(RAMEND) OUT SPL, R20 .ENDMACRO INITSTACK ; レシーバーを有効化して(PD0端子をRXD機能にして)、 LDI R16, 1 << RXEN0 STS UCSR0B, R16 ; 8N1 (8ビットデータ、パリティなし、1ストップビット)にして、 LDI R16, 1 << UCSZ01 | 1 << UCSZ00 ; CSZはCharacter Size。 STS UCSR0C, R16 ; ボーレートを9600にして、 LDI R16, 51 ; == 8MHz/(16*9600)-1 STS UBRR0L, R16 ; BRはBaud Rate。 ; ポートBのIOを全部OUTにする(受信した1バイトをポートBに出力することにする)。 LDI R16, 0xFF OUT DDRB, R16 AGAIN: ; 1バイトを受信するまで(RXC0フラグがセットされるまで)とどまって、 LDS R20, UCSR0A SBRS R20, RXC0 ; SBRSはSkip if Bit in Register is Set。RXCはReceive Complete。 RJMP AGAIN ; 受信した1バイトをポートBに出力する。 LDS R17, UDR0 OUT PORTB, R17 ; を繰り返す。 RJMP AGAIN