8051單晶片控制在做資料傳送最方便的介面就是UART,只需要兩條線就能跟其他週邊做通訊,甚至可以用來做使用者介面。
首先要先知道硬體的訊號必須怎麼處理,因為在任何微處理機的UART輸出通常都是最基本的數位訊號,但是要透過傳輸線傳送還得做訊號的轉換,因此比需還要加一顆訊號傳送IC來處理,請見下圖:
如上圖,將Port3的0跟1位元拉到MAX3232上面,然後才接到DB9的插座上,有一點要注意,一般3232的功能是可以用在VCC是3V以上的工作電壓,如果IC只是標232的話,很可能只能用於5V的工作電壓,這是因為製程不同的關係,建議採用CMOS製程的3232,通常可以用於3V~5V的工作電壓,適用性比較廣。
接著就要開始著手寫一個簡單的程式來做UART的收跟發了,採用KEIL C的環境開發,程式如下:
-----------------------
void Uart_init(void);
void main(void)
{
unsignedchar c;
Uart_init();
printf("# KEIL C Develop Platform #");
printf("# TargetChip : W78LE52 #");
printf("# Crystal Clock : 24M #");
while(1)
{
if(RI == 1) // Check UART input
{
c = getchar();
}
}
}
void Uart_init(void)
{
PCON ^= 0x80;
SCON = 0x50;
TMOD |= 0x20;
TH1 = 0xF3;
TL1 = 0xF3;
TR1 = 1;
TI = 1;
}
-----------------------
程式很簡單,不過在開發中尤其要注意的是UART要設定的模式,這邊採用9600的Baud rate,然後直接使用Keil C的函式庫,就能透過呼叫控制台輸出輸入的函式來做相關的控制。其中可以透過讀取RI來確認是否有輸入,否則就會一直執行無窮迴圈,簡單的範例其實有很大的學問,待有興趣的人去做深入的探討。
文章定位: