串列埠簡介和設定

串列埠一般簡稱RS232UART介面,通常用於單晶片的資料傳輸之用。RS232規格至少是和8051一樣古老,因為技術上簡單,容易使用,即使時至今日,在單晶片的領域仍很重要。

簡單的UART總共只須3個訊號,RXD負責讀取資料,TXD傳送資料,再加上地線(GND),因為UART資料傳送適用不同的傳輸速度,所以須要設定傳輸速度,資料的傳送端和接收端必須用同樣的傳輸速度,資料才得以正確的傳送,因此單晶片的串列埠必須經過設定,才能夠使用。

目前的工作平台11F04單晶片使用12M的石英振盪晶片,作者習慣的傳輸速度為38400N81,參考技術資料後,以組合語言寫出來的串列埠設定函式如下:

;*************************************************/

; UART initial for 38400 N81 XTAL=12M
;*************************************************/
_BRT = 0x9C
_AUXR = 0x8E

.GLOBL _Init_UART
_Init_UART:
     MOV    SCON,#0X50
     MOV    _BRT,#0xF6 ;Reload_Count_Low
     MOV    _AUXR,#0x17 ;for 38400 N81
     RET

這一類硬體的設定動作,主要是參考STC的技術資料,還有資料中的例題,寫一個串列埠設計程式很簡單,關鍵在於,要能確定這個設定程式是正確的?

串列埠的資料輸出

每個工程師都有自己喜歡的除錯手法,曾經有人作過統計,工程師平均花一分的時間寫程式,大概要花五分的時間除錯。此處作者先在電腦上執行一終端機程式(TERA COM),將終端機設在38400N81,用示波器去量電腦串列埠的輸出訊號,然後再單晶片端寫一個串列埠的輸出函式:

;*************************************************/

; put a character to UART port
; which is used putchar(unsigned char x);
;*************************************************/
.GLOBL _putchar
_putchar:
     CLR    TI
     MOV   SBUF,DPL
_putch1:
     JNB    TI,_putch1
     RET

接下來修改main.c的主程式,當main程式每改變一次LED狀態時,就送出一個A的文字到PC終端機上。主程式是如此修改的。

 #include "at89x52.h"

__sfr __at (0x91) P1M1;
__sfr __at (0x92) P1M0;
__sfr __at (0x90) LED;

 __code extern void Init_UART(void);

__code extern putchar(unsigned char i);

 //*********************************************************

// delay program
//*********************************************************
void DelaySub(unsigned int delayno)
{
    while (delayno!=0) delayno--;
}
//*********************************************************
// main program
//*********************************************************
void main (void)
{
     Init_UART();
     P1M1=0; P1M0=0xFF; /* P1 set as Output */
     while (1) {
          LED=1; DelaySub(0xFFFF); LED=0; DelaySub(0XFFFF); putchar('A');
    }
}

這個程式執行之後,會在終端機螢幕顯示一連串的A字。當然,作者當初寫這個小程式,也是經過了幾次修改,尤其是硬體設定,只要設定的參數不對,結果就不會正確

寫程式和從事一些專業的傳統工作,例如木工師傅,其實並沒有多大的不同,尚未熟悉剛入門時,總是笨手笨腳,等上了軌道,寫出來的程式水準就會慢慢提高。

 

文章標籤
全站熱搜
創作者介紹
創作者 單晶片玩人 的頭像
單晶片玩人

單晶片玩人(uPplayer)的部落格

單晶片玩人 發表在 痞客邦 留言(0) 人氣(202)