C8051F340 UART0/1 用法!
UART 的 RX 如果不用 interrupt 收資料,等於沒用。
要如何使用呢??有兩種方法。
1)Flag
volatile bit TI0_proxy = 1;
void UART0_ISR( void ) interrupt 4
{
if ( TI0 == 1 ) { // set the proxy when TI0 is set
TI0 = 0;
TI0_proxy = 1;
}
if ( RI0 == 1 ) {
RI0 = 0;
...
}
}
unsigned char putchar( unsigned char ch )
{
while ( TI0_proxy == 0 );
TI0_proxy = 0;
return (SBUF0 = ch);
}
真是簡單的方法!當然效能差。重點是簡單。
2)Ring Buffer
效能好。
相對麻煩。不過也沒那麼複雜。 Sample code 比較多。上網參考囉。
http://www.cygnal.org/ubb/Forum5/HTML/000497.html
http://www.8052.com/codelib
ring buffer連結內的內容全部都失效了
回覆刪除