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來確認是否有輸入,否則就會一直執行無窮迴圈,簡單的範例其實有很大的學問,待有興趣的人去 做深入的探討。


http://www.dev.idv.tw/mediawiki/index.php/%E5%A6%82%E4%BD%95%E6%A0%B9%E6%93%9A%E6%89%80%E9%9C%80%E7%9A%84Baud_rate%E8%A8%88%E7%AE%97%E5%87%BA%E6%89%80%E9%9C%80%E7%9A%84TH1%E7%9A%84%E5%80%BC

阿倫 發表在 痞客邦 PIXNET 留言(0) 人氣()