だから私は Atmel 328p のプログラミングについて読んでいて、シリアル入力と出力をプログラムできるようにしたいのですが、完全に得られなかったものを見ました:
UBRR0H は、このアセンブリ コードでは UBRRnH と呼ばれます。
USART_Init: ; Set baud rate out UBRRnH, r17 out UBRRnL, r16 ; Enable receiver and transmitter ldi r16, (1<<RXENn)|(1<<TXENn) out UCSRnB,r16 ; Set frame format: 8data, 2stop bit ldi r16, (1<<USBSn)|(3<<UCSZn0) out UCSRnC,r16 ret
この C コードでは UBRR0H という名前のままです。
#define FOSC 1843200 // Clock Speed #define BAUD 9600 #define MYUBRR FOSC/16/BAUD-1 void main( void ) { ... USART_Init(MYUBRR) ... } void USART_Init( unsigned int ubrr) { /*Set baud rate */ UBRR0H = (unsigned char)(ubrr>>8); UBRR0L = (unsigned char)ubrr; Enable receiver and transmitter */ UCSR0B = (1<<RXEN0)|(1<<TXEN0); /* Set frame format: 8data, 2stop bit */ UCSR0C = (1<<USBS0)|(3<<UCSZ00); }
このコードは、CPU を製造している Atmel によるとまったく同じことを行うのに、なぜ 2 つの異なるものと呼べるのでしょうか?
ありがとう :)