UCSRC寄存器結(jié)構(gòu):
UBRRH寄存器結(jié)構(gòu):
AVR單片機UART的UCSRC和UBRRH兩個寄存器是共用地址的,通過最高位的URSEL來選擇更新哪個數(shù)據(jù)。
比如寫UCSRC=0x86,那么0x86的最高位Bit7=1,所以這組數(shù)據(jù)會更新UCSRC的值
寫UBRRH=0x01,那么0x01的最高位Bit7=0,所以這組數(shù)據(jù)會更新UBRRH的值
無需專門更新URSEL的值。
如果寫成了UBRRH=0x81,那么就會去更新UCSRC的值,是自動識別的。
在網(wǎng)上看到有朋友問:為什么在程序中寫UBRRH的時候沒有先將URSEL置0?
而是直接設(shè)置
UBRRH=BAUD_H;
UBRRL=BAUD_L;
現(xiàn)在大家應(yīng)該明白了吧,只要寫入的BUAD_H的最高位為0,即BAUD_H&0x80==0,就會自動更新UBRRH的值,無需專門設(shè)置URSEL的值。