24h購物| | PChome| 登入
2006-08-15 12:51:23| 人氣8,436| 回應0 | 上一篇

8051實做UART(RS232) 的控制

推薦 0 收藏 0 轉貼0 訂閱站台

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

台長: Cyanite
人氣(8,436) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 不分類 | 個人分類: 未分類 |
此分類下一篇:在8051上做I2C(IIC)EEPROM簡易控制
此分類上一篇:如何在ARM上透過一個簡單的方法清除Flash

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文