| 摘 要: 討論了基于80C196KC微處理器串行通訊口的硬件設(shè)計(jì)、波特率設(shè)置和軟件開(kāi)發(fā)的技術(shù)途徑,并簡(jiǎn)要介紹了串行通訊在某型雷達(dá)仿真平臺(tái)中的應(yīng)用,其主要性能和可靠性達(dá)到了系統(tǒng)的設(shè)計(jì)要求。 關(guān)鍵詞: 微處理器 串行通訊 波特率設(shè)置 Intel公司的MCS-96系列微處理器是目前性能最強(qiáng)、應(yīng)用最廣泛的16位微處理器。近年來(lái),在國(guó)內(nèi)各個(gè)領(lǐng)域中,特別是航天、航空等工業(yè)領(lǐng)域應(yīng)用相當(dāng)廣泛。80C196KC是lntel公司九十年代初期推出的性能較強(qiáng)的第三代CMOS芯片,其數(shù)據(jù)/地址線均為16位,使用MCS-96家族共享的指令系統(tǒng),除了8X96已包括的一些外設(shè)(如時(shí)鐘發(fā)生器、1/O端口、A/D轉(zhuǎn)換、PWM輸出、串行口、定時(shí)/計(jì)數(shù)器、監(jiān)視定時(shí)器WATCHDOG、高速輸入/輸出器等)外,還集成了先進(jìn)的外設(shè)事務(wù)服務(wù)器(PTS)和事件處理器陣列(EPA)。80C196KC在串行口功能上除了支持異步串行口之外,還增加了同步串行口,可以支持多種標(biāo)準(zhǔn)同步串行傳輸協(xié)議。 圖1是80C196KC串行通訊接口的具體結(jié)構(gòu)。該電路使用了符合RS232通信標(biāo)準(zhǔn)的驅(qū)動(dòng)電路MAX232芯片,進(jìn)行串行通訊。MAX232功耗低,集成度高,只用單-5V電源,芯片內(nèi)部有電泵,不需外接正負(fù)12V電源,具有兩個(gè)接收和發(fā)送的通道。整個(gè)接口電路簡(jiǎn)單,可靠性高。 1 80C196KC串行通信口工作原理 1.1 串行口的通信模式 80C196KC具有4種通信模式:三種異步模式,一種同步模式。 模式0:稱(chēng)為同步模式,常用于I/O擴(kuò)展,實(shí)現(xiàn)并-串輸入或者串-并輸出,它不能直接同時(shí)發(fā)送或接收數(shù)據(jù),需要外接雙向緩沖器。 模式1:稱(chēng)為標(biāo)準(zhǔn)異步通信模式,是最常用的模式。在這種模式下,串行通信的每幀數(shù)據(jù)是由10位組成的,即1位起始位,8位數(shù)據(jù)位,1位停止位。該模式下TXD用來(lái)發(fā)送數(shù)據(jù),RXD用來(lái)接收數(shù)據(jù),可用中斷和查詢(xún)兩種方式進(jìn)行控制:當(dāng)一個(gè)數(shù)據(jù)幀最后一個(gè)數(shù)據(jù)位發(fā)送完畢后,發(fā)送中斷的標(biāo)志TI置位;而一個(gè)數(shù)據(jù)幀的最后一個(gè)數(shù)據(jù)位被接收后,接收中斷的標(biāo)志RI置位。 模式2:稱(chēng)為異步第9位辯識(shí)通信模式。在這種模式下,每幀數(shù)據(jù)由11位構(gòu)成:1位起始位,8位數(shù)據(jù)位,1位可編程數(shù)據(jù)位,1位停止位。 模式3:稱(chēng)為帶校驗(yàn)位的通信模式。該模式的幀格式與模式2相同,只是在串行口控制寄存器(SP_CON)的PEN位被置位時(shí),可編程數(shù)據(jù)位作為奇偶校驗(yàn)位。模式2和模式3通;ハ嗯浜,用于多機(jī)通信。 1.2 串行口控制 80C196KC串行口的控制由串行口控制/狀態(tài)寄存器(SP-CON/SP-STAT)實(shí)現(xiàn),其定義見(jiàn)圖2。數(shù)據(jù)的發(fā)送或接收都通過(guò)訪問(wèn)串行口數(shù)據(jù)緩沖器SBUF,這里需要指出的是80C196KC發(fā)送寄存器SBUF(TR)和接收寄存器SBUF(PX)在物理上是分開(kāi)的兩個(gè)寄存器,因此串行口在異步模式下是全雙工工作的。由圖2 可見(jiàn),讀或?qū)懘锌诳刂疲癄顟B(tài)寄存器時(shí),都是訪問(wèn)其中的某些位:低5位只寫(xiě),屬于SP_CON;高3位只讀,屬于SP_STAT。當(dāng)發(fā)送或接收操作完成后,相應(yīng)的中斷標(biāo)志TI或者RI將置位,以通知CPU繼續(xù)發(fā)送或者準(zhǔn)備接收下一幀數(shù)據(jù),或做其它處理;讀SP_STAT后,TI和RI也被清除。 在所有異步模式下(模式1~3)下,向SBUF寫(xiě)入數(shù)據(jù)就會(huì)自動(dòng)啟動(dòng)一次發(fā)送過(guò)程。在發(fā)送停止位之前,保持在SBUF中的新數(shù)據(jù)應(yīng)保持不變。若接收允許位(REN)已經(jīng)被置1,則RXD腳上出現(xiàn)的下降沿就會(huì)啟動(dòng)一次接收過(guò)程。 在80C196KC中,TXD和P2.0是共用一個(gè)引腳的,對(duì)I/O控制器1的位5置1才能選通TXD功能。RXD和P2.1也是共用引腳,但不受IOC影響,而是受SP_CON的REN位控制。 1.3 串行通信波特率的計(jì)算 在80C196KC中波特率寄存器的內(nèi)容決定了串行口通信的波特率,向該寄存器寫(xiě)入數(shù)據(jù)時(shí)必須用連續(xù)寫(xiě)入兩個(gè)字節(jié)的方式,低位字節(jié)在前。寄存器的最高位用于選擇波特率發(fā)生器的輸入頻率源。當(dāng)選用晶振XTAL1為時(shí)鐘源時(shí),80C196KC內(nèi)部時(shí)鐘信號(hào)是由振蕩器二分頻后得到的,因此可以用以下公式計(jì)算波特率寄存器(BAUD_REG)的寫(xiě)入值: 同步模式0:BAUD_REG=XTAL1/(BAUD_RATE*2)-1 或者T2CLK/BAUD_RATE 異步模式1、2和3:BAUD_REG=XTAL1/(BAUD_RATE*16)-1 或者T2CLK/(BAUD_RATE*8) |