串口相關寄存器配置
與51單片機串口相關的寄存器有SBUF,SCON,PCON,以及與定時器1(T1)相關的寄存器。
SBUF:串口緩沖寄存器,物理上實際有兩個寄存器,地址重疊而已,一個用來發(fā)送,一個用來接受。通過讀或者寫不同操作,才操作不同寄存器,設計在一起是為了簡化操作。寫入SBUF寄存器的數(shù)據(jù)會通過TXD引腳發(fā)送出去,從RXD引腳的數(shù)據(jù)可以通過讀SBUF獲取。
SCON:串口配置寄存器。
SM0和SM1決定了串口的工作方式
10位UART是我們常用的模式,包括起始位,8個數(shù)據(jù)位(SBUF),一個停止位。11位UART多了一個數(shù)據(jù)位(TB8,發(fā)送數(shù)據(jù)的第八位;RB8,接受數(shù)據(jù)的第八位)。波特率可變是由于此時的定時器1 作為UART的時序信號,定時器1的溢出率決定了波特率,同時也受到PCON種的SMOD位的加倍影響。
SM2是多機通信控制位。只有用到了11位UART才會將SM2置1。
REN是接受使能,REN=1時,允許接收,REN=0時,禁止接收。
TI和RI分別是發(fā)送和接受中斷標志位,當完成一次發(fā)送或者接收會將相應的標志位硬件置1,必須要軟件清“0”。當設置了串口中斷,還會進入中斷函數(shù)。注意這兩者會進入同一個中斷函數(shù),注意判斷標志位來區(qū)別到底是放松中斷還是軟件中斷。
PCON:電源控制寄存器,其實只有最高位SMOD對串口有影響,SMOD=1,波特率加倍,SMOD=0,波特率不加倍。
T1相關寄存器的配置:使用可變波特率,T1一般用8位自動重裝載模式,最關鍵的是確定T1的自動重裝數(shù)RELOAD,步驟如下:
計算RELOAD(SMOD=0時)
a) 12T模式的計算公式:RELOAD=256-(int) (Fosc/Baud0/32/12+0.5)
b) 1T模式的計算公式:RELOAD=256-(int) (Fosc/Baud0/32+0.5)
式中: (int) (X+0.5)表示對X進行四舍五入
Fosc晶振頻率
Baud0標準波特率
計算用RELOAD產生的波特率
a) 12T Baud = Fosc/(256-RELOAD)/32/12
b) 1T Baud = Fosc/(256-RELOAD)/32
計算誤差
error=(Baud-Baud0)/Baud0*100%
如果絕對誤差>4.5% 要更換波特率頻率或更換晶振頻率,再重復1-4
上面的步驟來自于STC的官方手冊。上面提到的12T模式是大多數(shù)51單片機的工作模式,STC的后續(xù)單片機支持1T模式,速度會快12倍。
串口的使用
下圖展示了一些常用重裝值(RELOAD)配置
對于常用的11.0592Mhz晶體下,9600Baud配置的代碼封裝成C文件和H文件,方便調用
uart.h文件
#ifndef __UART_H
#define __UART_H
#include void Uart_Init(void); void Uart_SendData(unsigned char dat); void Uart_SendString(unsigned char *s); #endif uart.c文件 #include "uart.h" void Uart_Init(void) { SCON = 0x50; // SCON: 模式 1, 8位UART, 接收使能 TMOD |= 0x20; // TMOD: Timer1,模式2, 8位自動重裝 TH1 = 0xFD; // TH1: 重裝值 波特率:9600 晶振:11.0592MHz TR1 = 1; // TR1: Timer1打開 EA = 1; //打開總中斷 //ES = 1; //打開串口中斷 } void Uart_Isr() interrupt 4 using 1 { if (RI) { RI = 0; //清除接收標志位 } if (TI) { TI = 0; //清除發(fā)送標志位 } } void Uart_SendData(unsigned char dat) { SBUF = dat; while (!TI); TI=0; } void Uart_SendString(unsigned char *s) { while (*s) Uart_SendData(*s++); }
上一篇:基于8051實現(xiàn)的雙倒計時器(Version1.1)
下一篇:51單片機之最簡系統(tǒng)
推薦閱讀
史海拾趣
奧松電子在傳感器領域取得了顯著的突破。公司憑借其強大的研發(fā)實力和技術創(chuàng)新能力,成功開發(fā)出一系列具有自主知識產權的傳感器產品。這些傳感器產品不僅性能穩(wěn)定、測量精度高,而且具有廣泛的應用領域。在醫(yī)療、軌道交通、智能家電等多個領域,奧松電子的傳感器產品都得到了廣泛的應用和認可。這些產品的成功應用,不僅提升了公司的市場競爭力,也為公司的未來發(fā)展提供了更多的可能性。
這五個故事展示了廣州奧松電子股份有限公司在電子行業(yè)中發(fā)展起來的歷程和成就。通過不斷的技術創(chuàng)新和市場拓展,奧松電子已經成功成為了國內電子行業(yè)中的佼佼者。未來,隨著技術的不斷進步和市場需求的不斷變化,奧松電子將繼續(xù)保持其領先地位,為電子行業(yè)的發(fā)展做出更大的貢獻。
自1983年成立以來,GISMA Steckverbinder GmbH便專注于水下連接器的開發(fā)、設計和生產。作為一家由所有者直接管理的獨立公司,GISMA從一開始就確立了為海洋工業(yè)、船舶及海洋技術提供高質量電氣和光纖連接器的目標。這一明確的市場定位使得GISMA能夠迅速在競爭激烈的電子行業(yè)中脫穎而出,逐步建立起自己的市場地位。
EUCHNER公司一直是一個家族企業(yè),其企業(yè)精神和創(chuàng)新精神在家族成員中得以傳承。隨著公司的發(fā)展,EUCHNER逐漸擴張其業(yè)務范圍,不僅在歐洲市場建立了穩(wěn)固的地位,還開始進軍全球市場。公司通過不斷的技術創(chuàng)新和產品升級,逐漸在工控配件領域建立了良好的聲譽。
EUCHNER公司一直是一個家族企業(yè),其企業(yè)精神和創(chuàng)新精神在家族成員中得以傳承。隨著公司的發(fā)展,EUCHNER逐漸擴張其業(yè)務范圍,不僅在歐洲市場建立了穩(wěn)固的地位,還開始進軍全球市場。公司通過不斷的技術創(chuàng)新和產品升級,逐漸在工控配件領域建立了良好的聲譽。
面對日益嚴峻的環(huán)境問題和不斷變化的市場需求,F(xiàn)requency Sources公司積極響應國家環(huán)保政策和可持續(xù)發(fā)展戰(zhàn)略,致力于研發(fā)綠色、環(huán)保、高效的頻率源產品。同時,公司還繼續(xù)加大在技術創(chuàng)新方面的投入力度,不斷推出具有自主知識產權的新產品和新技術。這種可持續(xù)發(fā)展的理念和技術創(chuàng)新的精神使得公司在激烈的市場競爭中始終保持領先地位并實現(xiàn)了持續(xù)健康的發(fā)展。
需要注意的是,以上故事是基于電子行業(yè)的一般情況和頻率源技術的特點來構建的虛構故事,并不直接對應任何具體公司的實際情況。在實際應用中,請根據(jù)具體公司的歷史和發(fā)展情況進行調整和修改。
面對電子行業(yè)的高度周期性和市場波動,Vishay憑借其強大的技術實力、豐富的產品線和靈活的市場策略,始終保持在行業(yè)內的領先地位。公司通過持續(xù)的技術創(chuàng)新、成本優(yōu)化和“一站式”服務,贏得了廣大客戶的信賴和支持。即使在行業(yè)低迷時期,Vishay也能保持穩(wěn)定的增長和發(fā)展。如今,Vishay已成為全球最大的分立半導體和被動元件制造商之一,其產品和服務廣泛應用于工業(yè)、計算機、汽車、消費品、電信、軍事、航空和醫(yī)藥等多個領域。
好長時間沒上eeworld上問問題了。。 請教個問題:6410的平臺, 冷啟動后,時間沒有保存,一直是1980年,請問是什么原因。 硬件配置:系統(tǒng)斷電后,RTC時鐘正常,VDD_RTC引腳,有3V電壓?!? 查看全部問答∨ |
CPU :AMCC-440EPx 操作系統(tǒng) :VxWorks 6.2 開發(fā)環(huán)境 :WorkBench 2.4 當使用浮點運行時,結果不正確,在Config.h配置了以下內容: #undef INCLUDE_SW_FP #define INCLUDE_HW_FP #define INCLUDE_FLOATING_POINT AMCC-440EPx支持硬件浮點運 ...… 查看全部問答∨ |
最近調9b96的ptpd例程,發(fā)現(xiàn)歷程中的ptp協(xié)議沒寫全,時間同步是能夠實現(xiàn),但是同步精度太低了,并且把實驗板作為主時鐘比較困難,那位大神做過這個,有沒有更全的ptp協(xié)議,或者更好的建議,謝謝!… 查看全部問答∨ |
|
最近在搞波形采集存儲及顯示程序,原理基本可以搞懂。就是先采集模擬信號經AD轉換成數(shù)字信號,用flash進行存儲,再通過12864進行顯示,但是具體到程序就難以下手,請大俠給點幫助… 查看全部問答∨ |
|
引 言 軟件的可靠性一直是一個關鍵問題。任何使用軟件的人都可能會經歷計算機死機或程序跑飛的問題,這種情況在嵌入式系統(tǒng)中也同樣存在。由于單片機的抗干擾能力有限,在工業(yè)現(xiàn)場的儀器儀表中,常會由于電壓不穩(wěn)、電弧干擾等造成死機。在水表、 ...… 查看全部問答∨ |
請教各位大大:小弟的畢業(yè)設計想做個語音識別的模塊,如:能夠實現(xiàn)識別“前進,后退,向左,向右”這幾個特定詞。想把這個控制加到做的小車上去?,F(xiàn)在的疑問就是這個語音識別是否可實現(xiàn)?方案該如何設計,或者是我要去學哪些原理的東西?,F(xiàn)在個人的 ...… 查看全部問答∨ |